Quick answer:
A stock keeping unit (SKU) is a unique alphanumeric code you create inside your own business and assign to a single product variant so it can be tracked through purchasing, stocking, selling and reordering. You own your SKUs outright: the code only needs to be unique within your catalog, and two different stores selling the exact same physical item will use two completely different codes for it.
That is what separates an SKU from a UPC, an EAN or a GTIN. Those numbers are issued through the global standards body GS1 and stay locked to the product everywhere it gets sold. Every distinct variant you stock needs its own SKU: a shirt carried in three sizes and two colors is six codes, not one.
Your SKU is the string your point of sale reads when it decides the store is low on navy large and fine on gray medium. Build the scheme once, before anything hits the shelf, and reordering, stock counts and sales reporting all line up.
Build it without a fixed logic and you spend seasons reconciling a catalog nobody can search. Here is how SKUs actually work, how they differ from the barcode numbers beside them, and how to design a scheme that still holds together at 2,000 products.
What is an SKU? The Basics
An SKU identifies a sellable variant, not a product line. That distinction alone prevents most of the mess.
“Cotton crew-neck t-shirt” is a product. “Cotton crew-neck t-shirt, navy, size large” is a variant, and a variant is the thing a customer picks up, a stockroom shelf holds, and a supplier ships. Only the variant can actually be counted.
So one shirt offered in three sizes and two colors demands six codes. Collapse the entire line into a single SKU and your reports stop answering the question that matters: which version is selling through and which is gathering dust.
The second thing to absorb is that the code belongs to you. No standards organization issues it, no manufacturer assigns it, and nobody audits it. Your SKU for a Carhartt tee has no relationship to the SKU the shop across town uses for the same garment.
That freedom is both the advantage and the hazard. Because nothing external enforces a format, the format has to be enforced by you, in writing, before the first product record goes live.
SKU vs UPC vs GTIN vs EAN vs ASIN
These five codes get tossed around as synonyms and they are not. The organizing principle is simple: an SKU is internal identity, and everything else on this list is external identity.
GTIN, short for Global Trade Item Number, is the umbrella standard run by GS1, the body that issues the company prefixes these numbers are built on. UPC and EAN are not competing systems to GTIN. They are two of its specific formats.
| Code | Who issues it | Format | Where it applies |
|---|---|---|---|
| SKU | The retailer, for itself | Alphanumeric, no fixed length | One business’s own catalog only |
| GTIN | GS1 | 8, 12, 13 or 14 digits | The umbrella standard; the formats below are versions of it |
| UPC | GS1, through the manufacturer | 12 digits, technically a GTIN-12 | Fixed to the product; the North American standard |
| EAN | GS1, through the manufacturer | 13 digits, technically a GTIN-13 | Fixed to the product; used outside North America, called JAN in Japan |
| ASIN | Amazon, automatically | 10 characters, nearly all starting B0 | Amazon’s catalog; shared by every seller of that item |
Two practical takeaways follow. First, you cannot alter a GTIN or UPC, so it is useless for organizing your own stockroom, which is precisely the job an SKU handles.
Second, an ASIN is shared across sellers and your SKU is not. Amazon issues one ASIN per product and every merchant listing that item sells against it, while your seller SKU stays private to your inventory system and must be mapped to the ASIN inside Seller Central. Book ASINs are the one exception worth remembering: they reuse the title’s 10-digit ISBN instead of the B0 prefix.
How to Design an SKU Scheme
Picture a boutique preparing to stock a Carhartt men’s crew-neck cotton t-shirt in navy and heather gray, sizes S through XL. The scheme needs to be set before the shipment arrives so the POS records and the stockroom shelf labels match.
Decide the attribute order first, moving from broadest to most specific: category, brand, style, color, size. Now build the navy large, one group at a time.
- TSH is the category, t-shirt. It goes first so sorting by SKU groups every t-shirt in the store together.
- CHT is the brand, Carhartt. Placing brand second puts every Carhartt t-shirt variant in one contiguous chunk inside any sorted report.
- CRW is the style, crew-neck. Style nests below brand so adding a v-neck next season slots in without disturbing anything above it.
- NVY is the color, navy. Not NAV, which could read as navy or natural depending on who is looking.
- L is the size. Size sits last because it changes most often within a single style.
The finished code is TSH-CHT-CRW-NVY-L: 13 letters plus four hyphens, 17 characters total. The heather gray medium becomes TSH-CHT-CRW-HGR-M.
Three rules governed the build, and each one exists because breaking it costs real money.
- Never start an SKU with a zero. Excel and Google Sheets read 012345 as a number and silently strip the leading zero, turning it into 12345 the moment someone exports a stock file. Starting every code with a letter removes the problem permanently.
- Avoid characters that look identical. A capital letter i reads as the digit 1, the letter O reads as the digit 0, and S often reads as 5. Someone scanning a shelf label in low light will misread these, and so will the handwritten count sheet.
- Never encode price or cost into the SKU. Price shifts with every markdown and supplier increase; the SKU does not. A code that carries a price becomes false at the first discount, and every report that parsed that field is then quietly wrong.
Only attributes fixed for the life of the item belong in the string: category, brand, style, color, size, material. Adding a third color next season is then one new three-letter code, not a catalog-wide rebuild.
How Long Should an SKU Be?
There is no industry standard for SKU length, only platform limits, and the two that matter pull in opposite directions.
Amazon rejects any seller SKU longer than 40 characters at listing time, which is a hard technical ceiling. Shopify enforces no maximum but recommends staying under 16 characters so codes remain reliable to scan and to search.
That recommendation catches the example above. TSH-CHT-CRW-NVY-L runs to 17 characters with its hyphens, one over. Dropping the separators yields TSHCHTCRWNVYL at 13 characters, comfortably inside the guidance and still readable because each group is a fixed three letters.
The trade-off is human readability. Hyphens make a code scannable by eye on a shelf label; removing them makes it shorter for the software. Pick one convention and apply it to every SKU in your catalog, because a mix of the two defeats searching and filtering.
Common SKU Mistakes That Cost Money
Most SKU problems are not typos. They are decisions that felt reasonable at the time and then compounded.
- Reusing a retired code. Assigning last year’s discontinued travel mug the same SKU as this year’s replacement merges two products into one inventory record. Historical sales for the old item now sit under the new one, and every trend line from that record is wrong.
- One SKU across several variants. The system reports 40 units in stock and cannot tell you that 38 of them are XS. Reorder automation then buys more of the size nobody is buying and lets the popular one run dry.
- Encoding price or cost. Covered above, and it is the mistake that survives longest because the code keeps looking valid long after it stops being accurate.
- Renaming SKUs after launch. Re-coding a live catalog severs the link between old sales history and current stock, so year-over-year comparisons for those items disappear. If a rename is unavoidable, keep a mapping table of old code to new code and never delete it.
- Letting each staff member invent their own format. Two people entering products two different ways creates a catalog where nothing filters cleanly, which slows cycle counting and makes stock reconciliation a manual job.
Managing SKUs in Your POS
The SKU lives on the product variant record inside your POS, and everything downstream reads it from there: barcode labels, stock counts, purchase orders, reorder point triggers and channel listings.
Square for Retail can generate SKUs automatically and bulk-fill missing ones across an existing catalog, then print SKU-linked barcode labels. Shopify POS applies its length and character guidance at the variant level and syncs the same SKU between online and in-store inventory.
Lightspeed Retail tracks stock per SKU across multiple locations and ties reorder automation to each code’s sales velocity. For catalogs that outgrow what a POS can handle, SkuVault is built around SKU-level tracking across several warehouses and sales channels simultaneously.
Whatever tool holds the master data, the SKU is only reliable if one system owns the code. Before linking a second channel, decide which platform is the source of truth and push codes outward from there. Feature sets and pricing differ sharply, so it pays to check inventory management software cost before committing.
SKU Count and When to Rationalize
There is no citable industry average for how many SKUs a small store should carry, and any page quoting one is guessing. The right count is one code per distinct variant you actually stock, which follows from your assortment rather than from a target.
What you should watch is the ratio of codes to actual sales. When a growing share of the catalog produces almost no movement, those variants are dead stock tying up cash, and cutting them lifts inventory turnover without touching the products that are working.
Rank every SKU by units sold over a full season before cutting anything, and check how each one is valued first, since the methods of inventory valuation you use change what a markdown actually costs.
Rationalizing is also the right moment to fix the scheme itself. If some codes were entered before a format existed, retire those variants properly and bring the survivors onto one consistent structure rather than patching around the old ones.
Related Terms
These entries cover the codes an SKU sits beside and the metrics it feeds: