Random Names for Test Data

Generate believable, fictional person names for fixtures and form tests, and find out which real-world name shapes your validation still rejects.

Updated

Random names for test data are fictional person names used to fill fixtures, seed databases and exercise form validation. They find defects that placeholders like John Doe cannot, because real names carry apostrophes, hyphens, spaces inside the surname, accented letters and unusual lengths. Every name here is drawn from a locale name pool, describes no real person, and exports as CSV, JSON or SQL.

In short

A test name is only worth having if it can make your form fail. Placeholder names pass every rule you wrote, which is exactly why they never find the defect that a customer named O'Brien finds on the first day.

  • In 20,000 sampled draws, 100% of Spanish surnames contained a space and the longest full name ran to 48 characters — a single 20-character surname column is wrong for Spain, not merely tight.
  • Japanese records came out as short as 3 characters including the space, so a five-character minimum-length rule rejects real names.
  • 43.7% of Dutch surnames in the sample contained a particle such as van or van der, which breaks any code that splits a full name on whitespace.
  • Names are drawn from locale pools and paired at random, so a generated name describes no particular person; the JSON API accepts a seed, so a fixture set can be committed and regenerated exactly.
  • Albert D. Reynolds
  • Darin W. Ledner
  • Craig J. Ryan

Almost every test suite contains the same four names: John Doe, Jane Smith, Test User, and something that began life as a keyboard mash. They are excellent at exactly one thing, which is being obviously fake, and useless at the thing test data exists for, which is failing. A name field that survives "John Doe" has proved only that it accepts seven ASCII letters and a space.

The names that actually break software are ordinary. They carry an apostrophe (O'Keefe), a hyphen (Rosenbaum-Hansen), a space inside the surname (van der Heijden), an accented letter (Rolon written properly), two surnames rather than one (Guillen Guardado), or a script that is not Latin at all. None of that is exotic. Each one is somebody's real legal name, and each has a long history of being rejected by forms, truncated in columns, mangled in derived email addresses and filed under the wrong letter.

Pick a country and a count above and this page returns names shaped like that country's names, with copy, CSV and JSON export on every batch. It is the same engine behind the random name generator, which returns a full profile — address, phone, email — around each name instead of the name alone. 38 countries are available, so a suite that has to work in Japan or Spain can be tested with names from Japan or Spain rather than with English names in a Japanese database.

One thing a generated set deliberately does not give you is hostile input. There are no zero-width joiners here, no 500-character strings, no SQL fragments dressed up as a surname; that material belongs in a dedicated fuzz list, and one is linked in the references below. What this covers is the realistic middle of the distribution, which is where production defects actually live — nobody's customer is named with a right-to-left override, but plenty of them are named O'Brien.

Which name shapes actually appear, measured

Rather than assert that international names are awkward, we measured the pools this generator draws from. The method: 20,000 given-name plus surname pairs per locale, generated with faker 9.9.0 on 22 August 2026, counted for the characteristics that tend to break validation. "Full name length" below is the given name, one space, and the surname — the middle initial this site adds for some locales is excluded so the numbers describe the name itself.

Spanish is the row worth reading twice. Every single surname drawn contained a space, because the Spanish convention carries two surnames, the paternal followed by the maternal. The longest record in that sample ran to 48 characters. A schema with one 20-character surname column is not tight for Spain; it is incorrect for it, and the failure shows up as silent truncation rather than as an error.

Japanese fails in the opposite direction: three characters, including the space. Minimum-length rules of five or six characters are a common anti-spam heuristic on name fields, and they reject real Japanese names outright. Dutch surnames carry a particle — van, de, van der — in 43.7% of draws, which breaks the very common shortcut of splitting a full name on whitespace and treating the last token as the family name.

Turkish is the row that catches comparison logic rather than storage: 65.6% of the sampled names contained a dotted or dotless I. Turkish uppercases "i" to "I" with a dot and lowercases "I" to a dotless one, so a case-insensitive comparison that follows the machine's locale can decide that two spellings of the same name do not match. In JavaScript that is the difference between toLowerCase, which ignores locale, and toLocaleLowerCase with a Turkish tag, which does not.

And English is the row that flatters you. Zero non-ASCII characters in 20,000 draws, which means a fixture set built entirely from English names never exercises encoding, normalization or font fallback at all. Whatever else you do, do not let en-US be the only locale your name handling has seen.

Name characteristics by locale, measured over 20,000 draws each

LocaleApostropheHyphenNon-ASCIISpace in surnameFull name length
United States (en)1.5%5.1%0%0%7-32 chars
France (fr)0.1%0%27.2%1.8%7-24 chars
Spain (es)0%0%55.8%100%13-48 chars
Germany (de)0%0%9.9%0%6-25 chars
Netherlands (nl)0%0%2.3%43.7%6-27 chars
Brazil (pt-BR)0%0%25.4%0%8-26 chars
Turkey (tr)0%0%79.9%0%7-24 chars
Japan (ja)0%0%100%0%3-7 chars

Sampled from this site's own generator pools (faker 9.9.0) on 22 August 2026. Full name length counts the given name, one space and the surname. An upstream locale release will move these numbers; the method is stated so you can re-run it.

What each shape tends to break

The value of a varied fixture set is that each shape maps to a distinct class of defect, so a small set chosen on purpose beats a large one chosen at random. The table below pairs the shapes above with the failure they usually surface first, using examples that genuinely appear in the pools this page generates from.

Two of these deserve emphasis because they are so often missed. Accented characters interact with Unicode normalization: the same name can be encoded with a precomposed character or with a base letter plus a combining accent, and the two are visually identical but not equal as byte strings, so a lookup can fail against a value that looks correct on screen. And a name that is short is as dangerous as one that is long — length validation written as a minimum is rarely tested against the shortest real input.

Name shapes and the defects they surface

ShapeExample from the poolsWhat it tends to break
ApostropheO'Keefe, D'AmoreString escaping, letters-only validation patterns, search that strips punctuation, CSV round-trips
HyphenRosenbaum-HansenLetters-only rules, splitting a name on the first hyphen, line breaking in narrow columns
Space inside the surnamevan der Heijden, Guillen GuardadoSplitting a full name on whitespace, sort keys, the assumption that the last token is the family name
Accented lettersRolon, Sahin, HudavendigarByte-length limits, Unicode normalization, ASCII-only slugs and derived email addresses, case-insensitive comparison
Non-Latin scriptJapanese and Cyrillic recordsFont fallback, byte-counted column widths, initials logic, any pattern written as A-Z only
Very shortA 3-character Japanese recordMinimum-length rules, the two-characters-per-part assumption
Very longA 48-character Spanish recordColumn widths, UI truncation, email local parts, fixed-width label layouts

Every example is a value these pools genuinely produce — the English surname pool alone contains 956 distinct hyphenated surnames in a 20,000-draw sample.

Committing a fixture set instead of regenerating it

A suite that generates fresh random names on every run has a failure mode of its own: when it fails, you cannot reproduce it. The fix is to generate once and commit the result, which is why the public JSON API accepts a seed. The same seed and the same parameters return byte-identical records, so a fixture file can live in the repository beside the test that reads it.

A request looks like https://fakenamely.com/api/v1/name?count=25&country=jp&seed=checkout-suite-v3 — no key, no sign-up, up to 100 records per call, and format=csv if you would rather have columns than JSON. For a larger set, the bulk exporter goes to 100,000 rows and writes CSV, JSON or SQL INSERT statements directly.

Be aware of the boundary here, because it is the sort of detail that quietly wastes an afternoon: only the API takes a seed. The Generate button on this page mints a fresh random seed each time by design, and the sample rendered when the page loads rotates daily. If reproducibility matters, take the data from the API.

How these names are generated

An identity here is a pure function of a seed string. The seed is hashed to a 32-bit integer with cyrb53, that integer seeds an isolated pseudo-random generator, and the field builders consume it in a fixed order — prefix, given name, middle name, surname, then everything downstream. Nothing reads the clock or a global random source, which is why the same seed produces the same name on our server and in your browser.

The pools themselves come from Faker's locale datasets: lists of given names and lists of surnames, per language. The two are drawn independently, so the pairing is a coincidence of the draw rather than a record copied from anywhere. No registry, electoral roll, phone book or leaked dataset is used, and no name here is a lookup of a real person.

Middle names are the one place where a fallback used to show. Faker ships middle-name data for only a few locales, so for the rest the request resolves through English — which on a Latin-script name is merely unusual and on a non-Latin one is incoherent. Japanese profiles were rendering as a Japanese given name and surname with an English middle initial wedged between them, and Japanese names have no middle name at all. The generator now drops a middle name whose script does not match the given name, while keeping the genuine ones: Russian and Ukrainian ship real patronymics, so those profiles still carry a middle name, written in Cyrillic like the rest of the record.

One limit to know before you build assertions on it: names are assembled in Western order, given name first, even for countries that conventionally write the family name first. The given name and surname are always correct in their own fields — the name API returns each part separately — so if your test depends on order, compose the display string from those rather than parsing the full name. The complete list of what is real, what is invented and what is known to be wrong lives on the methodology page.

What this data is for, and what it must never be used for

These names exist to make software fail in a test environment rather than in front of a customer. That is a narrow purpose, and it has an edge worth stating plainly.

Appropriate uses

  • Seeding fixtures, demo databases and staging environments
  • Exercising form validation, encoding, sorting and layout with realistic input
  • Sharing a dataset across a team without moving real personal data into a lower environment
  • Filling a name field on a service where a real name is not required and you would rather not give one

Never acceptable

  • Impersonating a real person, or presenting a generated name as your own where your real identity is legally required
  • Identity verification, KYC, credit, employment, medical or any government process
  • Creating accounts to evade a ban, a trial limit, a rate limit or a service's terms
  • Deceiving an individual — reviews, dating profiles, harassment under a false name, or manufacturing a persona to gain someone's trust
  • Producing any document, record or credential intended to pass as genuine

A generated name identifies nobody, which is what makes it safe as test data and useless as an identity. Full terms are on the terms of use page; what the data is and is not lives on the methodology page. Terms of use · Data and methodology

Frequently asked questions

Are these real people's names?+

No. Given names and surnames are drawn independently from locale pools, so the pairing is produced by the draw rather than copied from any register of people. Common names are common precisely because many people share them, so a generated name can coincide with a real person's — that is a coincidence, not a lookup, and the record around it describes nobody.

Why not just use John Doe or lorem ipsum for names?+

Because they only exercise the easy path. A placeholder name is short, ASCII, has exactly two parts and no punctuation, so it passes every validation rule, fits every column and sorts predictably. The defects in name handling live in apostrophes, particles, accents, two-part surnames and unusual lengths, and a placeholder has none of those. Use them as a label, not as test coverage.

Do the names match the country I pick?+

Yes for the name itself: a Japanese profile returns a Japanese given name and surname in native script, not a romanised English name. Two caveats. Names are assembled in Western order, given name first, even where the local convention is family name first, so use the separate first and last fields if order matters. And the derived email and username strip non-Latin characters, so for those locales they fall back to a Latin word pair instead of being name-derived.

Can I generate the same names again tomorrow?+

Through the API, yes: pass a seed and the same seed with the same parameters always returns byte-identical records, which is what makes an API-generated fixture safe to commit. The Generate button on this page deliberately does not work that way — it mints a fresh random seed on every press — and the sample shown when the page loads rotates once a day.

How many names can I generate at once?+

The generator on this page does batches with copy-all and CSV or JSON download. The JSON API returns up to 100 records per call with no key and no sign-up. For a large seed file, the bulk exporter goes to 100,000 rows and writes CSV, JSON or SQL INSERT statements you can load straight into a test database.

Will these names test my Unicode handling?+

Partly, and honestly it depends on which locales you draw from. Japanese, Russian, Ukrainian, Greek, Hebrew and Thai records are entirely non-Latin; Turkish, Spanish, French, Portuguese and German carry accented Latin characters. But an English-only set contained zero non-ASCII characters across 20,000 draws, so it tests nothing at all in that direction. For deliberately hostile input — zero-width characters, bidirectional overrides, emoji, enormous strings — use a fuzz list; one is linked in the references.

Is it okay to use a generated name to sign up for a service?+

For a service you are testing, or one where a real name is not required and you would rather not hand one over, that is what the tool is for. It is not okay where a real identity is legally or contractually required, to impersonate a real person, or to open accounts that evade a ban, a trial limit or a service's terms. A generated name identifies nobody, which is exactly why it cannot stand in for an identity.

More name use cases

Related pages

More generators

Sources

  1. Patrick McKenzie — Falsehoods Programmers Believe About NamesKalzumeus Software
  2. W3C Internationalization — Personal names around the worldW3C
  3. Unicode Standard Annex #15 — Unicode Normalization FormsUnicode Consortium
  4. Big List of Naughty Strings — deliberately hostile input for text fieldsMax Woolf
  5. Faker — the locale name, street and place datasets this site generates fromFaker (MIT)
  6. FakeName — Data and Methodology: sources, real-versus-invented fields, known limitsFakeName

We use cookies for analytics and ads to keep this generator free. See our Privacy Policy.