Cluster Similar Values

Fuzzy-group near-duplicate text (typos, casing, spacing) in one column and get a suggested canonical value per cluster. Runs entirely in your browser, no upload.

Try:
Clusters

Cluster similar values

Real-world columns are full of the "same" value written many ways — New York, new york, New York, Nwe York. This tool fuzzy-clusters the values in one column so those near-duplicates land in the same group, then proposes a canonical form (the most frequent original) for each cluster. Feed it a CSV or a plain list, one value per line. Everything runs in your browser; nothing is uploaded.

How it works

Each value is compared with a normalized Levenshtein edit-distance ratio scored 0–100. Two values join the same cluster when their similarity is at or above the threshold. Before comparing, values are optionally folded to ignore letter case and extra spacing, so those differences don't count against a match. The most frequent original in each cluster becomes its canonical suggestion.

Worked example

Input (one value per line), threshold 70:

New York
new york
New  York
Nwe York
Boston

The four New-York variants (a typo, a case change, a double space) cluster together with canonical New York, while Boston stays on its own. The Mapping table then gives you every original → canonical pair to apply back to your data.

Options

FAQ

Which value becomes the canonical suggestion?

The most frequent original value in the cluster (ties break toward the one seen first). It's kept exactly as it appears in your data — casing and spacing intact — so you can trust it as the "correct" spelling to standardize on.

How do I turn a threshold into "how many typos are allowed"?

The score is (1 − edits ÷ length) × 100, where length is the longer of the two values. So for an 8-character value, a threshold of 85 tolerates about one edit (insert, delete, or substitute a character); 75 tolerates about two. Shorter values need a lower threshold to merge, since a single edit is a bigger fraction.

Does it change my data or just report clusters?

It only reports. You get the clusters and a mapping table — nothing in your input is rewritten. Use the CSV mapping (original → canonical) to apply the merges in your spreadsheet or script.

How is this different from removing duplicate rows?

Plain de-duplication only removes rows that match exactly. This finds values that are nearly the same — typos, casing, and spacing differences — which exact matching misses, and suggests a single canonical spelling to standardize them to.

What are the limits?

It clusters one column at a time and compares values by character edits, so it's ideal for names, cities, companies, and tags — not for matching semantically equal but differently-worded phrases. Blank cells are skipped. Greedy clustering compares each value to its cluster's most-frequent seed, so extremely large, noisy columns may group slightly differently than an exhaustive pairwise pass.

Is my data uploaded?

No — it's processed locally with WebAssembly and never leaves your browser.

Developer & Automation Access

Run it from the terminal

Same engine as this page, headless — via the gizza CLI:

gizza tool cluster-similar-values "New York
new york
New  York
Nwe York
Boston"

New to the CLI? Get gizza →

Open it by URL

Pre-fill and auto-run this tool with query parameters — the names match the API/CLI:

https://gizza.ai/tools/cluster-similar-values/?data=New%20York%0Anew%20york%0ANew%20%20York%0ANwe%20York%0ABoston&column=city&delimiter=%2C&header=true&threshold=85&normalize_case=true&normalize_spacing=true&output=markdown

Machine-readable descriptor: tool.json — title + parameters JSON Schema for agents.