Keyword Clustering Tool
SEO specialists exporting hundreds of near-identical phrases, content leads mapping briefs to pages, and in-house teams preventing two articles from chasing the same query all start with the same messy list. This tool tokenizes each keyword, drops filler words, and groups phrases that share enough significant tokens, then hands back a primary term per cluster plus a CSV you can drop straight into a content calendar.
How the Clustering Algorithm Works
Every line is trimmed, de-duplicated case-insensitively, and split into lowercase tokens. A small stopword list removes glue words such as "for" and "the", and a light rule strips a trailing s from longer tokens so "formatters" matches "formatter". Each keyword keeps a set of those significant tokens, which becomes the basis for comparison.
Keywords are processed in the order you paste them. Each one is compared against every existing cluster by taking the best member-to-member Jaccard score. When the score meets the threshold and the shared-token count meets the minimum, the keyword joins that cluster; otherwise it opens a new one. After grouping, the tool computes tokens that appear in at least half the members and picks the longest keyword as the cluster primary.
Reading the report
The report prints one block per cluster, largest first, with the primary keyword, every member, and the tokens shared across the group. Single-member clusters are also listed in the unclustered section so outliers are easy to review. The CSV export adds a cluster number column, which spreadsheet pivots can group or count directly.
Token statistics over embeddings
Because the method is pure statistics, results are instant, offline, and identical on every machine for the same settings. The trade-off is vocabulary-bound matching: "image compressor" and "photo compressor" share no tokens and will not merge. Treat the output as a fast structural pass, then apply human review for synonym-level decisions.
Before and after: raw export to planned clusters
json formatter
json formatter online
yaml validator
css grid generator
regex tester 1. json formatter online
members: json formatter online, json formatter
shared: json, formatter
2. yaml validator
members: yaml validator
shared: yaml, validator
3. css grid generator
members: css grid generator
shared: css, grid, generator Use Cases
| Developer | Production | Workflow |
|---|---|---|
| Group API-related terms before generating route stubs | Split a 5,000-row export into page-sized intent groups | Turn keyword dumps into one brief per cluster |
| Feed cluster CSVs into a static site generator data file | Audit existing URLs for cannibalization risk | Assign clusters to writers with the primary term as title |
| Dedupe research exports before loading a CMS | Compare monthly exports by diffing cluster counts | Plan internal links from shared-token overlap |
Common Mistakes and Troubleshooting
Pasting a spreadsheet column that still contains headers such as "Keyword" or "Volume" adds junk rows to the first cluster; delete those before converting. Setting the threshold too low merges distinct products that share a brand word, while a threshold near 0.8 leaves almost everything unclustered. Start at 0.34, inspect the largest cluster, and move the slider in small steps.
Questions and statements, such as "how to format json", tokenize differently from head terms and often form their own groups; that is usually what you want, since they need answer-shaped pages. Non-Latin scripts are split on spaces and punctuation, so CJK lists without spaces need a segmenter applied before pasting. Very short keywords made only of stopwords collapse to empty token sets and will not join any cluster.
Best Practices for Cluster-Driven Content Plans
Cluster by intent first and by vocabulary second. Run the tool, then manually split any group that mixes informational and transactional phrasing, because one page rarely satisfies both. Keep the primary keyword in the title tag and H1, and use the remaining members as H2 sections, FAQ answers, and internal anchor text so the page covers the whole group without stuffing.
Export the CSV into the same sheet as your volume and difficulty columns, then pivot on the cluster number to estimate effort per page. Re-run the cluster each month on the delta export to spot new intents worth a dedicated URL. When two existing URLs land in the same cluster, treat it as a merge candidate rather than publishing a third article.
Keyword Clustering Tool FAQ
What problem does keyword clustering solve?
Keyword research exports often contain hundreds of near-duplicate phrases such as "json formatter", "json formatter online", and "free json formatter". Writing one page per phrase wastes budget and creates cannibalization. Clustering groups those variants so each group maps to a single page or brief, which keeps content plans small and intent focused.
How does this tool decide two keywords belong together?
Each keyword is tokenized into lowercase words with common filler words removed and a light plural ending stripped. Two keywords join the same cluster when they share at least the minimum number of significant tokens and their Jaccard similarity, the size of the token intersection divided by the union, meets the threshold you set. Clusters grow by matching each new keyword against existing members.
What do the threshold and minimum-shared settings control?
Threshold is the Jaccard cutoff between 0 and 1. A low threshold such as 0.2 merges aggressively into fewer, broader clusters, while 0.5 keeps only tightly matched phrases together. Minimum shared sets how many tokens must overlap before similarity is even considered, which stops single generic words from gluing unrelated keywords together.
Does the tool use embeddings or an external API?
No. Clustering runs on token statistics inside the tab, with no model download and no network request. That keeps the tool fast on large lists and keeps proprietary keyword data local, but it also means synonyms such as "price" and "cost" will not merge unless they share tokens. Use the exported CSV as a first pass, then apply editorial judgment for semantic merges.
Why are some keywords left in single-item clusters?
A keyword that shares nothing with any other phrase stays alone. That is usually a signal the term belongs to a different topic, or that your list mixes head terms with long-tail questions. Review single-item clusters for outliers, split lists by product area before clustering, or lower the threshold slightly if the splits look too aggressive.
How should I use the primary keyword column?
The primary keyword is the member with the most significant tokens, falling back to the earliest position on ties. Teams use it as the working title or focus phrase for the page that will cover the cluster, while the remaining members become supporting sections, FAQ entries, or internal-link anchors. Rename it freely in the exported sheet.
Is there a limit on list size?
The pairwise comparison grows with the square of the list size, so lists up to a few thousand keywords finish in a moment. Very large exports may take several seconds on a phone. Split million-row crawl exports by site section first; clustering works best on a focused slice of intent rather than an entire keyword universe.
Related Tools
Measure term frequency on the finished draft
Shape titles around each cluster primary
Tune drafts after assigning them to clusters
Pull named entities that signal sub-intents
Build URL slugs from each cluster primary
Strip exact repeats before clustering runs