Keyword Cannibalization: When Your Own Service Pages Fight Each Other
Most contractor websites with more than 20 pages have a quiet ranking problem nobody warned them about. Two pages on the same site target the same keyword, Google cannot decide which one to rank, and both pages sit lower than either would reach on its own. This is keyword cannibalization: your own website competing against itself for the same search. Neither page is penalized. Both are just diluted. A service page that could rank at position 4 for "furnace repair Denver" instead sits at position 7 because a second page on the same site also targets that phrase, and Google rotates between them rather than committing to one.
The mechanism is direct. Each page on your site accumulates ranking signals: internal links pointing to it, backlinks from other domains, structured data, and click history from search results. When two pages share the same keyword target, those signals split between them. The page that should rank first carries only half its deserved authority into each auction. A contractor who publishes 15 city pages for a metro area where every one targets "AC repair [city name]" as its primary keyword has divided their AC repair ranking signal 15 ways. Any single city page would rank better if it were the only page targeting that phrase.
The Three Patterns That Create Cannibalization on Contractor Sites
Service page plus city page. Most HVAC and plumbing companies have both a main "AC repair" service page and a location page for "AC repair Denver." If both pages share similar H1 headings, close title tags, and nearly identical service descriptions, Google sees two candidates for the same query and alternates between them. Neither page gets the full benefit of the other’s authority.
Service page plus a blog post. A contractor publishes a service page for "water heater replacement" and later writes a blog post titled "How Much Does Water Heater Replacement Cost in [City]?" Both pull impressions from the same keyword cluster. The blog post draws ranking signals away from the service page. The service page loses traffic gradually, and because the drop is slow, no one connects it to the newer post.
Near-duplicate city pages. A contractor builds 15 city pages for a metro area using the same template with the city name swapped. Google reads them as functionally identical and distributes the domain’s ranking signals across all 15. No individual city page accumulates enough authority to rank in the top five. All 15 pages rank in the 8 to 15 range for their target cities, where click-through rates are near zero.
How to Find Cannibalization in Google Search Console
Search Console reveals exactly which pages are splitting impressions on the same queries. The audit takes 20 to 30 minutes and works for any site that has been live for at least 6 months.
Open the Performance report. Click the Queries tab. Identify your five to ten keywords with the highest impressions: your core service-and-city combinations such as "furnace repair [city]" or "water heater plumber [city]." Click each keyword. Below the chart, switch to the Pages tab. This shows every URL that earned impressions for that specific query during the selected date range.
If two different URLs appear for one keyword, you have a cannibalization case. Record both URLs, the shared keyword, and the impressions and average position for each.
| Query | URL 1 | URL 1 Avg. Position | URL 2 | URL 2 Avg. Position |
|---|---|---|---|---|
| AC repair Denver | /services/ac-repair | 6.8 | /denver/ac-repair | 9.2 |
| furnace installation cost | /services/furnace | 5.4 | /blog/furnace-cost | 7.6 |
| water heater replacement plumber | /services/water-heaters | 7.1 | /denver-plumber | 8.9 |
A site that has published content for 18 or more months typically has 10 to 25 of these dual-URL cases. Every case represents two pages collectively underperforming what a single, consolidated page would achieve at the same domain authority.
The Quick site: Search Check
Before running the full Search Console audit, a fast rough check shows which keyword clusters already have too many pages competing. Go to Google and type: site:yourdomain.com "furnace repair". Every URL in the results is a page Google has indexed for that keyword. If three or four results appear with similar title patterns, those pages are competing with each other. Run the same check for each of your primary services and each city name in your service area. Five to ten minutes of site: searches surfaces the most obvious conflicts before you dig into Search Console data.
Four Fixes for Contractor Cannibalization
Consolidate with a 301 redirect. The most direct fix is to choose one URL as the canonical page for a keyword and redirect the others to it. To decide which survives: go back to Search Console and compare impressions, average position, and external backlinks for both competing pages. The one with more impressions, a better average position, or more inbound links should be the destination. Redirect the weaker page with a 301. The surviving page inherits the ranking signals from both, and most consolidations produce a measurable improvement in average position within 30 to 60 days. Move any content unique to the redirected page onto the surviving page before publishing the redirect so no information is lost.
Differentiate by search intent. Not every cannibalization case requires a redirect. A service page and an informational blog post can coexist if they genuinely serve different query types. The service page should target transactional searches: "AC repair near me," "emergency AC technician." The blog post should target informational searches: "how much does AC repair cost," "is my AC worth fixing?" To keep them separated, give each a distinct H1 and title tag that names its specific query type clearly. Cannibalization occurs when both pages use similar title tags because Google cannot tell which one better matches which intent. Rewriting the title tags and H1s to reflect genuinely different questions resolves the conflict without losing either page.
Add canonical tags to thin city pages. A contractor with many location pages that lack genuine unique content can add a canonical tag to each, pointing to the primary service page. The canonical tag in each city page’s HTML head tells Google to attribute ranking signals to the primary document without removing the city page from the index entirely. This approach is appropriate for location pages under 400 words with no real city-specific content. The tag takes 10 minutes to add per page and stops the signal dilution immediately.
Fix internal linking to signal the primary page. Internal links tell Google which pages carry the most authority for a given keyword. When a blog post and a service page both target "water heater replacement," the blog post should link to the service page, not the other way. Use the Search Console Links report to confirm your intended primary pages are receiving the most internal links for their target keywords. If the cannibalized page is receiving more internal links than the page you want to rank, add links from supporting pages to your intended primary and reduce links pointing to the secondary. The adjustment costs nothing and reinforces the hierarchy Google needs to commit to a single page.
Three Actions for This Week
- Run the Search Console page audit on your five highest-traffic keywords. For each core service keyword, open the Performance report, click the keyword, and switch to the Pages tab. Write down every URL that appears. Any keyword with two or more URLs in that list is a live cannibalization case. This takes 20 to 30 minutes and is the only way to confirm with certainty which of your pages are splitting ranking signals today. Contractors who run this audit for the first time typically find between 8 and 20 cases. Most had no idea they existed.
- Classify each case as consolidation, differentiation, or canonical before touching anything. Pairs with nearly identical content and the same search intent need consolidation: pick one URL and 301 redirect the other. Pairs where a service page and an informational page serve genuinely different query types need differentiation: rewrite their title tags and H1 headings to address distinct questions. Thin city pages that are template copies need canonical tags pointing to the primary service page. The classification takes under five minutes per case but determines the correct fix. Applying a redirect to a page that should instead be differentiated removes a ranking asset. Applying a canonical to a page with genuine unique content suppresses rankings unnecessarily. Classify first, then act.
- Consolidate the single worst case and measure the result in 60 days. Pick the pair where both pages have more than 200 monthly impressions combined and similar average positions in the 6 to 10 range. Redirect the weaker page to the stronger one after moving any unique content to the surviving page. Record the surviving page’s impressions and average position in Search Console on the day you publish the redirect. Return in 60 days and compare. Most consolidations produce a 1 to 3 position improvement in average ranking and a corresponding increase in clicks. That single data point tells you exactly what cannibalization was costing that page every month, and gives you the evidence to justify fixing the remaining cases on your list.
Keyword cannibalization is not a ranking penalty. It is a structural inefficiency where two pages share authority that should belong entirely to one. A contractor website with 30 well-written pages competing across 15 cannibalization cases is consistently underperforming what 15 focused, unconflicted pages would achieve at the same domain authority. The fix is not writing better content. It is identifying which pages are competing and either merging them, separating their intent, or signaling clearly to Google which one should rank. The Search Console audit above surfaces every case in under 30 minutes. Most contractors who run it find immediate candidates where a single consolidation would produce ranking improvements faster than any new page they could publish.