SKU Generator
Design the SKU format first, then generate every variant from it. Define your segments, watch the code build as you type, and export the matrix as a CSV.
Build Your SKU Scheme
Each segment is one attribute of the product. Enter one value per line, with a short code after a comma. Leave the code out and one is derived for you.
—
First SKU—
The matrix below is every combination of your segment values.
Everything runs in your browser. No sign-up, no server call, and nothing you type leaves the page. The CSV is written on your own machine.
A SKU Is Not a Barcode Number
Most sellers need two identifiers, and they do different jobs. Mixing them up surfaces at the worst moment, when a retailer rejects a listing.
| Identifier | Who issues it | Where it is used | Format | Changing it |
|---|---|---|---|---|
| SKU | You. No registry, no application. | Internal: warehouse, 3PL, listings, reports. | Alphanumeric, any structure you choose. | Yours to change, at your own cost. |
| GTIN (UPC, EAN) | GS1, which describes the GTIN as issued by GS1. | External: retailers, marketplaces, scanners. | Fixed numeric lengths: GTIN-8, 12, 13, 14. | Tied to the product, not renumbered for convenience. |
| Barcode symbol | Printed by you from a number you hold. | The stripes on the label, not the identity. | GS1 notes the GTIN is the number under the lines. | Regenerate any time; the number stays put. |
GS1 describes a GS1 GTIN as a unique, global, verifiable product identifier issued by GS1, and the number found under a barcode's black and white lines. GTIN-12 is commonly called a UPC and GTIN-13 an EAN. Source: GS1 Global Office support article, checked 14 August 2026.
What this means in practice
You invent your SKU today, free, with this page. A GTIN comes from GS1, a separate commercial process with its own timeline.
Keep both against the item, in two fields. A marketplace asking for a product identifier usually wants the GTIN; your 3PL wants the SKU.
Only Encode What Will Never Change
A SKU is a permanent name for a physical thing. Every attribute you encode promises to hold for the life of the item. These are the ones people regret.
| Do not encode | Why it breaks | Where it belongs instead |
|---|---|---|
| Price or cost | Prices move with promotions, currency and freight. The SKU outlives all three. | The product record, where a change is one edit. |
| Supplier name | You dual-source or switch vendor. The physical item did not change. | A field on the purchase order and item master. |
| Stock quantity or bin | Both change hourly, so the SKU is wrong within a day. | The warehouse system. A SKU should never move. |
| Launch year or season | Fine for fashion, harmful for a staple you still sell in four years. | Only where the season defines a genuinely retired product. |
| Customer or channel | One unit on two marketplaces becomes two SKUs and splits your stock view. | One SKU per physical unit, mapped to each listing. |
Three tests catch most of it. Would a change make it a different item? Could a picker name the product from the code? Does the scheme hold at ten times the size?
The Characters That Cause Real Mispicks
Ambiguous glyphs on a thermal label at the end of a night shift produce wrong picks, and wrong picks produce returns. The generator flags each of these.
| Characters | What goes wrong | What to do instead |
|---|---|---|
| O and 0 | A picker at 2am reads the letter O as a zero and picks the wrong bin. | Ban the letter O. Olive becomes KHA, Locad becomes LCD. |
| I, 1 and l | Three glyphs that collapse into one line on a thermal label. | Ban the letter I, and uppercase everything so l cannot appear. |
| Spaces | Break URL parameters and get trimmed silently on import. | Use a hyphen or underscore, which Shopify names as useful separators. |
| Slash, comma, quote, hash | A comma splits a CSV field. A slash breaks a file path. | Restrict to A-Z, 0-9 and one separator. Shopify advises against symbols. |
| Lowercase mixed with uppercase | Case-sensitive systems read lcd-tee-blk and LCD-TEE-BLK as two items. | Pick one case and enforce it at creation, not at upload. |
Shopify advises avoiding a format where 0 and 1 can be confused with O and I, advises against special characters, symbols and spaces, and names dashes and underscores as useful separators. Source: Shopify Help Center, "Using SKUs to manage your inventory", checked 14 August 2026.
Why Your SKUs Lose Their Leading Zeros
You export a clean file. Someone opens it in Excel, saves it, and every SKU starting with a zero is now shorter. Nothing warned anybody, and the file sent to the 3PL is wrong.
What Microsoft documents
Microsoft states that Excel automatically removes leading zeros, and converts large numbers to scientific notation, like 1.23E+15, in order to allow formulas and math operations to work on them.
That is the whole cause. A SKU of 00412 looks numeric, so it becomes 412. The damage happens on open, before anyone types a thing.
| Fix | How | Caveat |
|---|---|---|
| Import the column as text | Use Get & Transform (Power Query) and set the column type to text before loading. | Microsoft documents this for converting columns to text on import. |
| Turn off the automatic conversion | Newer Excel versions expose an Automatic Data Conversions setting for leading zeros. | Microsoft lists it among the default behaviours you can change. |
| Apply a custom number format | Select the cells and enter a format code such as 000-00-0000. | Microsoft warns it will not restore zeros already removed. |
| Prefix with an apostrophe | Type an apostrophe before the value and Excel treats it as text. | Microsoft gives this for long numbers. One cell at a time. |
Source: Microsoft Support, "Keeping leading zeros and large numbers", checked 14 August 2026. The behaviour affects any column that looks numeric, which is why an all-digit scheme carries a risk an alphanumeric one does not.
Habits that prevent it entirely
- Start every SKU with a letter. A code that begins with a letter is never read as a number.
- Never double-click a SKU export. Import it, and set the column type to text first.
Order Segments From Most Stable to Least
Segment order decides how your catalogue sorts, and a sorted export is how buyers and stocktakers read inventory. Put what changes least on the left.
| Position | Segment | How stable | Why it sits here |
|---|---|---|---|
| 1 | Brand or business unit | Changes almost never | Groups everything you own at the top of a sort. |
| 2 | Category or product family | Changes rarely | Every tee sits together in a sorted export, which is how planners read one. |
| 3 | Style or model | Fixed once launched | Separates one product from the next. The natural parent SKU boundary. |
| 4 | Colour or variant | Fixed per variant | The first variable axis. Groups all sizes of one colour together. |
| 5 | Size or weight | Fixed per variant | The finest split. Put it here and a size run reads down the column. |
| 6 | Sequence number | Assigned once | Guarantees uniqueness. Never reused, even after an item retires. |
The size-run problem
Sizes sort alphabetically as L, M, S, XL, XS. That is useless at a stocktake, where you count a run from smallest to largest.
Two fixes work. Use numeric size codes such as 01 to 06, or keep letter codes and sort by a separate size-order column carried alongside the SKU.
What Different Catalogues Actually Encode
There is no universal format. The right segments depend on which axis your catalogue varies along. Three shapes, and what each deliberately left out.
| Business | Segments | Example | Why these segments | What they left out |
|---|---|---|---|---|
| Fashion brand | Brand / Category / Style / Colour / Size | LCD-TEE-CREW-BLK-M | Variants explode on two axes at once, so both belong in the code. Colour then size is how a run is counted at stocktake. | No season code. Carry-forward staples would look discontinued every January. |
| Skincare brand | Brand / Range / Product / Size / Formulation | AUR-HYD-SER-30ML-FRA | Volume is the primary variant, and the fragrance-free version is a different item with its own paperwork and shelf life. | No colour segment. It would be dead characters on every label. |
| Consumables brand | Category / Product / Pack size / Unit count | SNK-BBQ-150G-12 | A 12-pack and a 24-pack are separate stock, separate cartons and separate freight. Pack configuration is the axis that matters. | No brand prefix on a single-brand catalogue. It buys nothing. |
The pattern across all three: encode the axis along which you hold separate stock, and nothing else. Two things in different bins, counted separately, need different SKUs.
An Apparel Seller: 3 Categories, 5 Colours, 6 Sizes
A US apparel brand launches its first range, fulfilled from a Texas warehouse across the US. These fields are loaded into the generator above by default.
Brand
1 value
Locad, coded LCD rather than LOC because the letter O is banned here. Room for a second label later.
Category
3 values
T-Shirt (TEE), Hoodie (HDE), Shorts (SHT). Three letters leave headroom for the next twenty categories.
Colour
5 values
BLK, WHT, NVY, KHA, SND. No letter O or I anywhere in the scheme.
Size
6 values
XS to XXL. Letter codes because that is what the label prints, plus a sequence number.
One brand times three categories times five colours times six sizes is 90 variants, each 17 to 19 characters, inside a 20-character limit. A slice of the generated matrix:
| Row | Category | Colour | Size | SKU |
|---|---|---|---|---|
| 1 | T-Shirt | Black | Extra Small | LCD-TEE-BLK-XS-001 |
| 2 | T-Shirt | Black | Small | LCD-TEE-BLK-S-002 |
| 3 | T-Shirt | Black | Medium | LCD-TEE-BLK-M-003 |
| 6 | T-Shirt | Black | Double Extra Large | LCD-TEE-BLK-XXL-006 |
| 7 | T-Shirt | White | Extra Small | LCD-TEE-WHT-XS-007 |
| 31 | Hoodie | Black | Extra Small | LCD-HDE-BLK-XS-031 |
| 46 | Hoodie | Navy | Large | LCD-HDE-NVY-L-046 |
| 61 | Shorts | Black | Extra Small | LCD-SHT-BLK-XS-061 |
| 89 | Shorts | Sand | Extra Large | LCD-SHT-SND-XL-089 |
| 90 | Shorts | Sand | Double Extra Large | LCD-SHT-SND-XXL-090 |
Rows 1 to 6 are one colour in every size, exactly the block a stocktaker counts. Row 31 starts the hoodies and row 61 the shorts, so a sorted export groups the catalogue as a buyer thinks about it.
Parent SKUs, Child SKUs and How Long to Go
Marketplaces group variants under a parent listing, and your warehouse counts stock against the children. Getting the boundary right early saves a relisting later.
Parent SKU
The style, without the variant segments. In the example above that is LCD-TEE-CREW.
It groups listings, images and reporting. Nothing is ever picked against it.
Child SKU
The full code including colour and size. This is the sellable unit that holds stock.
Every child must be unique across the whole catalogue, not just within its parent.
Where to cut
The parent ends where the first genuinely variable segment begins, which is usually colour.
Build children by prefix, so stripping the tail always returns a valid parent.
How long is too long
Length limits exist across marketplaces, 3PL systems and accounting software, and they vary. Check the documentation for every system your SKUs enter and design to the tightest.
One published example: Shopify recommends keeping SKUs as short as possible, such as no more than 16 characters. Treat that as one data point, not a universal rule.
What Breaks When You Renumber a Live Catalogue
Changing a SKU is not an edit to one field. The old code sits in records you no longer control, several of which cannot be updated at all.
Everything holding the old code
- Historical orders and invoices, which keep the code they were raised with.
- Open purchase orders your supplier has already accepted against the old code.
- Barcode and pick labels already printed, and cartons already sealed in a warehouse.
- Marketplace listings, where changing a SKU can reset ranking or break the variant grouping.
- Your 3PL's master data, which needs the change loaded before the first mismatched receipt.
If you have to do it anyway
Keep a permanent mapping of old code to new code and never delete it. Reports spanning the cutover depend on it for years.
Migrate one category at a time, run both codes in parallel through a full replenishment cycle, and never reuse a retired SKU.
The cheaper option is usually to leave the existing catalogue alone and apply the new scheme to everything you launch from now on.
From SKU Scheme to Stocked Shelf
A SKU is the first entry in an item master. These tools cover the labels, barcodes and replenishment numbers that attach to it.
Barcode Generator
Turn the SKUs you generated into scannable Code 128 labels for bins, cartons and pick faces.
GS1 Barcode Generator
For the external identifier: build GS1 barcodes from a GTIN you hold, with check digit handling.
Reorder Point Calculator
Set the trigger level for each new SKU so replenishment starts before the shelf runs empty.
Size the buffer behind each code with the safety stock calculator, or browse the free tools hub. When the catalogue is ready to move, see how Locad handles warehousing and storage and multi-market fulfilment.
SKU Questions
A Clean Catalogue Is Easier to Fulfil
Once the SKUs are set, the next question is where the stock sits. Talk to Locad about warehousing and fulfilment for your stock.