Short answer
GS1 GPC and UNSPSC are public product classification systems, each organized as a four-level hierarchy of eight-digit codes. Using one as the label hierarchy for product images avoids inventing a category set and helps align data from different suppliers. Neither describes how a product behaves when handled, so manipulation attributes must be specified separately.
The labeling problem this solves
Buyers of product images often receive labels in whatever scheme each supplier uses: one retailer's department tree, one distributor's catalog sections, one annotation vendor's ad hoc list. Merging them later means guessing whether "cleaning supplies" in one set matches "janitorial" in another. A team that invents its own label set faces the same issue the next time it adds a source.
Public classification systems offer a shared vocabulary. If every supplier maps its items to the same hierarchy, you can compare coverage, balance classes and build held-out splits by category. This page covers two widely used public systems and what they do not do. For the broader sourcing of product data see product catalog data for robot perception.
The two systems
GS1 describes the Global Product Classification as a rules-based, four-tier system for grouping products: Segment, Family, Class and Brick, with attributes and attribute values below the Brick. A Brick groups products identified by GTINs that serve a common purpose, are of similar form and material, and share the same category attributes. Codes are eight-digit non-negative integers, and only one brick can be assigned to a GTIN (GS1).
UNSPSC is described on its official site as an open, global, multi-sector standard for classifying products and services, free to browse and download. Its eight-digit codes span four levels, Segment, Family, Class and Commodity, with an optional two-digit business-function level. It was jointly developed by UNDP and Dun & Bradstreet in 1998; GS1 US managed it from May 2003 until 31 December 2024, after which management reverted to UNDP (UNDP).
| Feature | GS1 GPC | UNSPSC |
|---|---|---|
| Levels | Segment, Family, Class, Brick | Segment, Family, Class, Commodity |
| Code length | Eight digits | Eight digits, plus optional two-digit business function |
| Attributes below the lowest level | Yes: attributes and attribute values | Check current documentation |
| Origin | GS1 | UNDP and Dun & Bradstreet, 1998 |
| Scope | Products identified by GTINs | Products and services across sectors |
| Access terms | Confirm with GS1 | Described as free to browse and download |
The access row is a caution, not a conclusion. Terms for using, redistributing or embedding a taxonomy in a delivered dataset are the owner's to state. A buyer who plans to ship labels with code names and descriptions should confirm what each owner's terms permit. This is not legal advice.
Choosing between them
Use the one that most of your sources already carry. Retail and consumer goods data often sits closer to GTIN-based systems; procurement and industrial distributor data often carries purchasing categories. If your suppliers use different systems, ask for a mapping rather than forcing re-labeling from scratch. See industrial distributor catalogs for the procurement side.
A key distinction is granularity. A category node at Class or Brick level groups products of similar purpose; it does not distinguish two similar SKUs from different brands, which is an instance-level question; see instance vs category recognition. Choose the level at which your model needs to discriminate, and state it in the specification.
Illustrative label mapping
The table below is an Illustrative mapping sheet with synthetic placeholders. It shows the shape of a deliverable, not real codes.
| Supplier item ID | Supplier category text | Mapped GPC brick | Mapped UNSPSC commodity | Mapping basis |
|---|---|---|---|---|
| item_00041 | "Dish soap, 500 ml" (synthetic) | (8-digit brick code) | (8-digit commodity code) | Supplier-provided |
| item_00042 | "Glove, nitrile, box" (synthetic) | (8-digit brick code) | (8-digit commodity code) | Annotator-assigned, reviewed |
| item_00043 | "Fastener assortment" (synthetic) | (8-digit brick code) | (8-digit commodity code) | Unmapped, flagged |
Record who assigned each mapping and how it was reviewed. Because only one brick can be assigned to a GTIN, a product that spans categories, such as a kit, forces a choice that should be documented; see kits and multi-part products.
What a taxonomy gives you, and how to use it
A category hierarchy supports balanced sampling, per-category evaluation, and held-out splits by product family. It also gives annotators a fixed list instead of free text. Linking the hierarchy to a supplier's object attribute schema lets one record carry both "what it is" and "what it is like."
For long-tail coverage, count how many items fall in each node and look for empty or thin ones; the discussion in long-tail object coverage shows why that matters. If the supplier's master data is messy, run the checks in the product master data quality audit before relying on its categories.
What a taxonomy cannot support
A classification code says what a product is grouped as, not how it behaves in a hand. It carries no weight, fragility, deformability, grasp points, friction or opening mechanism. Two items in the same node can differ completely in how they must be picked. Physical properties need their own annotations (see physical property annotations), and manipulation needs demonstration data collected on a robot or through teleoperation; recognition labels alone do not train control. See object recognition data vs manipulation training data.
Taxonomies also lag the market. New product types may not fit existing nodes, categories are revised over time, and code assignments made by suppliers can be inconsistent. Mappings between systems are approximate, not one-to-one. Keep the original supplier category alongside the mapped one, and record the taxonomy version used.
Pitfalls to avoid
- Assigning categories at a level too coarse to separate objects your model must tell apart.
- Mixing taxonomy versions in one dataset without recording which applies.
- Treating a supplier's category as ground truth without sampling it.
- Forcing every item into a node when none fits, instead of marking it unmapped.
- Shipping code descriptions without checking what the owner's terms allow.
Questions to ask suppliers
- Which classification system, if any, does your catalog use, and which version?
- Who assigned the codes: the manufacturer, your team, or an annotator, and was it reviewed?
- At what level are items classified, and how often are items left unmapped?
- Can you provide a crosswalk to the other system, and how was it made?
- Are GTINs or other identifiers present so that mappings can be checked?
- How do you classify kits, bundles and multi-pack items?
- Do you retain your own category text alongside the standard code?
- Are there restrictions on delivering code names and descriptions inside a dataset?
Discuss your requirements
If you are specifying object labels for product data, describe the categories, taxonomy and permitted uses to SourceX. SourceX looks for US businesses that may hold suitable product data, checks the data and the supplier's licensing permissions, and coordinates the license and delivery. A request does not guarantee a match; SourceX reviews the requirement and follows up about potential sources. Start from the humanoid training data guide or the product and object data hub, and see the catalog page on product catalogs and descriptions.
Discuss your humanoid training-data requirements with SourceX
Sources
- GS1 Global Product Classification (GPC) — four-tier structure, eight-digit codes, brick definition, one brick per GTIN.
- United Nations Standard Products and Services Code (UNSPSC) — four-level structure, eight-digit codes, origin, free to browse and download, management history.