Why I Build First for Feel
Most people start with code. I start with feel. If a generator doesn’t produce names I’d personally use in a game, it’s not ready. So I design each generator like a tiny instrument: it should have a tone (genre), a scale (letter rules), and a rhythm (syllable flow). When you press “Generate,” it should sound right—even before you read it twice.
My Three Layers (Vibe → Rules → Output)
I build every generator in three passes:
-
Vibe — What does this world feel like? Iron and ash? Moonlit forests? Neon glitch?
-
Rules — What letter shapes and syllable patterns match that vibe? (Hard K/Z for menace; L/M/N for warmth.)
-
Output — Batches of 20–50 names at a time, so I can judge the spread, not just a lucky hit.
Only after the vibe works do I care about options and UI.
The Word Vault (Seeds, Shards, and Shelves)
I keep a word vault for each theme, split into three “shelves”:
-
Roots (seeds): Core meaning chunks (light, storm, ash, oath, thorn, aur, val, noct).
-
Affixes (shards): Prefixes/suffixes that shape tone (mal-, aur-, -ion, -wyn, -rax).
-
Phonemes (sound tiles): Small sound units that define the mouthfeel (e.g., ae, th, ry, ul, kh, zy).
I label each item with tags like heroic, sinister, airy, metallic, ancient, sylvan, arcane. The engine weights those tags so a “dark forest” generator favors sylvan + sinister pieces while down-weighting metallic sounds.
Syllable Shapes (The Secret Sauce)
If there’s one thing that prevents junk output, it’s syllable shape rules.
I define a small grammar like:
-
C = consonant, V = vowel, L = liquid (l, r), S = sibilant (s, z, sh).
-
Hero pattern examples:
CV,CVL,CVCV(open, flowing). -
Villain pattern examples:
CVS,CLVC,CVSC(tighter, sharp).
Then I allow a controlled chaos: 70% picks from preferred shapes, 30% from wildcards for surprise. That gives variety without nonsense.
Weighted Choices (So Every Click Feels Intentional)
I don’t treat all pieces equally. I assign weights so the generator prefers certain sounds but still explores:
-
High weight: sounds that define the theme (e.g., ae, el, th for elves).
-
Medium weight: spices that mix well (e.g., -ion, -aris).
-
Low weight: rare accents for highlights (e.g., -yx, -qir).
This keeps 80% of outputs “on-model” and 20% pleasantly odd.
Blacklists, Whitelists, and Near-Duplicates
Two things ruin trust: bad collisions and lookalike spam.
-
Blacklist: Blocks awkward letter collisions (e.g.,
aain the wrong place,qwithoutuin certain genres), banned real-world terms, and repetitive double-consonants that stall pronunciation. -
Whitelist: Known-good combos I want to surface more often (e.g., -wyn, -riel, -var for high fantasy).
-
Near-duplicate check: If “Valion” exists, the engine downranks “Valyon,” “Valian,” etc., in the same batch.
Pronounceability Tests (The Whisper + Shout Rule)
Every good name passes two quick tests:
-
Whisper: If it dies in a whisper, it’s too crowded with consonants.
-
Shout: If it tangles in a shout, the rhythm’s wrong.
In code terms, I measure vowel spacing and consonant clusters. In human terms, I just say it out loud—fast.
Genre Filters (Locks That Keep the Vibe Safe)
I bind each generator to a genre profile:
-
High Fantasy: open vowels, liquid consonants, soft endings; titles allowed.
-
Dark Fantasy: muted vowels, fricatives, thorny clusters; ruin/rot lexicon.
-
Sci-Fi: clipped syllables, model codes, clean numerics (sparingly).
-
Mythic: grand suffixes, ceremonial particles, and permission for 4+ syllables.
Switching profile flips weights, allowed patterns, and the lexicon itself.
My Real Workflow (How I Use My Own Tools)
When I sit down to name a character, I don’t click once and quit. I run batches:
-
Generate 30. First pass: circle 3–5 that feel right.
-
Remix. Swap endings, try the same root with two moods (Aur- → Auriel vs Aurax).
-
Leaderboard test. Picture it on a UI: quest log, nameplate, or boss bar.
-
Out loud. Whisper. Shout. If it works both ways, it makes the shortlist.
I build the generator to mirror that loop—batch output, “favorite” buttons, quick remixes, copy-to-clipboard.
Tuning for Players (Options That Actually Matter)
I expose controls that change tone, not noise:
-
Mood slider: Heroic ↔ Sinister (shifts weights, syllable shapes, and endings).
-
Length: Short / Medium / Long (changes pattern allowance).
-
Formality: Commoner ↔ Noble (unlocks titles, adds ceremonial particles).
-
Culture hints: Elven, Orcish, Arcane, Rustic (swaps lexicon shelves).
-
Duplicate guard: “No similar names in this batch.”
No lorem-ipsum controls. Everything maps to a real rule.
Guardrails Against “AI Mush”
Even with smart rules, generators can drift. My guardrails:
-
Top-X caching: I pin proven winners so they recur as reference points.
-
Bad-combo decay: If users consistently skip a pattern, its weight falls.
-
Human curation: I routinely prune seeds that read like noise.
When I Ship
I ship when a random 50-name batch gives me 5+ names I would genuinely use in a real game. If I have to cherry-pick just to make a screenshot, it’s not ready.
Final Thoughts
A great generator isn’t a slot machine—it’s a guided instrument. With the right vibe, rules, and output flow, you can click into a name that feels inevitable, like it was waiting for your character all along. That’s the whole point: make it fast, make it fun, and make it feel right every single time.

I’ve been playing games like World of Warcraft, RuneScape, Dungeons & Dragons, and many others for over 20 years. With more than 10,000 hours spent gaming, I’ve gone through the process of choosing character names countless times—and I think we can all relate to spending half an hour (or more) just deciding on the right one.
I created this website to help people quickly find awesome character names for different games. My goal is to save you time and make the naming process easier and more fun.
Read more about me on my author page
