Fake user generator

Realistic people, generated in your browser, for the moment a test database needs to be full rather than empty. Pick a country, say how many you need, tick the details you want, and download a CSV or an Excel workbook of complete identities — names, ages, genders, birthdays, national identifiers, phone numbers, emails, usernames, passwords, postal addresses, coordinates, payment-test cards, employers, occupations, height, weight, blood type, browser user agent and more — that look like they came from the country you picked rather than from a random string generator.

Tick only what you need, in groups. A signup form under test wants a name, an email and a password; an address-validation change wants the postal fields and the coordinates; a KYC flow wants the identifier and the date of birth. Every field is a checkbox and the ones you leave unticked never reach the table or the file, which matters because an import that meets an unexpected column is a slow afternoon.

The country is the whole point of the tool. A form that accepts "90210" happily and then falls over on "M1 1AE" has a bug that only shows up in data shaped like the place it came from — a Canadian postal code has letters in it, a UK one is two blocks of unequal length, an Australian one is four digits and can start with a zero. Names, street conventions, region codes and phone formats all change together when you switch country, because that is how they change in real life.

Four countries carry a guarantee the rest cannot, and the dropdown says which. In the United States and Canada, every phone number comes from 555-0100 to 555-0199, the block set aside for fiction in the North American Numbering Plan. In the United Kingdom it is Ofcom's drama ranges — 07700 900000 to 900999 for mobiles, and the 496 0xxx landline blocks. In Australia it is the ACMA's 5550 1000 to 1999 in each area code. Numbers from these four are correctly formatted, they pass validation, and they cannot ring anybody, which matters the moment a fixture is loaded into something that sends SMS.

Every other country is marked as unreserved, and the warning is not decoration. Most regulators publish no range set aside for fiction, so a correctly formatted Indian, German or Japanese mobile number is one that could be in service. Those countries are here because the shapes are what you need to test against — a form that accepts a five-digit German postcode and then falls over on a four-digit Australian one has a bug you will only find with local data — but use them for format and validation testing, not for anything that dials, texts or emails. The four reserved countries are listed first for that reason, and the tool opens on one of them.

The same rule shapes the sensitive fields, and it is worth knowing exactly how. National identifiers come from blocks their issuers state they never allocate: US Social Security numbers use the 900-999 area range the SSA has never issued, UK National Insurance numbers use the never-allocated BG, GB, KN, NK, NT, TN and ZZ prefixes, and Canadian SINs begin with 8, which is not issued. Australia has no such block for its Tax File Number, so that column is simply unavailable there rather than filled with a number that either belongs to somebody or fails its own checksum — and for the same reason no national identifier is generated for any of the unreserved countries at all. Card numbers are the ones Visa, Mastercard, American Express and Discover publish for testing, not arbitrary Luhn-valid numbers in live issuing ranges. Websites are a subdomain of whatever email domain you choose, which defaults to this site's own. Money-transfer control numbers are not generated at all, because those release cash to whoever quotes them.

The email domain is yours to set, and it defaults to this site's own domain, which routes no mail at all. Nothing is at the other end, so a fixture that accidentally triggers a welcome email cannot reach a stranger. Type a real mail host such as gmail.com and the page says so plainly, because those addresses may belong to somebody. Each address carries its row number, so a thousand rows contain no duplicates even when two of them are called James Smith — a detail that matters the moment you import into a table with a unique constraint on email.

The same set comes back every time, because every value is computed from a seed rather than drawn at random. The seed is shown, it can be typed back in, and it fits in a bug report: "seed 481207, row 417" describes one person exactly, on any machine, forever. Re-generating with a fresh seed gives a completely different set of people in the same shapes.

Tick only the columns you need. A system under test that has no gender field does not want a gender column, and an import that fails on an unexpected header is a slow afternoon. The columns you choose are the columns in the table, the CSV and the workbook — but the people themselves do not change, so unticking a column and ticking it again brings back the same values rather than new ones.

Everything runs in this tab. The country you pick and the rows you generate are not sent anywhere, and the CSV and .xlsx files are assembled in the browser, which is why the tool works with the network off.

Open the generator → · All formats