# What are product variants (size, color, material)?

> What product variants are, how Shopify, Google and Merchant Center model them, and when a size or a color is a variant and not a separate product.

URL: https://clione.ai/glossary/product-variants/
Lang: en

A T-shirt sold in three colors and three sizes is a product with nine variants: nine distinct things that can sell out separately, carry different prices and have different codes. Here "variant" has nothing to do with the variants of an A/B test or the versions of a page: it is **each specific combination a customer puts in the cart**. It matters because the way you group them decides how your [product page](/glossary/product-page/) looks, how Google understands it and how it reaches every feed. If you split into separate products what are really variants, you end up with near-identical pages that compete with each other and split the reviews; if you group as variants what are really different products, you hide one behind another.

## How it works

Commerce platforms describe the same model with similar words. In Shopify, the product is the container for the shared information (title, description, vendor); options are the characteristics the customer chooses between, such as color or size, each with its values; and **variants are the items that get bought, one for each combination of values, like "Red / Small", each with its own price, inventory and barcode**.[^shopify-products] Since October 15, 2025, Shopify supports up to 2,048 variants per product, up from the historical limit of 100, and warns that apps that do not use its GraphQL product APIs may fail with products that go over 100.[^shopify-2048]

Each axis of variation is one of the [product attributes](/glossary/product-attributes/), but not the other way around: weight or composition describe all the variants the same way and do not create any new one. The number of variants is the product of the values on each axis: three colors times three sizes is nine.

**For Google, variants are grouped in a [ProductGroup](/glossary/productgroup/).** Its [structured data](/glossary/structured-data/) documentation describes three properties: `variesBy`, the aspects on which the variants in the group vary; `hasVariant`, each variant as a nested [Product](/glossary/product-schema/); and `productGroupID`, the group's identifier, which Google also calls the parent [SKU](/glossary/sku/). Google supports six values for `variesBy`: color, size, suggested age, suggested gender, material and pattern. And it sets one condition: **each variant needs a unique identifier in its markup**, for example with `sku` or `gtin`.[^google-variants] It allows two ways to build the store: a single page where all the variants are chosen without reloading, or a separate page for each variant.[^google-variants]

**In [Google Merchant Center](/glossary/google-merchant-center/), each variant is a product.** It is sent as a separate item, with its own identifier, and all the variants of one product share the same `item_group_id` value. The three-size, three-color T-shirt is nine submissions with the same group identifier, and Google recommends using the parent SKU as that value.[^gmc-item-group] Color is also required for any product sold in several colors.[^gmc-spec]

## Variant or standalone product

Merchant Center defines variants as similar products that differ only in details like color and size for clothing, or memory, screen size, processor or graphics card for electronics. And it gives two examples of what is not one: **a suit made of a jacket and trousers, or a set of bathroom accessories**. They are different items sold together, not the same item in another version.[^gmc-item-group]

Between those two extremes there is a gray area each catalog resolves: the same model in another capacity, a three-pack, a limited edition with a different print. The useful question is whether the person buying is comparing them as options of one thing or as different things.

## In a store

**Fictional example.** A store sells a basic cotton T-shirt in white, black and gray, sizes S, M and L. In Shopify it is one product with two options and nine variants; in Merchant Center, nine items with `item_group_id` "TEE-BASIC"; and in the page's markup, a ProductGroup like this one, trimmed to two variants:

```json
{
  "@context": "https://schema.org/",
  "@type": "ProductGroup",
  "name": "Basic cotton T-shirt",
  "productGroupID": "TEE-BASIC",
  "variesBy": ["https://schema.org/color", "https://schema.org/size"],
  "hasVariant": [
    {
      "@type": "Product",
      "sku": "TEE-BASIC-WHITE-M",
      "name": "Basic cotton T-shirt, white, M",
      "color": "White",
      "size": "M",
      "offers": {
        "@type": "Offer",
        "price": "19.90",
        "priceCurrency": "USD",
        "availability": "https://schema.org/InStock"
      }
    },
    {
      "@type": "Product",
      "sku": "TEE-BASIC-BLACK-L",
      "name": "Basic cotton T-shirt, black, L",
      "color": "Black",
      "size": "L",
      "offers": {
        "@type": "Offer",
        "price": "19.90",
        "priceCurrency": "USD",
        "availability": "https://schema.org/OutOfStock"
      }
    }
  ]
}
```

What you read in it: the group says what it varies on (`variesBy`), each variant carries its `sku` and its color and size values, and availability goes per variant. That the black in L is sold out says nothing about the white in M.


A bundle is not a variant. If you sell a single T-shirt and a three-pack, the pack is not "another size" of the T-shirt: Merchant Center leaves sets of items sold together out of variants.[^gmc-item-group]


## How to check it

1. **Open a product with variants in your store admin** and check that each variant has its own SKU and, if the manufacturer assigned one, its [GTIN](/glossary/gtin/). Google asks for a unique identifier per variant.[^google-variants]
2. **Look at the published page and pick another variant**: check whether the page's address changes and whether the [price and availability](/glossary/price-and-availability/) shown are those of that variant.
3. **Check the markup Google reads for its [rich results](/glossary/rich-results/)**: run the page through the [Rich Results Test](/glossary/rich-results-test/) and look for a ProductGroup with `variesBy` and one variant for each combination you sell.[^google-variants]
4. **In Merchant Center, filter by `item_group_id`**: all the variants of a product should share it, and the recommended value is the parent SKU.[^gmc-item-group]
5. **If a Shopify product goes over 100 variants**, check that the apps that read your catalog use the GraphQL product APIs.[^shopify-2048]

## Related concept: product attributes

An attribute describes; a variant is bought. Color is an attribute, and when a product is sold in several colors, that attribute becomes an axis of variation and each value gives rise to variants. The weight, composition or capacity of a backpack are attributes that do not create variants as long as they do not change from one version to another. If a fact changes from one variant to another, it is stored on the variant; if it does not, on the product. The [product attributes](/glossary/product-attributes/) page explains how they are stored and where they end up.

To keep going, [the catalog and entities reading path](/learn/catalog-and-entities/) puts the other terms in order, from the product page to the [PIM](/glossary/pim/) where they are managed.
