Keyword Clustering: How to Group Keywords Into Pages
What is keyword clustering?
Keyword clustering is the process of grouping related search queries so that each group can be targeted by a single page. Groups are usually formed by checking which keywords return the same ranking URLs in search results, or by grouping keywords with similar meaning. Clustering tells you how many pages to create and stops several pages competing for one search.
Keyword clustering explained: clusters, overlap and cannibalisation
After researching keywords you often have hundreds of queries. Many of them mean the same thing to the searcher: "standing desk height" and "how high should a standing desk be" want the same answer. Writing one page per keyword would create near-duplicate pages. Clustering decides which queries belong together.
- Cluster: a group of keywords that one page can satisfy.
- Primary keyword: the query that most clearly represents the cluster, often the one with the most demand.
- SERP overlap: the number of identical URLs that appear in the top results for two different queries.
- Keyword cannibalisation: when two or more pages on your site target the same intent, so search engines cannot tell which to show.
SERP-overlap clustering versus semantic clustering
There are two main approaches, and they answer slightly different questions.
| SERP-overlap clustering | Semantic clustering | |
|---|---|---|
| Based on | Shared ranking URLs in live search results | Similarity of meaning between keywords |
| Question it answers | Does Google treat these queries as one need? | Are these queries about the same idea? |
| Strength | Reflects how the search engine actually ranks pages | Fast and needs no SERP data |
| Weakness | Needs result data for every keyword; results change over time | Can group queries Google treats differently |
| Good for | Final page mapping decisions | First rough grouping of a large list |
Semantic grouping might put "running shoes" and "running shoes for flat feet" together, yet their results may differ because the second has a narrower need. SERP overlap catches that. A practical workflow uses semantic grouping to organise a big list and SERP overlap to confirm the final clusters.
How to check SERP overlap manually
- Search each keyword in a private browser window, set to the country you target, and record the top ten organic URLs. Ignore ads and features without a URL.
- Put each keyword's URLs in its own spreadsheet column.
- Compare two keywords at a time and count how many URLs appear in both lists.
- Apply a threshold. A common rule of thumb is that three or four shared URLs out of ten means one page can target both keywords. Stricter thresholds produce smaller, tighter clusters.
- Add each keyword to the cluster it overlaps with most. If a keyword overlaps with nothing, it becomes its own cluster.
This formula counts shared URLs between two columns, where keyword A's URLs are in A2:A11 and keyword B's are in B2:B11. It works in Google Sheets and Excel.
=SUMPRODUCT(COUNTIF(A2:A11, B2:B11))For longer lists, a short Python script can compare every pair. Paste in the top ten URLs per keyword from your rank tracking export.
from itertools import combinations
serps = {
"standing desk height": ["a.com/height", "b.com/guide", "c.com/desk-height"],
"how high should a standing desk be": ["a.com/height", "c.com/desk-height", "d.com/ergonomics"],
"standing desk benefits": ["e.com/benefits", "f.com/health", "b.com/guide"],
}
THRESHOLD = 2 # use 3 or 4 with full top-10 lists
for a, b in combinations(serps, 2):
shared = set(serps[a]) & set(serps[b])
if len(shared) >= THRESHOLD:
print(f"{a} + {b}: {len(shared)} shared URLs") Worked example: clustering standing desk keywords
Suppose a furniture retailer has these keywords. After comparing the top ten results for each pair, the overlap counts lead to the clusters below.
| Keyword | Overlaps strongly with | Cluster | Target page |
|---|---|---|---|
| standing desk height | how high should a standing desk be | Desk height | Standing desk height guide |
| how high should a standing desk be | standing desk height | Desk height | Standing desk height guide |
| standing desk benefits | is a standing desk good for you | Benefits | Benefits of standing desks |
| is a standing desk good for you | standing desk benefits | Benefits | Benefits of standing desks |
| electric standing desk | buy electric standing desk | Electric desks | Electric standing desks category |
| standing desk converter | No strong overlap | Converters | Desk converters category |
Two keywords that look similar, "electric standing desk" and "standing desk converter", end up apart because their results show different products. The informational clusters become guides, while the commercial ones map to category pages, matching the intent behind each query.
Notice too that "standing desk height" and "how high should a standing desk be" share almost no words, yet they belong together. A simple word-matching approach would have split them into two pages. Checking the results is what reveals that searchers want the same answer, which is why overlap data is worth collecting before you commit to a page plan.
Mapping clusters to pages without cannibalisation
- Give every cluster exactly one target URL and record it in a keyword map. If an existing page already ranks for the cluster, improve that page instead of writing a new one.
- Use the primary keyword in the title and main heading, and cover the other cluster keywords naturally in subheadings and body text, following on-page SEO basics.
- Before publishing anything new, search the keyword map for the target query to make sure no other page already owns it.
- If two live pages compete, merge them into the stronger one and redirect the weaker URL with a 301.
- Link related clusters to each other so the site structure reflects how the topics connect.
Practical exercise: cluster thirty keywords in a spreadsheet
Choose a product or service and collect thirty related keywords. Set up a sheet with columns for keyword, monthly demand estimate, intent and top ten URLs. Record the results for each keyword, compare pairs with the formula above, and assign a cluster name using a threshold of three shared URLs.
You are done when every keyword has a cluster, every cluster has one target URL (existing or planned), and you can explain in one sentence why any two similar-looking keywords were kept apart. Feed the finished clusters into a topical map to plan the wider section.
Common mistakes
- Creating a separate page for every keyword variant instead of one page per cluster.
- Relying only on semantic similarity, which can merge queries that search engines answer with different pages.
- Checking results while logged in or from the wrong country, which skews the overlap data.
- Clustering once and never rechecking, even though results for a query can change over time.
- Writing a new page for a cluster that an existing page already ranks for, which splits signals between two URLs.
Frequently asked questions
What SERP overlap threshold should I use?
Many practitioners start with three or four shared URLs out of ten. Lower thresholds create bigger, looser clusters; higher ones create smaller, tighter clusters. Test a threshold on keywords you already understand, then apply it to the rest.
Do I need a paid tool for keyword clustering?
No. A spreadsheet and manual result checks work for a few dozen keywords. Paid clustering tools automate the result collection and comparison, which saves time on lists of hundreds or thousands of queries.
How is keyword clustering different from a topical map?
Clustering decides which keywords belong on the same page. A topical map arranges those pages into a hierarchy and plans how they link together. Clustering usually feeds into the map.