TL;DR
- In Search Console's Performance report, Queries data is aggregated by property and Pages data by page, so filter by query, then open the Pages tab to see competing URLs.
- URL Inspection shows a User-declared canonical and a Google-selected canonical; if they differ, Google has already picked its own winner between similar pages.
- Google's duplicate-URL guide calls redirects and rel=canonical strong canonical signals and sitemap inclusion a weak one.
- Google advises against robots.txt or noindex for canonicalization; temporary 302/307 redirects do not carry the canonical signal that 301/308 do.
- In Google Ads, keywords targeting the same domain do not compete with each other in the auction; Google Ads picks one keyword per search term.
Keyword cannibalization is when two or more pages on the same site target the same search intent, so Google has to pick between them and the page you want to rank is not always the one it shows. It is a problem only when that split costs you something, such as the wrong URL ranking, positions swapping back and forth, or links and relevance spread across near-duplicates; several URLs from one site appearing for a query is not, by itself, a fault.
This guide covers how to tell the two situations apart, how to find real cases in Google Search Console, and which fix to use, based on Google Search Central documentation on redirects and on consolidating duplicate URLs.
What keyword cannibalization is, and what it is not
Search engines try to show the page that best answers a query. When your site has one clear page for a topic, the choice is easy. When it has several pages that answer the same question in roughly the same way, Google has to choose, and that choice may change from week to week. The result is often two half-strong pages instead of one strong page.
Some common causes:
- A blog post and a service page written for the same keyword, for example "seo audit checklist" as a post and "SEO audit" as the service page, with the post written so broadly that it reads like a sales page.
- Yearly refreshes published as new URLs ("guide 2025", "guide 2026") while the old ones stay live and linked.
- Category, tag and filter pages that list the same products with near-identical titles.
- Technical duplicates: the same page reachable with and without a trailing slash, over HTTP and HTTPS, or with tracking parameters.
What it is not: two pages that rank for the same query but serve different intents. A product page and a how-to guide can both appear for a broad term because one fits buyers and the other fits researchers. If each page earns clicks for different queries and neither is losing ground, there may be nothing to fix. Treat multiple ranking URLs as a reason to look, not as a diagnosis.
How to detect keyword cannibalization in Search Console
The Performance report in Google Search Console is the most direct tool because it shows real queries and real pages from Google Search. Two details from Google's help page on the report matter here. First, the table can be grouped by Queries or by Pages. Second, data grouped by Queries is aggregated by property, while data grouped by Pages is aggregated by page, so totals in the two views will not always match. The default date range is the last three months.
A practical workflow:
- Open Performance, choose Search results, and set the date range to at least three months so short-term swings even out.
- Add a query filter for the term you are worried about (use "Queries containing" for a short phrase).
- Switch the table to the Pages tab. Every URL listed has received impressions for queries matching that filter.
- For each URL, note clicks, impressions and average position. If two or more pages have meaningful impressions for the same query, you have a candidate.
- Now reverse it: filter by one of those pages and look at the Queries tab. If both pages rank for the same core queries rather than distinct ones, the overlap is real.
- Switch the chart to show average position and compare the pages over time. Pages that trade places, where one rises as the other falls, are a strong sign Google cannot decide between them.
Then check how Google treats each URL with the URL Inspection tool. It shows a User-declared canonical (the URL your page declares, for example through a rel="canonical" tag) and a Google-selected canonical (the URL Google chose when it found similar pages on your site). If Google has picked a different canonical from the one you declared, it has already decided the pages are duplicates and has chosen its own winner. Note that standard inspection shows the indexed version, not the live page; use Test live URL to check recent changes.
Worked example (illustrative numbers): filtering by "seo audit" shows /seo-audit-checklist/ with 4,000 impressions at average position 14 and /seo-audit/ with 3,500 impressions at position 17. Filtering each page and viewing Queries shows both rank for "seo audit", "website seo audit" and "seo audit service". Over 90 days, their positions swap several times. That is a real cannibalization case: same queries, same intent, neither page holding a stable spot.
Fix 1: merge the pages and 301 redirect
When two pages cover the same intent and one is clearly stronger, merge the useful content of the weaker page into the stronger one, then permanently redirect the weaker URL to it.
Google's documentation on redirects says 301 and 308 status codes mean a page has permanently moved, and that Google Search uses certain redirects as a signal that the redirect target should be canonical. Temporary redirects (302, 307) do not carry the same canonical signal, so the source page can stay in results. Google's guide to consolidating duplicate URLs lists redirects as a strong signal that the target should become canonical. Google advises using a permanent redirect when you are sure it will not be reverted.
Steps that keep the merge clean:
- Choose the surviving URL by evidence: the page with more clicks, better links and the right intent, not the newest one.
- Move only content that adds something: unique sections, examples, FAQs. Drop the repeated parts.
- Set a server-side 301 from the old URL to the surviving URL, not a JavaScript or meta refresh redirect.
- Update internal links so they point straight at the surviving URL instead of passing through the redirect.
- Remove the old URL from your XML sitemap and keep the surviving one in it.
Fix 2: rel="canonical" when both pages must stay live
Sometimes both URLs have to exist: a printer-friendly version, a filtered product list, or a campaign landing page that duplicates a main page. In that case, keep both and add a rel="canonical" link on the duplicate pointing to the preferred URL.
Google's consolidation guide describes rel="canonical" as a strong signal that the specified URL should become canonical, and sitemap inclusion as a weak signal. It also says the methods can be combined, and that none of them are required. Two warnings from the same page: do not use robots.txt for canonicalization, and do not use noindex for it either, because noindex blocks the page from Search entirely. The guide also advises linking internally to the canonical URL, not a duplicate.
Remember that a canonical is a signal Google weighs with other signals. If the two pages are not really duplicates, or if internal links all point at the non-canonical version, Google may select a different canonical. URL Inspection will tell you which one it chose.
Fix 3: de-optimize one page so each has its own job
If both pages deserve to exist because they serve different intents, the fix is to make that difference obvious. Rewrite the weaker page's title, H1 and opening so it targets its own query. For example, the blog post becomes "SEO audit checklist: 40 checks to run yourself" aimed at people doing the work themselves, and the service page keeps "SEO audit" for people looking to hire. Remove sections from the post that duplicate the service page's pitch, and link from the post to the service page where it makes sense.
This is the slowest fix to show results, because Google has to recrawl both pages and reassess them. It is also the one that keeps the most content working, so it fits cases where both pages already earn their own clicks.
Fix 4: consolidate internal links
Internal links tell Google which page you consider the main one for a topic. If your navigation links to the service page but fifty blog posts link to an old guide with the anchor text "SEO audit", you are sending mixed signals. Audit the anchors pointing at each competing page and point the topic's main anchor text at the page you want to rank. This works on its own for mild cases and supports every other fix.
Choosing a fix: comparison table
| Situation | Fix | What Google documents about it |
|---|---|---|
| Same intent, one page clearly stronger, the other not needed | Merge content, then 301 redirect | Permanent redirects are a strong signal that the target should be canonical |
| Near-duplicate URLs that must both stay live | rel="canonical" on the duplicate | A strong signal; robots.txt and noindex should not be used for canonicalization |
| Different intents, overlapping titles and copy | De-optimize one page and differentiate it | No canonical change; each page targets its own queries |
| Mild overlap caused by linking patterns | Point internal links at the preferred page | Google advises linking internally to the canonical URL |
How it differs from Google Ads keyword overlap
The term "cannibalization" is also used in paid search, but the mechanics are different. In organic search, two of your pages can split visibility. In Google Ads, the help article on ad group and asset group prioritization says that when multiple keywords targeting the same domain are eligible to match the same search term, they do not compete with each other in the auction. Instead, Google Ads picks one. Exact match keywords identical to the search term come first; then phrase and broad match keywords (or search themes) identical to the search term; then AI-based relevance limits matching to the most relevant ad groups; and Ad Rank decides between matches of equal priority.
So in Google Ads, overlap does not push up your own costs through self-bidding. The risk is control: the wrong ad group, ad or landing page may serve, and reporting gets harder to read. The fix there is account structure and negative keywords, not redirects. In SEO, the fix is on the website itself.
Preventing it in a content calendar
Much of this can be prevented at the planning stage. A few habits prevent it:
- Keep a keyword-to-URL map. Each primary query belongs to one URL. Before a new brief is approved, check whether the query is already assigned.
- Update instead of republishing. For a yearly guide, keep one evergreen URL and refresh the content and date rather than creating a new URL each year.
- Write briefs that state the intent. "Explain how to run an SEO audit yourself" and "sell an SEO audit" are different pages; "write about SEO audits" invites overlap.
- Check Search Console before publishing. Filter by the target query and see which of your pages already gets impressions. If one does, improve it instead.
- Review quarterly. Run the query-and-page check above on your top topics every few months, because overlap creeps in as a site grows.
Thai and bilingual sites
Thai sites have a few extra sources of overlap. Thai search queries can mix Thai and English, for example "ทำ SEO" and "SEO คือ", and teams sometimes publish separate pages for each spelling or transliteration when one page could cover both. Search Console treats these as different queries, so filter for each variant and check whether the same pages appear.
Bilingual sites can also create apparent duplicates between Thai and English versions. A Thai page and its English translation are not cannibalizing each other when they are set up as language alternates; that relationship is handled with hreflang annotations, which is a separate topic from canonicalization. Problems start when two Thai-language pages, or two English ones, target the same intent, or when a Thai page carries a canonical pointing to its English version, which tells Google the Thai page is a duplicate rather than an alternate.
What to measure after the fix
After a merge or canonical change, use URL Inspection to request indexing of the surviving page and check the Google-selected canonical once it is recrawled. Then watch the Performance report filtered by the target query. You are looking for one URL taking most of the impressions, a steadier average position, and clicks that hold or rise. Allow several weeks, because Google has to recrawl both URLs. If the old URL still shows up after a long period, check that the redirect returns a 301 and that internal links and the sitemap no longer reference it.
Frequently asked questions
Is keyword cannibalization always bad?
No, it is only a problem when the overlap costs you rankings, clicks or control over which page shows. Two pages that serve different intents for the same broad query can both perform well.
How do I find keyword cannibalization in Google Search Console?
Filter the Performance report by the query, then open the Pages tab to see every URL getting impressions for it. If two pages share the same core queries and their positions swap over time, you have a real case.
Should I use a 301 redirect or a canonical tag?
Use a 301 when the weaker page no longer needs to exist, and a canonical when both URLs must stay accessible. Google's documentation describes both as strong signals for choosing the canonical URL.
Can I use noindex to fix cannibalization?
Google advises against using noindex for canonicalization because it blocks the page from Search entirely. Use a redirect or rel="canonical" instead, and do not use robots.txt for this purpose.
Does keyword overlap in Google Ads work the same way?
No, Google Ads selects one keyword per search term using its prioritization rules, and keywords targeting the same domain do not compete with each other in the auction. The risk there is the wrong ad or landing page serving, not lost organic rankings.
Next step
If you suspect overlap across many pages, a structured SEO audit is the efficient route; Relevant Audience's audit flags thin, cannibalising or outdated pages and checks Thai and English targeting, including hreflang. For ongoing content planning and on-page work, see our SEO services and SEO in Thailand.







