FreeToGenerate.com

Shows the rule that decided every letter, not just the four characters at the end — including the one case the published rules single out to say what the answer is not. Nothing is uploaded.

Every letter is shown with the rule that decided it, so you can see why a letter was dropped rather than just trusting the answer.

Try one:

Soundex code

A-261

Letter by letter

The first letter is kept as itself. Every other letter is either coded as a digit, ignored as a vowel, or dropped by one of the rules below.

LetterResultRuleSame code as
AAKept as the code letter
s2Coded
hH or W, ignored
cSame code, separated only by an H or a WS
r6Coded
aVowel, ignored
f1Coded
tThe code already has three digits

Other codes this name could be filed under

If H and W separated letters

The rejected reading: A-226

They do not. The National Archives states the rule and then names the answer it rejects, which is unusual enough to be worth quoting: Ashcraft is coded A-261, and it is not coded A-226. An implementation that skips this rule returns the second one.

Everything runs in your browser. Nothing is uploaded, and reloading the page forgets what you typed.

Also available in: Español · Português · Français · العربية

Soundex calculator: every letter, and the rule that decided it

Code any surname, see why each letter was kept or dropped, and check which spellings file together.

What is a Soundex code?

A Soundex code is a four-character index key for a surname: the first letter, then three digits standing for the consonants that follow. Washington is W-252 and Lee is L-000. The point is that names which sound alike but are spelled differently land on the same code and were therefore filed together, which is how you find an ancestor whose name a census taker wrote down by ear a century ago.

The coding itself is a short set of rules. Six digits cover the consonants — 1 for B, F, P and V, 2 for C, G, J, K, Q, S, X and Z, 3 for D and T, 4 for L, 5 for M and N, 6 for R — and the letters A, E, I, O, U, H, W and Y are disregarded. Zeroes pad a short code out to three digits, and anything past the third digit is thrown away.

What that summary hides is that four more rules decide when a consonant does not get coded at all, and those are where implementations diverge. This page shows the rule that fired on every single letter, so a code you disagree with can be argued with rather than merely doubted.

How to use it

  1. Type the surname. The code appears immediately, written the way the archives write it, with a hyphen after the letter. The sample buttons each demonstrate a different rule, including the two cases naive implementations get wrong.
  2. Read down the letter table. Every character gets a row: coded as a digit, ignored as a vowel, or dropped with the rule that dropped it named. Where a letter collided with an earlier one, the table says which letter it collided with.
  3. Switch to comparing spellings. Paste a list of variants, one per line, and see which of them file together. This is what the index is actually for, and the groupings are often not the ones you would guess.

The rule most versions skip

There is no Soundex standard. There is no ISO number, no RFC, no committee — the algorithm circulated as a filing convention long before anyone tried to write it down, and what survives as the reference is the US National Archives page describing the rules for the Census Soundex, the variant everyone means by American Soundex. It is a government web page rather than a specification, and it is worth being precise about that, because it changes what you can lean on it for.

What makes it usable anyway is that it publishes nine worked examples, and on the hardest of them it does something specifications almost never do: it names the answer it rejects. If H or W separate two consonants that share a code, the second one is not coded. Ashcraft is coded A-261, and the page states outright that it is not coded A-226. Being told what the wrong answer looks like is far more useful than being told what the right one is, because you can test against it.

That test is worth running. Three published implementations were checked against all nine examples for this page: two reproduce every one, and the third returns exactly A-226 for Ashcraft — the value the archives spell out in order to reject it. So the popular claim that everyone gets Soundex wrong is false, and the true version is narrower and more interesting: the one rule an authority felt the need to write a correction for is the one still being skipped.

It matters less often than you might fear. Across a 168,551-word English list, the two readings disagree on 211 words, about one in eight hundred, because only 293 words contain the pattern at all. But the disagreement is not random — it needs an H or a W sitting between two consonants of the same class, which is precisely what happens in Ashcraft, and in dishcloths, beachcombs and highchairs. When the rule applies it usually changes the answer.

The second rule that catches people is subtler still. The first letter is kept as a letter, but its code is still live, so a following consonant sharing that code is dropped. Pfister is P-236 rather than P-123, because the F is silent in exactly the sense the coding cares about: it shares the P's number. A version that starts coding only from the second letter gets this wrong every time.

What a Soundex code cannot tell you

It cannot tell you two names are related, only that they collide. Schmidt and Smith are both S-530, which is the system working exactly as designed on the immigrant surname variants it was built for — the C, the H and the D all vanish on the way. But Sanders, Saunders, Schneider and Snyder are all S-536 as well, and those are not the same name. A shared code is a reason to look, never evidence.

It also misses names it obviously should catch. Add one syllable and the code moves: Smithers is S-536, filed nowhere near Smith. Anything past the third digit is discarded, so long names are compared only by their opening, and two entirely different surnames sharing four opening consonants are indistinguishable.

The prefix rule is a filing convention rather than an algorithm, and applying it mechanically misfires on the archives' own examples. A surname beginning Van, Con, De, Di, La or Le should be coded both ways, since it might have been filed under either — but Deusen, which is the published example of a name with its prefix already removed, itself begins with De, and Lee begins with Le. No lookup table can tell a prefix from a first syllable. This page offers the second code as a second place to look and says what it is, rather than applying it silently.

One rule is genuinely undefined. Y is listed among the letters to disregard, but the two rules about what separates two same-coded consonants name only the vowels A, E, I, O and U on one side, and only H and W on the other. Y is in neither list, so the published rules do not say which way it behaves — and it changes answers: Pyfer is P-160 if Y separates and P-600 if it does not. Every implementation checked treats it as a separator, and so does this one, but that is a convention the ecosystem settled rather than something the archives state.

Finally, the whole scheme assumes English consonant patterns and a Latin alphabet. It has nothing to say about tone, about scripts it cannot read, or about the many ways a name can be misheard that do not happen to involve the consonant classes it knows. If what you want is how many edits separate two strings rather than whether they sound alike, that is a different question with a different answer, and the text similarity tool on this site measures it.

Why is it free?

Coding a surname is a few dozen lines of arithmetic, and it runs in your browser. There is no server in the loop, so there is nothing to bill for and no account to create.

Nothing is uploaded. The names you type never leave the tab, which matters more than usual here, because the reason to use a Soundex tool is almost always that you are researching a real family.