SKU Generator (Free) – Shopify, WooCommerce & Excel
Build variant SKUs in this tab from a prefix, a short product name, color and size, and a padded number. Paste a list or drop a Shopify product CSV. Blank Variant SKU cells are filled. Existing SKUs stay put. Nothing is uploaded.
Before you import, run the file through the free Shopify CSV validator. Handles and option columns still have to be right. Shopify does not match products by SKU.
SKU pattern
Bulk list or CSV
One product per line. Put options after a vertical bar or a tab: Classic Cotton Tee | Black | Medium. Lines with no bar are name only. A sequential number makes each row unique; turn it off, or paste SKUs you already use, to see duplicate highlighting.
Generated SKUs
| Row | Name | Options | SKU | Status |
|---|
Shopify download: if you uploaded a Shopify product CSV, you get that file back with only blank Variant SKU cells filled, quoted the usual way, UTF-8. Any other list downloads as Handle, Title, option values, and Variant SKU. Generic download is name, options, sku. A leading BOM is included so Excel opens UTF-8.
How the code is built
- Order is prefix, product-name abbreviation, each option abbreviation, then the sequence.
- Colors and sizes use a short code when the whole value matches: Black → BLK, White → WHT, Navy → NVY, Grey → GRY, Small → S, Medium → M, Large → L, Extra Large → XL, 2XL → 2XL, One Size → OS.
- Other names drop small words (the, and, for, with, of) and take the first letters, up to the length you set. One long word is cut to that length. Accented letters are folded to ASCII (Café → CAFE).
- Padding writes 1 as 001 when the width is 3. Numbers longer than the width are not cut.
- Duplicates ignore letter case. Auto-dedupe appends the separator and 2, 3, 4… until the code is free. Existing SKUs in the file are never replaced, even when they collide with each other.
- On a Shopify export, Title on later variant rows is inherited from the first row of that Handle. An extra image row with an empty title, empty option values, and an empty price is left without a SKU.
SKU best practices
What makes a good product SKU?
Keep it short and stable: letters, numbers, and a single separator. Identify the product and the variant (color, size), not the price, a sale name, or a date. Use ASCII characters so the code survives Excel, barcodes, and imports. Once a SKU is on an order, a label, or a shelf, do not reuse it for a different item.
How should color, size, and other options appear in a SKU?
Give every variant its own SKU. Put option values in their own fields (Option1 Value, Option2 Value, or columns after the product name) so Black becomes BLK and Extra Large becomes XL, instead of burying them in the title. A shirt in three sizes needs three SKUs.
Will this overwrite SKUs I already assigned?
No. On a Shopify product CSV the page finds Handle or URL handle, Title, Option1 Value, Option2 Value, and Variant SKU (or SKU). It fills Variant SKU only when the cell is blank and leaves any existing SKU as it was typed. Extra image rows with no title, no option values, and no price are left blank so an import does not create a fake variant.
How are duplicate SKUs handled?
Codes are compared without regard to letter case, against SKUs already in the file, against any list you paste, and against codes generated earlier in the same run. Collisions are highlighted. With auto-dedupe on, a numeric suffix is added until the code is free. Turn auto-dedupe off to inspect collisions without changing them. Shopify will import duplicate SKUs, but inventory tools often update the wrong variant. WooCommerce search can return two products. Unique is the safer default.
How do I use the generated SKUs in Shopify?
Export your products to CSV, upload that file here, and download the Shopify CSV. Blank Variant SKU cells are filled and every other column is preserved, with normal CSV quoting and UTF-8. Import it from Shopify admin. Shopify matches products by Handle (URL handle), not by SKU, so do not delete the handle or the option columns. Check the file with the free Shopify CSV validator before you import.
How do I add these SKUs in WooCommerce?
On a simple product, open the product, go to Inventory, and paste the SKU. For a variable product, set a SKU on the parent if you want one, then open each variation and set that variation's own SKU. To update in bulk, use Products, Export, put the codes in the SKU column, and import the CSV. WooCommerce does not require SKUs, but stock sync and most plugins match on them.
How do I use this with Excel?
Paste a product list here or upload a CSV. In Excel, use File, Save As, CSV UTF-8 (Comma delimited) before uploading. A .xlsx workbook is not read. Download the generic CSV (name, options, sku) and open it with Data, From Text/CSV, encoding UTF-8, delimiter comma. Format the SKU column as Text before you paste values into an existing sheet so Excel does not turn MAR-10 into a date or a long number into scientific notation.
Does the spreadsheet leave my browser?
No. The generator runs entirely in this tab. There is no upload, no account, and no request that sends your file. Download the CSV when you are done. Closing the tab discards the list.
Which separator and letter case should I pick?
A hyphen is the usual choice and is safe in Shopify and WooCommerce. An underscore also works. No separator makes a shorter code that is harder to read. Uppercase keeps barcodes and search consistent. Turn it off only if the prefix must keep the case you typed. Avoid spaces, slashes, and characters that Excel or a barcode font will change.
How are the abbreviations chosen?
A fixed list covers common colors and sizes: Black is BLK, White is WHT, Navy is NVY, Small is S, Extra Large is XL, and similar codes. Any other phrase uses the first letters of the significant words, up to the length you set. Stop words such as the and for are skipped. The live preview shows the exact code before you generate the list. Lengthen the name or option setting if two products collapse to the same letters, and keep auto-dedupe on.
Need the file cleaned for you?
If the catalog is past a SKU fill — broken handles, missing option columns, a supplier sheet that is not a Shopify CSV — catalog.csv maps it to an import-ready product file. File-only, no store login. Free 2-row test, then you pay only after it imports.
Hire a Shopify CSV cleanup