New website or upgrading an existing one? Book a free video consultation.
Englishen
Login Configurator

Duplicate content and canonical URLs

Duplicate content means that the same or near-identical content is reachable at several different web addresses. For a search engine this means confusion: it does not know which address to rank, the link equity is spread across the duplicates, and at the same time it wastes time (crawl budget) visiting unimportant variants instead of your key pages. In an online store, especially in Magento, there is a lot of duplicate content.

Where duplicate content comes from

  • Filters and sorting (layered navigation): filtering by colour, size, price, and sorting create countless addresses with added parameters that show almost the same content. A single category can thus spawn several thousand near-identical addresses.
  • The same product on several paths: if a product is reachable through several categories, several addresses for the same page can arise.
  • Pagination: pages 2, 3, 4 of a category with the same title and description.
  • Technical variants: http and https, with www and without, with a trailing slash and without, tracking parameters.

The canonical tag as the solution

The canonical tag is a tag in the page's head that tells the search engine which address is the main one - the one it should rank and attribute all the link equity to. All variants then point to the same main address. It makes sense to always have a canonical tag, since it prevents problems with parameters and over-indexation and preserves the value of links. Note: the search engine still has to visit the page to detect the tag - so on its own it does not fully solve the waste of crawl budget (for that you also need robots.txt and noindex).

Filters: the default state and when you need a module

An important clarification about Magento: by default, filtered layered-navigation addresses do not become separate indexed pages. If the canonical tag is enabled, a filtered page carries a canonical tag to the base category, so the search engine treats them as duplicates and usually does not index them separately. Two problems remain, however: the search engine still visits these addresses (crawl budget), and the canonical tag is only a hint, so some still end up in the index - core Magento neither limits the crawling nor adds an explicit noindex. If you want the opposite - for certain filters to become genuine, indexed landing pages (for example "brand/Nike" or a category + colour combination where there is demand) - the default Magento cannot do this well: for that you need a dedicated attribute-pages module (SEO layered navigation) that creates clean addresses, distinct titles and descriptions, and gives control over indexing per individual attribute. You use the same module together with robots.txt for an explicit noindex on low-value combinations and to limit crawling.

Caution with pagination

Do not point pages 2, 3, 4 of a category to the first page with a canonical tag - if you do, the search engine will not index the products on those pages. The correct approach is for each numbered page to carry a canonical tag to itself (self-reference), or to set a "View all" page as the main one, if it exists.

How to set it up in Magento

In Stores > Configuration > Catalog > Search Engine Optimization, turn on "Use Canonical Link Meta Tag For Categories" and "For Products" to Yes. This is the baseline that points most filtered and parameterised addresses to the main category or product. For more advanced control - which filtered variants should become indexed landing pages, automatic noindex on low-value combinations, robots.txt rules, and SEO-friendly filter addresses instead of long parameters - a dedicated layered navigation or SEO module is required.

How to measure whether it works

In Google Search Console, in the page indexing report, track categories such as "Duplicate, Google chose different canonical" and "Alternate page with proper canonical tag" - the former show problems, the latter are fine. Also track the total number of indexed pages (site:) and the crawl statistics: if the number of unimportant addresses drops, the measure is working. The goal is for the search engine to spend its time on your key pages, for link equity to gather on the main addresses, and for there to be no thin, duplicate variants in the results.

Sources

Frequently Asked Questions

What is duplicate content and why is it a problem?

Duplicate content means the same or near-identical content is reachable at several different addresses. The search engine therefore does not know which address to rank, the link equity is spread across the duplicates, and at the same time the engine wastes time (crawl budget) visiting unimportant variants instead of your key pages. An online store has a lot of this, since filters, sorting, pagination, and different paths to a product create many near-identical addresses.

What is a canonical tag and how does it help?

It is a tag in the page's head that tells the search engine which address is the main one - the one to rank and attribute all link equity to. All variants then point to the same main address. It makes sense to always have a canonical tag, since it prevents problems with parameters and over-indexation and preserves the value of links. Note: the search engine still has to visit the page to detect the tag, so on its own it does not fully remove the waste of crawl budget - for that you also need robots.txt and noindex.

How should I handle filters (layered navigation) in Magento?

By default, filtered addresses in Magento do not become separate indexed pages: if the canonical tag is enabled, they carry a canonical tag to the base category, so the search engine usually does not index them separately. What remains is that it still visits them (crawl budget) and that the canonical tag is only a hint, so some are still indexed - core Magento neither limits the crawling nor adds an explicit noindex. If you want certain filters to become genuine indexed landing pages (for example brand/Nike), the default Magento cannot do this well: for that you need a dedicated attribute-pages module (SEO layered navigation) that creates clean addresses and distinct titles and descriptions and gives control over indexing per attribute. You use the same module with robots.txt for an explicit noindex on low-value combinations and to limit crawling.

Can I point pages 2, 3 of a category to the first page?

No. If you point pages 2, 3, 4 to the first page with a canonical tag, the search engine will not index the products on those pages. The correct approach is for each numbered page to carry a canonical tag to itself (self-reference), or to set a View all page as the main one, if it exists. So handle pagination separately from filters.

How do I set this up in Magento and how do I check whether it works?

In Stores > Configuration > Catalog > Search Engine Optimization, turn on Use Canonical Link Meta Tag For Categories and For Products to Yes; this gives category and product pages a basic canonical tag that points most parameterised addresses to the main page. For more advanced control (which filtered variants should be indexed landing pages, automatic noindex on combinations, robots.txt rules, SEO-friendly filter addresses) a dedicated layered navigation or SEO module is required. Check the result in Google Search Console in the page indexing report (the Duplicate and Alternate page with proper canonical tag categories) and track the total number of indexed pages.

Stop browsing. Start selling. Contact me now at anze@degriz.net.

Access Premium Content for Free

Subscribe to our newsletter and get free access to premium content. Discover valuable insights and exclusive resources available only to our subscribers.

Privacy Policy: Newsletter Subscription

By entering your email address, you are subscribing to the newsletter, through which Degriz will inform you about new online and in-store offerings, marketing activities, and other promotions.

By subscribing to the newsletter, you are also enrolled in the benefits database that Degriz offers to its users.

For the newsletter subscription, Degriz d.o.o. collects the following information: email address, IP address, and if you subscribe as a registered member, your name, surname, address, and phone number.

After submitting the form with your email address, you will receive a confirmation message at the specified address – by confirming this, you will be subscribed to the Degriz newsletter until you unsubscribe (so-called opt-in approval). You can request, in writing or by clicking the Unsubscribe button in the newsletter, that the data controller permanently or temporarily stops using your personal data for direct marketing purposes. Your request will be fulfilled within 15 days of receiving it, as prescribed by law. You can also request the transfer or access to your data.

Degriz d.o.o. is committed to protecting your data in accordance with the legislation governing personal data protection.

The sender of the newsletter and controller of your personal data is: Degriz, d.o.o., Gorica pri Šmartnem 45a, 3000 Celje, SI 67287743

Check out the full Privacy Policy

Newsletter

My name is Anže, and I am a Magento certified expert in solutions and a creator of multiple award-winning online stores.

I am the architect behind all Degriz projects. You will surely come across me if we collaborate. Even though the phone keeps ringing, you can always tap me on the shoulder if you need advice regarding online stores and their functioning.

I specialize in building custom online stores and I am a master of unique techniques to enhance conversion on your website.

© 2010 - 2026 Degriz. All rights reserved. Built with love on Magento.
Partial use of the content is permitted with mandatory attribution. The content is licensed under Creative Commons Attribution 4.0 International (CC BY 4.0) or under our own license.