How to Name 50 NPCs Without Making Them Sound Identical

A busy market square in a fantasy town — cover art for a guide to naming fifty NPCs distinctly

Fifty NPCs, and four of them start with Th. A batch method for spreading sounds, lengths and structures so nobody blurs together.

You've used a D&D character name generator fifty times in a row for one session prep, and now you're staring at a tavern's worth of names that all somehow sound related. Thane, Thorvald, Thessaly and Thorin are all leaning on the same door. Corin, Rowin and Tamsin are quietly rhyming in a corner. Nobody did anything wrong on the individual-name level — every one of those is a perfectly good fantasy name. The problem only shows up when you look at all twenty, or fifty, at once.

Most advice about "confusing character names" is written for novelists and it stops at pairs: don't put Jane next to Jake, watch out for two names that look alike on the page. That's useful, but it doesn't scale. When you're populating a whole village, a merchant guild, or a dungeon's worth of cultists, the collisions aren't between neighbors — they're buried at slot 12 and slot 34, and you won't spot them by eyeballing the list once. You need an actual method, not a vibe check.

This guide gives you that method: four axes to distribute across a name set, a matrix template to fill in before you start generating names, a fully worked example of twenty residents of one town, and a checklist for auditing a list you've already written. It also covers something the writing-advice world mostly skips — why a name collision that's invisible on the page becomes obvious, and disruptive, the second you say the names out loud at a table.

The problem isn't one bad name — it's the set

Pull any single name out of the Ashford tavern scene above and read it in isolation. Thorvald. Fine name. Strong, Norse-flavored, easy to place. Thessaly. Also fine — a little more lyrical, faintly Greek. Neither name has a flaw. The flaw exists only in the relationship between them, and that relationship only becomes visible once you've got the full roster sitting in front of you.

This is the blind spot in almost every piece of naming advice aimed at fiction writers. The standard guidance is built around checking a name against the one or two other names it's most likely to sit next to on the page — don't confuse Jane and Jake, don't reuse first letters within a scene. That's a pairwise check. It works fine for a novel with a cast of six. It falls apart completely once you're generating a name set, because a name set doesn't have "neighbors" in any simple sense. Every name is a potential neighbor of every other name, at any point a player might meet two of them back to back.

A GM prepping fifty NPCs for a hex crawl, a homebrew campaign, or a single dense city district needs something a pairwise check can't give: a way to look at the whole set before it's finished and see the shape it's taking. Are twelve of them ending in -ith? Are eight of them exactly two syllables with stress on the first? You can't answer that by reading pairs in sequence. You need to look at the set as a set — which is exactly what the rest of this guide is about.

Why lists collapse — four silent collision axes

Names don't collide because they're similar in some vague overall sense. They collide along specific, countable axes, and once you know what those axes are, you can check a list against them directly instead of trusting your gut. There are four that matter, and letter count isn't one of them — "Kael" and "Thorn" have the exact same number of letters but a completely different rhythm when spoken. Length on the page is a red herring; these four are not.

  • First letter. The most obvious axis, and the only one most advice covers. Four names starting with Th- in one town reads as an accident because it is one — nobody plans four Th- names on purpose.
  • Syllable count. A list where everyone is two syllables reads as monotonous even if the letters are all different. Kael, Doran, Mira, Tybel, Yssa — five different first letters, and it still feels flat, because they're all clipped to the same length in the mouth.
  • Syllable structure (the CV pattern). Consonant-vowel shape matters more than most people expect. "Bram" (CVC) and "Doran" (CV-CVC) sit differently on the tongue than "Yssa" (V-CV) or "Amriel" (V-CV-CVC). Two names can share a syllable count and a first letter and still feel distinct if their internal shape is different — or feel like twins if it isn't.
  • Stress position. Where the emphasis falls — first syllable, second, last — shapes how a name lands when it's spoken. A run of names all stressed on the first syllable (KAY-len, THOR-vald, MOR-gan) creates a drumbeat sameness that no amount of letter variation fixes, because stress is what the ear tracks first.

These four axes are largely independent of each other, which is exactly why you need to track all four instead of picking one and hoping. A name can vary in first letter and still collide in structure and stress. The matrix in the next section exists to catch all four at once.

The distribution matrix — a working template

Before you generate a single name, sketch out the slots you need to fill and decide, in advance, what you want each axis to look like. This is the single biggest difference between this method and "just be careful" — you commit to a spread before names exist, instead of hoping a spread emerges by accident. Copy the columns below into a spreadsheet or a notebook page and fill it as you go.

Slot # First letter Syllable count Syllable structure (CV pattern) Stress position Role/register
1A2V-CVC1stElder
2B1CVC1stLaborer
3C3CV-CV-CVC2ndMerchant
4D2CVC-CVC1stGuard
5E2V-CV2ndChild
6F1CCVC1stInnkeep
7G2CV-CVC1stFarmer
8H3CV-CV-CV2ndNoble
9I2V-CVC2ndScribe
10J1CVC1stLaborer
11K2CVC-CVC1stGuard
12L2CV-CV1stMerchant
13M3CV-CVC-CV2ndElder
14N1CCVC1stFarmer
15O2V-CV1stChild
16P2CV-CVC2ndGuard
17R3CVC-CV-CV1stNoble
18S1CVC1stLaborer
19T2CV-CVC1stInnkeep
20W2CVC-CV2ndMerchant

Notice the design decisions baked into that template. First letters walk roughly through the alphabet instead of clustering — nobody gets stuck on Th- four times. Syllable count alternates between 1, 2 and 3 in a rough 40/40/20 mix rather than settling on a default. Stress position leans heavily toward first-syllable (because that's the natural default for fantasy-coded names) but breaks the pattern often enough — roughly every third or fourth slot — that no one stretch of five names shares the same beat. You don't have to match this exactly; the point is that you decide the shape before you decide the names.

How many repeats per axis is actually safe

You don't need every value to be unique — that's neither possible nor desirable at fifty names, since English only has 26 first letters and real name sets repeat plenty. What you need is a cap. A workable rule of thumb: no more than two names sharing a first letter within any run of ten, and no more than two names in a row sharing an identical syllable count. Both rules are cheap to check against the matrix and expensive to fix after the fact, which is exactly why the matrix goes first.

A worked example — naming all 20 residents of one town

Here's the matrix in action, applied to a full cast: the twenty residents of Ashford-on-Reed, a river trading town where humans and half-elves have lived side by side for three generations. This is the kind of set you'd build with a village name generator for the settlement itself and then populate name by name — and it's the core example of this guide, so we're walking through every single entry and explaining exactly why it doesn't blur into the one before it.

  1. Aldric Thornwell — the reeve. Two syllables, stress on the first (AL-dric), CVC-CVC structure. He opens the list, so there's nothing yet to contrast against — but every choice from here forward is measured against him.
  2. Bettan — Aldric's wife. Also two syllables and first-syllable stress, but the structure shifts to CVC-CV and the first letter moves from A to B. Sharing register with Aldric (they're a married pair of the town's leading family) is intentional; sharing phonetic shape with him would not be.
  3. Corin Vasse — the harbor master. Drops to a first letter three steps further into the alphabet, keeps two syllables but shifts stress to CO-rin's front-loaded short vowel against Bettan's flatter BET-tan — a subtler distinction, reinforced by the surname Vasse breaking the -well/-tan pattern.
  4. Ren — Corin's teenage runner. One syllable, hard stop. After three two-syllable names in a row, a single-syllable name resets the ear immediately. This is the single biggest lever in the whole set: length variation reads louder than any other axis.
  5. Ysolde Fennimore — a half-elven weaver. Three syllables, second-syllable stress (i-SOL-de), and a first letter (Y) that hasn't appeared yet. After Ren's one-beat name, a three-syllable name creates a second sharp contrast — short, then long.
  6. Dobb — a laborer at the docks. Back to one syllable, CVCC structure this time (a closed, blunt cluster) rather than Ren's open CVC. Two one-syllable names exist in the set, but they're five slots apart and structurally distinct, so they don't read as an echo.
  7. Maren Oswick — the miller. Two syllables, stress on the first, CV-CVC — but the round, open vowels (Maren, not Marn or Morne) keep it from echoing Aldric despite the shared stress pattern. Distinguished mainly by first letter and by the -en ending, which nothing else in the list yet uses.
  8. Iavo Kester — a traveling priest, an outsider to the town. Two syllables but unusual stress placement for this set — IA-vo leans on a diphthong rather than a clean consonant start, immediately marking him as speaking a different cadence than the locals, which doubles as a character cue.
  9. Thane — the town's one deliberate Th- name, a retired soldier. Single syllable, hard consonant cluster. Everything about him — length, sound, bluntness — is built to contrast with Iavo immediately before him. This is also the only Th- name allowed in the set; a second one would trip the collision check below.
  10. Perrin Adale — Thane's grown daughter, runs the forge. Two syllables, first-syllable stress, but the double-R and short vowel give PER-rin a harder attack than any of the two-syllable names before it — distinguished by texture as much as by letter or count.
  11. Ossa — an elderly herbalist. Two syllables, V-CV structure, second-syllable-light stress that trails off rather than landing hard. After a run of names with crisp closing consonants, Ossa's open, vowel-ending shape stands apart on sound alone.
  12. Bram Holt — the town smith (unrelated to Perrin's forge — Ashford has two). One syllable name plus a one-syllable surname, both closed CVC — deliberately blunt and symmetrical, which after Ossa's open vowels reads as a hard cut back to consonants.
  13. Elowen Tarris — a half-elven scholar renting a room above the tavern. Three syllables, stress on the first (EL-o-wen), distinguishing her from Ysolde's earlier three-syllable, second-stress pattern — same length category, different rhythm entirely.
  14. Codd — the tavern's cook. One syllable, hard double-D close. Short names have appeared four times now (Ren, Dobb, Thane, Bram) but each has a distinct vowel and closing consonant, so the ear never quite settles into expecting the pattern.
  15. Sabrey Voss — a caravan trader passing through. Two syllables, second-syllable stress (sa-BREY), the -rey ending giving it a lift none of the previous names have — deliberately the most "foreign-sounding" name in the set, since she's not a resident.
  16. Ulric Payne — the town's magistrate. Two syllables, first-syllable stress, CVC-CVC — structurally close to Aldric from slot one, which is fine because they're fourteen names apart and unlikely to appear in the same breath, but worth noting if you ever compress the list down to a shorter scene roster.
  17. Tamsin Reyes — the miller's apprentice. Two syllables, first-syllable stress again, but the -amsin cluster and the surname Reyes give it a different mouthfeel from Ulric immediately before it — texture and ending sound doing the differentiating work here, not stress or count.
  18. Old Fenner — a name used only as a nickname/epithet, no given first name — the town's oldest resident, whom everyone simply calls by his epithet. Included deliberately to show that not every slot needs a "normal" name; an epithet-only NPC is its own kind of contrast against seventeen properly structured names around it.
  19. Wenna Ashcott — keeper of the shrine. Two syllables, first-syllable stress, W- opening (the only W- name in the set) with a surname that echoes the town's own name (Ashford) without repeating it outright — a small worldbuilding touch, not a phonetic risk.
  20. Griss — the last entry, a dockside enforcer working for Corin. One syllable, harsh consonant cluster, closing the list on the same short, blunt note it opened its short-name thread on with Ren — bookending the set rather than trailing off.

Read the twenty names aloud in order. What you should notice is that no two adjacent names share the same length, letter and stress simultaneously — and that's the entire trick. Individually, several of these names would sit comfortably next to each other in a different list. It's the ordering and the deliberate spacing of collisions that keeps this set from blurring, and that's a property of the set, not of any single name in it.

Name Syllables Stress First letter Why it differs from the previous name
Aldric Thornwell21stAOpens the set — nothing to contrast yet
Bettan21stBStructure shifts CVC-CVC → CVC-CV; letter moves on
Corin Vasse21stCShorter front vowel; surname breaks the -ell/-tan pattern
Ren1RDrops to one syllable after three two-syllable names
Ysolde Fennimore32ndYJumps to three syllables — long after short, sharp contrast
Dobb1DSecond one-syllable name, but closed CVCC vs. Ren's open CVC
Maren Oswick21stMRound open vowels avoid echoing Aldric's stress pattern
Iavo Kester22nd*IDiphthong opening breaks the consonant-start habit
Thane1TThe set's only Th- name; blunt cluster contrasts Iavo
Perrin Adale21stPHarder double-R attack than earlier two-syllable names
Ossa2trailingOOpen, vowel-ending shape after a run of closed consonants
Bram Holt1+1BBlunt symmetrical CVC pair cuts back from Ossa's open vowels
Elowen Tarris31stESecond three-syllable name, but stressed opposite to Ysolde
Codd1CFourth short name, but distinct vowel/close from the others
Sabrey Voss22ndSThe set's most "foreign" ending sound, marking her as an outsider
Ulric Payne21stUStructurally close to Aldric, but 14 slots removed
Tamsin Reyes21stTCluster and surname differ in mouthfeel from Ulric
Old FennerEpithet-only name — a deliberate break in the pattern itself
Wenna Ashcott21stWOnly W- name in the set; surname echoes the town without repeating it
Griss1GCloses on a short, blunt note — bookends the set with Ren

*Iavo's stress is unusual for this set — it leans on its opening diphthong rather than a hard first-syllable landing, which is exactly why it's placed to mark him as an outsider.

Auditing a list you already wrote

Not every list starts with a matrix. Plenty of the time you'll have fifty names already sitting in a document from three separate prep sessions, and you need to check it for damage before tonight's game. Run it through these four passes in order — each one takes about two minutes on a list of fifty.

Check What to look for Fix if found
First-letter spread Sort alphabetically. Any letter with 4+ names is a spike. Rename one or two to a rarer letter (V, Y, O, U are usually underused).
Syllable-count spread Tally counts across the whole list. A default (usually 2) claiming 70%+ is a flat list. Convert a handful to one syllable (clip a name) or three (add a title/epithet).
Ending-sound clusters Write out the last 2–3 letters of every name. Look for repeated tails: -in, -ar, -eth. Swap the coda only — keep the root, change the ending (Corin → Corwen).
Read-aloud stress collisions Read the full list aloud in order, at speed. Note where your tongue stumbles or two names blur into one. Shift the stress on one of the pair (Kael → Kaelen moves the beat back).
Length uniformity Scan for stretches of 5+ names that are all the same rough length. Drop in a one-syllable name or a three-syllable name to break the run.

That fourth row — reading the list aloud — is the one most desk-bound audits skip, and it's the one that catches the most real collisions. A list can pass every written check and still fail out loud, which is exactly the subject of the next section.

Why this breaks differently out loud than on the page

Every piece of naming advice built for novelists leans on something a tabletop GM doesn't have: a reader looking at the word on the page. On paper, two similar-sounding names can still be told apart by their spelling, by the surrounding sentence, by the fact that the reader can flip back a page to check. K.M. Weiland's well-known advice calls this the "silhouette" of a word on the page — Cora and Quora look different enough in shape even if they'd sound close spoken aloud.

None of that safety net exists at a game table. A GM says a name once, out loud, usually while also managing initiative, a map, and four side conversations. The players never see it spelled. There's no silhouette, no punctuation, no chance to glance back at a character sheet mid-scene without breaking flow. The only thing carrying the name across the table is sound — and specifically, rhythm and stress, because that's what working memory actually holds onto.

Working memory holds roughly three to four discrete chunks at once. If two NPC names share the same syllable count and the same stress position, they don't register as "two different three-letter-different names" the way they might on a page — they register as the same slot, filled twice. A player who's just met "Thane" and "Thorvald" in the same scene, spoken and never spelled, has no reliable way to keep them apart afterward, because the two names occupy the identical rhythmic shape in memory. This is the real reason the collision problem is worse at the table than in a manuscript, and it's also why stress position earns a whole column in the matrix above — it isn't a nice-to-have, it's the axis that actually determines whether a name survives being spoken.

Quick fixes without renaming half your list

Finding a cluster during an audit doesn't mean starting over. Most fixes are single-point edits that leave the rest of the name — and the character's established identity — intact.

  • Shift the stress, not the name. Kael becomes Kaelen; the root survives, but the beat moves from a single hard stress to a softer two-syllable fall. Useful when two names share a root sound but you don't want to lose the resemblance entirely (siblings, a dynasty).
  • Swap the coda, keep the root. Corin and Rowin share an -in ending; changing one to Corwen keeps the recognizable front half and kills the rhyme. This is the fastest fix on the list — it touches one or two letters.
  • Split by register instead of by sound. If two names genuinely can't be told apart phonetically without a rewrite, split them by social role instead. A common laborer can carry a clipped, informal version of the same root a noble uses in full — which is exactly the mechanic a medieval name generator leans on for era-appropriate nicknames, and it's covered in more depth in the next section.

Building the set by role and hierarchy, not just phonetics

Phonetic spread solves collisions between names that have no other reason to differ. But most NPC sets aren't a flat crowd — they have a lord, a garrison, merchants, servants. Once a set has social structure, that structure gives you a second axis of differentiation that costs nothing extra to use, and it's the one most matrices miss because it isn't strictly phonetic.

Take the lord of a keep: Aldric Thornwell, full name, surname carrying the estate. His stable hand might be "Ald" — a clipped, informal short form of the exact same root. Same origin, same sound family, but nobody at the table will mistake the lord for the stable boy, because the register does the separating that the phonetics alone couldn't. A village name generator is good at producing the settlement and its full roster of surnames; layering role on top — full name and title for nobility, first-name-only or a trade-based epithet for servants and laborers — is what turns a phonetic list into a set that also reads as a social hierarchy at a glance.

This is also where a medieval name generator earns its keep specifically: era-accurate nicknames and trade bynames (a name plus "the Miller," "the Younger," a patronymic) give you a second, free differentiator for lower-register NPCs without having to invent an entirely new phonetic identity for each one. Two farmhands with near-identical first names stop being a problem the moment one of them is "Dobb at the mill" and the other is just "Dobb" — context and role finish the job sound alone couldn't.

A prep template for your next 50 NPCs

The fastest way to avoid the whole problem is to decide your quotas before you generate a single name, rather than auditing after the fact. For a set of twenty, a workable starting quota looks like this:

  • No more than 4 names sharing any single first letter.
  • Syllable mix roughly 40% one-syllable, 40% two-syllable, 20% three-syllable.
  • No more than two names in a row sharing the same stress position.
  • At least one epithet-only or nickname-only NPC to break the "proper name" rhythm entirely.
  • Role assigned before the name, so register can do differentiation work the phonetics don't have to.

A D&D character name generator is the fastest way to fill those quotas once they're set — generate in batches by race or culture, and reject any output that would push a column over its cap, rather than accepting names in the order they come out. Filling the matrix top to bottom, slot by slot, takes about the same time as generating fifty names with no plan at all — the difference is that the plan means you won't be auditing a collision at the table three sessions later.

Try it

Run the matrix against a real batch with the D&D character name generator — generate by role and check first letter, syllable count and stress before you commit a name to your notes.

FAQ

How many similar names is too many in one scene?
More than two names sharing both syllable count and stress position in the same scene is where players start losing track. Two is usually fine, especially if the names differ elsewhere (first letter, role); three or more sharing the same rhythmic shape is where a table audibly starts asking "wait, which one?"

Should NPC names in the same town sound related or different?
Both, deliberately layered. A shared root or convention (same regional style, same handful of common surnames) makes a town feel cohesive. Within that shared convention, the four-axis spread — letter, syllables, structure, stress — is what keeps individual residents distinguishable. Related doesn't have to mean identical.

What's the fastest way to check a name list for collisions?
Read the whole list out loud, at normal speaking pace, in the order you'd actually introduce the names at the table. Written checks (sorting by letter, tallying syllables) catch structural spikes; reading aloud catches the stress collisions those written checks miss.

Do fantasy names need different first letters like real character names?
The same principle applies, but fantasy names have more room to repeat a first letter safely, because fantasy naming conventions already lean on a smaller phonetic palette (a lot of K, TH, and V sounds) than real-world names do. The cap of roughly two shared first letters per ten names still holds — it's just easier to hit that cap by accident in a fantasy setting, which is exactly why the matrix is worth using deliberately instead of by feel.

Sources and further reading

Generators from this guide

Put any of this into practice — every tool below is free and needs no sign-up.

← All naming guides