What we check

26 rules in this build: 7 file-level, 9 record-level, 6 variant-level and 4 resource-level. Each one names the official Shopify documentation it comes from. Rules are pure functions over your file: same file in, same result out. The image-reachability check from the specification is not included — it would have to fetch every image URL, and that would send data off your machine.

RuleScopeSeverityWhat it catches
FILE_NOT_UTF8fileblockerA file that is not UTF-8 and cannot be converted losslessly.
FILE_UTF8_BOMfilewarningA byte-order mark before the first column name.
FILE_LINE_ENDINGfilewarningCRLF or mixed line endings; exports are normalised to LF.
FILE_UNCLOSED_QUOTEfileblockerA quote that never closes — everything after it is unparsable.
ROW_COLUMN_COUNT_MISMATCHrowblockerA row whose field count differs from the header.
FILE_MISSING_HEADERfileblockerNo Title or URL handle column.
FILE_EMPTY_ROWSfileinfoRuns of blank lines.
SHOPIFY_HANDLE_SPACErowblockerSpaces in URL handle.
SHOPIFY_HANDLE_ILLEGALrowblockerUppercase letters, underscores or slashes in a handle.
SHOPIFY_HANDLE_DUPLICATErowblockerThe same handle on rows with different titles.
SHOPIFY_TITLE_EMPTYrowblockerA new product with no title.
SHOPIFY_HANDLE_MISSING_ON_UPDATErowblockerAn update row without a handle.
SHOPIFY_PRICE_CURRENCYrowblocker$19.99, 19,99 €, USD 19 — price must be a bare number.
SHOPIFY_PRICE_EMPTYrowwarningEmpty price (Shopify defaults it to 0.00).
SHOPIFY_PRICE_LT_COMPARE_ATrowwarningCompare-at price lower than price.
SHOPIFY_PUBLISHED_BOOLrowwarningPublished is not TRUE, FALSE or empty.
SHOPIFY_OPTION_NAME_MISSINGvariantblockerAn option value without an option name.
SHOPIFY_OPTION_COMBO_DUPLICATEvariantblockerTwo rows with the same handle and the same option combination.
SHOPIFY_SKU_DUPLICATEvariantwarningOne SKU on more than one variant.
SHOPIFY_SKU_EMPTYvariantinfoA variant without a SKU while its siblings have one.
SHOPIFY_VARIANT_ID_RISKvariantblockerAn option value that a clean-up would change, on a variant that already has an ID.
SHOPIFY_VARIANT_LIMIT_DAILYfileinfoMore than 10,000 new variants in one file.
SHOPIFY_IMAGE_HTTProwwarningImage Src over http:// — the scheme is switched to https.
SHOPIFY_TAGS_UNQUOTEDrowblockerA tag list whose commas were not quoted, so the row is shifted.
SHOPIFY_BARCODE_OVERFLOWrowwarningMore than 20 barcodes on one variant.
SHOPIFY_WEIGHT_UNITrowwarningA weight unit outside g / kg / lb / oz.

Open the fixer