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.
