Category page SEO is the work of making a store’s category (or collection) pages rank for broad shopping terms like “running shoes” or “linen bedding”. In short: give each category one head term, write a title and H1 around it, add a little copy that helps buyers choose, link categories in a clean hierarchy, and control which filter and sort URLs Google can crawl. Product pages chase specific models. Category pages chase the broad term above them.
That split is why I treat category pages as the money pages of most stores. When I audit an ecommerce site, the category template is the first thing I open, because one fix there repeats across hundreds of URLs.
This guide covers the category layer only. If you want the product layer, my product page SEO guide handles that, and Shopify owners should read my notes on Shopify product page SEO for the platform quirks.
What Is the Best SEO Strategy for Product Category Pages?
The best SEO strategy for product category pages is to treat each category as a landing page for one broad buying query, then protect it from the thousands of near-copies your filters create. Most stores get the first half roughly right. The second half is where rankings leak.
My answer changes with four variables. Figure these out before you touch a single title tag.
- Search demand for the category term. A category with real searches deserves copy and links. A category nobody searches for is a navigation aid, and that’s fine.
- How many products sit inside it. A category with 4 items and a category with 400 need different pagination, filters and copy.
- How your filters build URLs. Parameters (
?color=red), path segments (/red/) and fragments (#color=red) each behave differently for Google. - Your platform. Shopify, WooCommerce and custom builds give you different levels of control over canonicals, robots.txt and templates. I weigh the first two against each other in which ecommerce platform is better for SEO.
The Main Path: A Category With Real Search Demand
Most categories in a healthy store fall here. People search the term, you stock enough products to satisfy them, and the page just needs to say clearly what it is.
Give Each Category One Head Term
Pick the broadest term the page can honestly satisfy, then pick two or three close variants. “Women’s running shoes” is a category term. “Nike Pegasus 41 women’s size 8” is a product term, and it belongs on the product page.
If two categories chase the same term, one of them will lose. I’ve seen stores run “Sofas”, “Couches” and “Living Room Sofas” side by side, each with a thin intro and mostly the same products, and Google tends to rotate between them instead of committing to one. Merge them. Or give each a clearly different job.
Write the Title Tag and H1 Around That Term
Keep the title tag close to 50 to 60 characters and lead with the head term. Something like “Women’s Running Shoes: Road, Trail and Wide Fit | Store Name” tells both Google and the shopper what’s inside.
The H1 can be shorter. “Women’s Running Shoes” is plenty. Your meta description should read like a shelf label: range, price band if it’s stable, delivery or returns promise.
Add Copy That Helps Buyers Choose
Here’s my take on the old “SEO text block” debate. A short intro above the product grid, around 50 to 120 words, should tell the shopper what the range covers. Anything longer belongs below the grid, and it should answer real buying questions, not repeat the keyword.
Google’s own ecommerce documentation doesn’t set a word count for category copy, and I don’t either. What I check is whether a new shopper could pick the right subcategory or filter after reading it. If the copy only exists for Google, cut it.
Link Down, Up and Sideways
Google’s ecommerce documentation on site structure tells stores to “add links from menus to category pages, from category pages to sub-category pages”. It also warns that Googlebot might not find all your products if category pages don’t link to them. Those two lines explain most of what internal linking does for a store.
Use plain <a href> links in menus and grids, not JavaScript click handlers. Link each category to its parent and its children, and link sideways to close siblings, say from “Trail Running Shoes” to “Hiking Boots”.
Show Breadcrumbs and Mark Them Up
Breadcrumbs help shoppers climb back up a level and help Google read the hierarchy. Add BreadcrumbList structured data that matches the visible trail.
One honest caveat. Since January 2025, Google shows only the domain in the visible URL on mobile results, so the breadcrumb trail appears on desktop results only. The markup still works. Just don’t expect it to change how your mobile listing looks.
Paginate Without Hiding Products
Long categories need pagination, and this is where I see the most avoidable mistakes. Google’s pagination guidance says to give each page its own URL, such as ?page=2, link each page to the next with <a href>, and give each page its own canonical.
Two things to unlearn. Don’t canonicalize page 2, 3 and 4 back to page 1, because Google treats paginated URLs as separate pages. And don’t bother adding rel="next" and rel="prev" for Google, since Google says it no longer uses them.
Branch 1: Should a Filter Become Its Own Indexable Page?
Filters are the part of category page optimization that decides whether Google spends its time on your real pages or on junk. Do the maths on one category with 8 colours, 10 sizes, 6 brands and 4 sort orders, and you already have at least 1,920 possible URLs before anyone touches the price slider. That’s one category.
Google explains the cost plainly in its faceted navigation documentation. Crawlers can’t tell whether a filter URL is useful without crawling it first, so they tend to fetch huge numbers of them. Time spent there is time not spent on new products.
So here’s the decision I make for every filter:
If a filter combination has its own search demand and enough stock, then promote it to a real subcategory. “Waterproof hiking boots” is a good candidate. Give it a clean URL, a unique title, its own copy and a link from the parent category.
If the filter only helps shoppers narrow the grid, then keep it out of the crawl. Sizes, sort orders, price sliders and “in stock only” toggles almost never deserve their own ranking page.
If you aren’t sure, keep it out of the crawl for now and check Search Console later. You can always promote a filter. Cleaning up 50,000 indexed filter URLs takes far longer.
How Google Says to Keep Filters Out of the Crawl
Google’s doc lists three options. You can disallow filter parameters in robots.txt, you can move filter state into URL fragments (the part after #), since Google generally doesn’t crawl or index fragments, or you can add rel="nofollow" to filter links. Google notes that nofollow only works if every link to that URL carries it.
Robots.txt is the one I reach for first. Here’s the shape of it for a store that filters with parameters:
User-agent: *
Disallow: /*?*color=
Disallow: /*?*size=
Disallow: /*?*sort=
Disallow: /*?*price=
Test this on a staging copy or with a robots.txt tester before you ship it. One wrong line can block a whole category folder.
How to Handle Filter URLs You Do Want Indexed
If some filter URLs stay open to Google, the same doc asks for four habits. Use & as the parameter separator. Keep filters in the same logical order every time, so /boots/waterproof/leather/ never also exists as /boots/leather/waterproof/. Return a real 404 when a combination has no products. Point canonicals at the version you want counted.
Google also notes that canonicals are generally less effective over time than blocking the crawl. I use them as a backup, not as the plan.
What If Google’s Two Documents Seem to Disagree?
They don’t, but it’s easy to get tangled. The pagination guide suggests a noindex robots meta tag for filter and sort variations. The faceted navigation guide leans on robots.txt. You can’t use both on the same URL, because Google can’t read a noindex tag on a page robots.txt stops it from crawling.
My rule is simple. If a filter URL has never been indexed, block it in robots.txt and save the crawl. If thousands of filter URLs are already indexed, add noindex first, wait until they drop out, and only then add the robots.txt block.
Branch 2: A Small Store With Thin Categories
Now flip the situation. You sell 60 products across 15 categories, most with three or four items. That setup spreads your internal links thin and gives Google 15 near-empty pages to judge.
In this case I’d merge before I optimize. Combine weak categories into five or six that each hold a meaningful range, redirect the retired URLs to their closest new home, and put your copy effort into those survivors.
Skip heavy filter systems too. With 12 products on a page, a shopper can scan the whole grid in a few seconds, so every filter you bolt on adds another URL pattern to manage while giving the buyer almost nothing back. Not worth it.
Edge Cases That Change the Plan
- Seasonal categories. Keep a URL like
/christmas-decorations/live all year and update it each season. A page that disappears every January loses the links it earned. - Temporarily empty categories. Leave the page up, say when stock returns and link to the closest alternatives. Only redirect when the category is gone for good.
- Products in several categories. That’s normal. Make sure each product has one canonical product URL so the category paths don’t create copies of it.
- Shopify collection paths. Shopify can expose products under
/collections/.../products/...as well as/products/.... My Shopify post covers how to keep the canonical clean.
Does Structured Data Help a Category Page Rank?
Not directly, and I’d be wary of anyone who says it does. BreadcrumbList is the markup I add to every category page, because it matches what the page shows.
There’s one newer option worth knowing about. Google’s structured data carousels beta, documented on Search Central, lets a summary or category page use ItemList markup to show a scrollable row of products with price, rating and image. It only runs in the European Economic Area, Türkiye and South Africa, and products are covered in the EEA and South Africa. If you don’t sell there, skip it.
Category Page SEO Decision Matrix
| If the category or filter… | And… | Then |
|---|---|---|
| Has real search demand | Holds a solid range of products | Optimize fully: title, H1, copy, links, breadcrumbs |
| Has real search demand | Holds only a few products | Keep it indexed, add stock or merge with a sibling |
| Has no search demand | Helps navigation | Keep it indexed but light, no heavy copy work |
| Is a filter with its own demand | Returns enough products | Promote it to a subcategory with a clean URL |
| Is a filter with no demand | Was never indexed | Block it in robots.txt |
| Is a filter with no demand | Is already indexed in bulk | Add noindex first, block later |
| Returns zero products | Is a filter combination | Return a 404 |
| Is paginated | Has more than one page | Unique URL and self canonical per page |
Who Gets Which Keyword: Category or Product Page?
Keyword overlap between category and product pages causes more ranking wobble than people expect. The rule I use: the category page owns the plural, broad term, and each product page owns the specific model, variant or feature phrase.
When a product page starts ranking for the broad term, that’s usually a sign the category is weak, not that the product is strong. Fix the category copy and links first. Search Console will show you which URL Google prefers for each query.
When Should You Get Help With Category Pages?
Most of this is doable in-house on a store with a few hundred products. It gets harder when filters generate URLs you can’t see in the admin, or when a platform migration has left old category URLs half-redirected.
If your store is in that spot, my team handles this under our ecommerce SEO service, and it usually starts with a crawl of the category and filter templates. You can also request a free SEO audit and I’ll tell you which of these branches your store is on.
Frequently Asked Questions
Is Ahrefs Built for Product Pages and Category SEO?
Ahrefs is a general SEO toolset, not a store-specific one, but it works well for category research. Its Keywords Explorer shows a Parent Topic for each keyword, which helps you decide whether a phrase belongs on a category page or a product page. You don’t need it to start, though. Search Console already shows which queries your categories get impressions for.
Should Category Pages Have Text on Them?
Yes, but less than most SEO plugins suggest. A short intro above the grid and a buying-help section below it is usually enough. Write for the shopper who can’t decide between two subcategories. If a sentence only repeats the keyword, delete it.
Should I Let Google Index My Filter Pages?
Only the filters that have their own search demand and enough products to satisfy it. Promote those to proper subcategories. Keep sort orders, size filters and price sliders out of the crawl using robots.txt, fragments or nofollow, as Google’s faceted navigation documentation describes.
Are Collection Page SEO and Category Page SEO the Same Thing?
Yes. Shopify calls them collections, WooCommerce calls them product categories, and custom stores use whatever the developer picked. Collection page SEO follows the same rules: one head term, helpful copy, clean links and controlled filter URLs, and my guide to ranking Shopify collections adds the platform settings on top.
Last updated: September 2026 by Mizanur Rahman



