Furniture sites have an SEO problem that most other shops do not have on the same scale. One sofa can come in dozens of fabrics, several sizes and a choice of legs, and each combination can produce its own URL. Category pages add filters for colour, material, style, seat count and price, and every combination of filters can produce another. A range of a few hundred products can turn into hundreds of thousands of crawlable URLs, most of them near-duplicates.

Google’s documentation covers almost every part of this. This guide applies it to furniture, with the decisions a retailer actually has to make. Google’s rules are linked to the page they come from; where something is my own advice rather than Google’s, I say so.

Fabric and colour variants

Give each variant its own URL, and never put it behind a

Google’s ecommerce URL guidance says each variant should be identifiable by its own URL. A path such as /sofas/marlow/sage-velvet or a parameter such as /sofas/marlow?fabric=sage-velvet both work. What does not work is a fragment: Google does not use the part after # for indexing, so /sofas/marlow#sage and /sofas/marlow#charcoal are the same page to Google.

This matters for configurators and swatch pickers, which often record the chosen fabric in a fragment. That is fine for sharing a build with a friend. It is not a way to get a fabric variant indexed.

Decide which variant URLs should be indexed

Google describes two set-ups in its product variants documentation:

  • Single page. One product page with a canonical URL for the whole group, usually with no variant selected. Each variant must be preselectable through its own URL, showing the right image, price and availability, and must be addable to the basket. Those URLs point their canonical at the main page.
  • Multiple pages. Each variant has its own page with its own canonical, and the full set of variants is repeated in the markup on every page.

In my view, the single-page set-up is the better fit for most furniture. A sofa in 40 fabrics is one product to the buyer, and 40 pages that differ only in a swatch name and an image are thin. Multiple pages make sense when a variant is a product in its own right with its own search demand: a leather version of a sofa that is otherwise sold in fabric, or a corner sofa sold alongside a straight one.

Whichever you choose, keep internal links, sitemaps and canonicals consistent. Google’s guidance is to use the same form of URL in all three.

Mark variants up with ProductGroup

Google supports variant markup through ProductGroup, with hasVariant listing each variant and variesBy stating what changes. The allowed variesBy values are colour, size, material, pattern, suggested age and suggested gender. There is no “fabric” value, so a fabric choice has to be expressed through one or more of colour, material and pattern. A sage velvet sofa varies by colour (sage) and material (velvet).

Each variant needs a unique identifier such as a SKU, and the group needs one too. If your platform generates a SKU per colourway but treats size as a line-item option, decide which of the two is the real variant before writing markup. My advice: markup that disagrees with what the page shows is worse than none.

Category pages and filters

A furniture category page might filter by colour, material, size, style, seat count, leg finish, price and delivery time. Google’s faceted navigation guide is direct about the cost: crawling filter combinations can use a lot of server resources and slow down the discovery of new pages.

Choose a few filter pages to rank, and block the rest

Some filter combinations deserve to rank because people search for them: “grey corner sofas”, “oak dining tables”, “velvet armchairs”. Build those as proper category pages with their own copy, a clean URL and links from your navigation.

For every other combination, Google’s preferred options are:

  • Block filter parameters in robots.txt, keeping product pages and one unfiltered listing crawlable. Google’s example disallows parameters such as color= and size= while allowing the unfiltered page.
  • Or keep filters in a URL fragment, which has no effect on crawling.

A canonical from the filtered page to the unfiltered one, or nofollow on filter links, can help. Google describes both as less effective in the long term.

If filter URLs stay crawlable

  • Use & to separate parameters. If filters are in the URL path, keep them in a consistent order.
  • Return a 404 for combinations with no results, for duplicate filters and for page numbers that do not exist. Google asks for the 404 at that URL, not a redirect to a general “not found” page.
  • Do not link internally to parameters that change per visit, such as session IDs or tracking codes.

Empty categories are covered too: Google’s URL guidance suggests marking them noindex, or returning a 404 if the category has been removed for good. That advice is about categories, not individual out-of-stock products.

Product data that earns shopping results

Google can show furniture in its shopping features with price, availability, delivery and returns, using merchant listing markup. One of Google’s examples on that page marks up a 3D model of a sofa. The rules that catch furniture sites out:

  • Price must be above zero. “Price on request” and quote-only items are not eligible for merchant listings. Product snippets have different requirements, covered on Google’s product snippet page.
  • Use an Offer, not an AggregateOffer, because merchant listings are for the seller of the product. Check this if your theme marks up a “from” price across sizes.
  • Only pages where the buyer can purchase qualify, and only product pages, not category pages.
  • Set delivery and returns once at the organisation level and override them per product only when needed. Furniture often needs overrides: two-person delivery for large items, or non-returnable made-to-order pieces.
  • Images must be crawlable, at least 50,000 pixels in total (width multiplied by height), and ideally supplied in 16:9, 4:3 and 1:1.

Google also recommends BreadcrumbList, Organization and, for showroom pages, LocalBusiness in its ecommerce structured data overview. For WooCommerce specifics, see my WooCommerce structured data guide.

Images and image search

Buyers search for furniture with their eyes. Google’s image SEO guidance has three rules that furniture sites often break:

  • Google does not index CSS background images. Galleries that build zoomable or lifestyle images as CSS backgrounds are invisible to image search. Use real <img> elements, with srcset for responsive sizes.
  • Alt text is the most important image metadata. “Marlow three-seat sofa in sage velvet, side view” helps a buyer using a screen reader and helps search. “Sofa image 4” helps neither.
  • Use descriptive file names, not IMG_0042.jpg, and reuse the same image URL across pages so it is cached.

A dimensions image (see selling furniture online) needs alt text that states the measurements. For a screen reader user it may be the only way to learn the size.

Configurators and SEO

A product configurator can create thousands of states. None of them should be indexed as separate pages. Keep the configurator on the canonical product page, preselect builds through parameters only where they match real variants, and use fragments or saved-build links for everything else. The product page itself still needs crawlable copy, images and markup that do not depend on the configurator’s JavaScript. I cover sharing and saving builds in save and share product configurations.

A checklist for a furniture SEO audit

  1. Count indexed URLs in Search Console against the number of real products and categories. A large gap usually means filters or variants.
  2. Check a product page’s canonical, with and without a variant selected.
  3. Check where the chosen fabric or colour is stored: path, parameter or fragment.
  4. Test product and variant markup in Google’s Rich Results Test, and compare it with what the page shows.
  5. Check robots.txt for filter parameters, and request an empty filter combination to see whether it returns a 404.
  6. Check that gallery images are <img> elements with useful alt text.
  7. Check delivery and returns markup for large and made-to-order items.

I ran five UK furniture product pages through Lighthouse on 23 October 2026. Its SEO checks flagged links without descriptive text, such as “more” or “click here”, on three pages, links that were not crawlable on two, and images without alt text on two, which check 6 would catch. One page passed every check. Treat a good Lighthouse SEO score as a floor: it tests crawlable links, alt text, meta tags and robots rules, but not variant URLs, canonicals, filters or product markup.

Speed is the other half of technical SEO for image-heavy furniture sites. It is covered in furniture website performance. If you would like this done for your site, see my ecommerce SEO and technical SEO audit services.

Sources

Google documentation, checked October 2026: