What we look for
The text of these pages matches another crawled page word for word.
Why it matters
When pages are identical, search engines pick one to show and filter out the rest, so the copies compete instead of ranking.
How to fix
Keep one version. Send the others to it with a 301 redirect (a permanent forwarding rule), or add a canonical tag (a line in the page's <head> naming the preferred address) to each copy that points at the version you keep.
Seen in a real crawl
From a crawl of Kestrel Bay Digital (the canonical-variants fixture), a test site from Raptor’s fixture suite.
High
2 pages have the same content as other pages
/services/ x/ Same content as /services/ y/ /services/ y/ Same content as /services/ x/
http://127.0.0.1:8003raptor 0.3.0, 17 Oct 2026Where you’ll see it
The id is stable, and every surface uses it, so it’s the thing to search for or hand to an agent.
- Terminal
- When it is one of the five findings under Fix first,
raptor crawlprints the id under it.Check: content.
exact_ duplicate - crawl.json and the CSV
- The crawl JSON names the finding by this id, and so do the CSV and
raptor_query."check_
id": "content. exact_ duplicate" - The HTML report
- This link opens the finding in the report, and each finding shows its id.
crawl.
html# finding= content. exact_ duplicate - MCP
raptor_findingswith thischeck_idreturns the finding in full, with a fix brief ready to paste into a task. If it didn’t fire, it says why.raptor_
findings { "job_ id": ". . . ", "check_ id": "content. exact_ duplicate" }