How to bulk edit SKUs, barcodes and weights in Shopify
Updated September 2026
SKUs, barcodes, and weights live on the variant, not the product, and that one fact is behind most of the ways bulk editing them goes wrong. A spreadsheet row has to name a specific variant out of possibly dozens; a SKU is both the thing you are renaming and the way many tools find the row’s variant; and weights carry a unit that spreadsheet apps love to strip. Here is how to change these three fields across a catalog without writing them onto the wrong variants.
The identity problem: which variant is this row?
Everything else follows from row matching. In order of reliability:
- Variant ID. Unambiguous. Every SureEdit export includes it, and a row that carries it always wins.
- Option values. A Shopify-native export has no Variant ID column, but it has Option1 to Option3 name and value columns. Under a product found by ID or handle, the option values (Size S, Color Heather Grey) pick exactly one variant. Matching must be exact and case-sensitive: Shopify allows “Blue” and “blue” as two different variants, so a fuzzy matcher would write to the wrong one. When nothing matches but a case-insensitive candidate exists, a good importer suggests it and still refuses to write.
- SKU. Works only while SKUs are unique, which Shopify does not enforce. An ambiguous SKU match should fail the row with a reason, never pick a variant for you.
The subtle case is renaming SKUs from a Shopify-native export: the SKU cell cannot be both the row’s identity and the new value. When the option values identify the variant, the SKU cell is freed up to be a value, so a plain Handle + Option1 Value + Variant SKU file renames SKUs correctly. SureEdit applies exactly that precedence: Variant ID beats options, options beat the SKU cell, and the SKU cell is only written when something stronger identified the row.
SKU renames: the two traps
- Duplicates. Shopify accepts the same SKU on two variants without complaint. If your file writes one SKU to two rows, or writes a SKU another variant already carries, nothing fails today, but every future import that matches rows by SKU becomes ambiguous. SureEdit warns on all three duplicate cases (within the file, across pages of the file, and against the rest of the shop) while still applying the change, because the write itself is legal.
- Clearing. A SKU can be removed on purpose by typing
__CLEAR__in the cell. A blank cell never clears anything; blank always means no change, on every column.
Barcodes: verbatim or not at all
Barcodes are strings, not numbers. Spreadsheets that decide 0123456789012 is the number 123456789012 destroy the leading zero, and 13-digit EANs get rewritten into scientific notation. Format the barcode column as text before editing, and use an importer that writes the cell exactly as it stands rather than parsing it. SureEdit treats barcode cells verbatim, spaces included, and allows __CLEAR__ to remove one deliberately.
Weights: units, grams, and the clear that does not exist
- The unit travels in its own column.
Variant Weightpairs withVariant Weight Unit(g, kg, oz, lb); a blank unit means grams. The Matrixify-styleVariant Gramscolumn is grams by definition and accepted on import for compatibility. - Zero is equal across units. 0 g and 0 lb are the same weight; a round trip must not report a phantom change because the unit label differs on a zero.
- Weight cannot be cleared. Shopify’s API silently ignores attempts to remove a weight measurement. SureEdit refuses
__CLEAR__on weight cells with a message pointing at 0, instead of sending a write Shopify would ignore and then claiming success.
Find and replace across SKUs, without a file
For pattern renames (a vendor prefix change, a typo in a SKU family), the file is overhead. SureEdit’s wizard includes find and replace on SKUs with a case-sensitivity toggle: filter the products, preview every before and after SKU, run, and every write is verified and undoable, the same as find and replace on titles and descriptions.
The round trip that proves the tool
The simplest end-to-end test of any variant-field importer: export your catalog, change nothing, and import the same file back. The correct result is zero changes and zero errors. If the tool reports differences on a file it just produced, it is altering your data in flight (encodings, trimmed cells, reformatted numbers), and it will do the same to your real edits. SureEdit ships this exact round trip as an automated test, including a Shopify-native export with no Variant ID column, and the verified CSV import treats every blank cell as “no change” so a partial file is always safe.
Doing this with SureEdit
SureEdit bulk edits SKUs, barcodes, and weights from a CSV (SureEdit, Matrixify, or Shopify-native exports) or sets weights and renames SKUs straight from the wizard. Rows match by Variant ID, option values, or SKU in that order, ambiguity fails loudly, duplicates are warned about, every write is re-read from Shopify and verified, and one click undoes the whole operation. It also covers inventory counts per location through the same verified path.
WRITE → READ → MATCH ✓
Run this edit with proof, not hope
SureEdit renames SKUs, fixes barcodes, and corrects weights across the catalog with exact row matching, verified writes, and one-click undo. Free up to 50 products per edit.
Install free on ShopifyFAQ
Can I bulk edit SKUs in Shopify from a CSV?
Yes, but the file has to say which variant each row means. A row with a Variant ID is unambiguous. A Shopify-native export has no Variant ID column, so a safe importer matches the row by its option values (Size, Color and so on) under the product’s handle, exactly and case-sensitively, and only then treats the SKU cell as a new value to write.
Why does matching rows by SKU alone go wrong?
Because SKUs are not unique in Shopify. Two variants can carry the same SKU, and a rename breaks the link for the next import. A safe importer uses SKU as identity only when nothing better exists, reports ambiguous matches instead of picking one, and warns when a file writes the same SKU to two variants.
Can I clear a variant weight in bulk?
No. Shopify’s API silently ignores attempts to remove a weight measurement, so a tool that claims to clear weights is not doing what it says. Set the weight to 0 instead; SureEdit refuses the clear token on weight cells and points you at 0, rather than pretending.
Are bulk SKU and barcode changes undoable?
With SureEdit, yes. Every write records the exact previous value, the write is re-read from Shopify and verified, and one click restores the originals. If a value changed after your edit, undo keeps the newer value and reports it instead of overwriting.