How to create SKU numbers that actually work
A SKU is the internal code that identifies each sellable variant in your catalog. Good ones make picking, reordering, and reporting fast. Bad ones cause overselling, failed imports, and hours of cleanup. Here's how to design a system that still works at a thousand products.
Use a fixed pattern of general → specific → number, keep it 8–16 characters, and never type SKUs by hand. For example: ALB-C-GO-0044 — brand ALB, chair, gold, item 44.
What a SKU is (and isn't)
A SKU is your internal identifier. Unlike a barcode (UPC/EAN/GTIN), which is assigned globally by GS1 and stays with the product across every retailer, a SKU is something you design for your own operation. That means you get to make it meaningful: a well-designed SKU tells you what the product is at a glance.
Every distinct variant needs its own SKU. A t-shirt in three colors and four sizes is twelve SKUs, not one.
The anatomy of a good SKU
Strong SKUs follow a consistent pattern, ordered from the most general grouping down to the specific item:
Anyone on the team can read that without a lookup table: brand ALB, chair, gold, item 44. That readability is the whole point — it's what makes a SKU better than a random number.
Build yours, step by step
We'll build a real one as we go, for a furniture brand called Alba.
Choose your segments
Start with the two or three attributes your team actually uses to identify products — not everything you know about them. For apparel that's usually type, color, and size; for furniture, type and finish.
Alba picks: brand → type → color. Fewer segments is better: every extra one makes the SKU longer and the codes harder to keep consistent.
Assign a code to every option
Two or three characters per value, written down once and reused everywhere. This master list is the single most important document in your SKU system.
Alba's codes: chair C, table T, lamp L · gold GO, black BK, walnut WN.
Add a padded sequence number
The sequence guarantees uniqueness even when two products share every attribute, and gives you a rough order of when items were added. Pad it to a fixed width so it sorts correctly everywhere: 0044 sorts properly, 44 lands between 439 and 440.
Pick the width for the catalog you might have, not the one you have today — four digits covers 9,999 products.
Generate instead of typing
Manual entry is where duplicates come from. Define the rule once and let it apply itself to every product — that way the hundredth SKU follows the same logic as the first, and collisions are caught before they reach your store.
Alba's result: ALB-C-GO-0044, ALB-T-WN-0045, ALB-L-BK-0046.
Rules that prevent most problems
- Keep it 8–16 characters. Long SKUs get truncated in reports and are painful to read on pick lists.
- Never start with a zero. Excel and Google Sheets silently strip leading zeros, corrupting your SKU column the first time someone opens the CSV.
- One pattern for everything. The moment two people invent codes independently ("BLU" vs "BL" for blue), you get duplicates and mismatches.
- No spaces or special characters. Letters, numbers, and one separator — a dash is the most widely compatible.
- Avoid ambiguous characters. O vs 0 and I vs 1 cause mispicks in the warehouse.
- Don't encode anything that changes. Price and supplier change; your SKU shouldn't.
Tip: if you're not sure how many digits to pad, four is the safe default. Going from 001 to 0001 later means renumbering your whole catalog.
Mistakes to avoid
Do
- Keep one master list of attribute codes
- Give every variant its own SKU
- Store the supplier's code in a separate field
- Retire SKUs permanently when products go away
Don't
- Reuse the SKU of a discontinued product — historical reports will merge the two forever
- Use the manufacturer's SKU as your own — switching suppliers would force a renumber
- Encode warehouse aisle, season, or margin — that's what fields are for
- Let two products share a code, even briefly
SKU vs UPC vs barcode
| SKU | UPC / EAN | |
|---|---|---|
| Assigned by | You | GS1 (global registry) |
| Format | Your pattern, alphanumeric | 12–13 digits, fixed |
| Scope | Internal to your business | Global, same across retailers |
| Readable meaning | Yes, by design | No |
You need both: the SKU for your own operations, the barcode for retail and marketplaces. Keep them in separate fields — never bury a barcode inside a SKU.
Generate your SKUs automatically
OtterLabel is a free SKU builder: define your pattern once, add products or generate whole variant sets, and export a clean CSV for Shopify, WooCommerce, or any spreadsheet.
Open the free SKU builderYour data stays in your browser.