99tools

Fake Data Generator

runs in your browser

Generate realistic test data as a table, JSON, CSV or SQL, with every phone number, address and card drawn from officially reserved ranges.

Columns

7 chosen
As
  • Email: example.com and friends, reserved by RFC 2606 and never deliverable.
  • Phone: Ofcom's drama range, which is never allocated to anyone.

Preview

10 rows
Row numberFull nameEmailPhoneCityPostcodeCreated at
1Omar Abaralucia.zielinski@test+44 7700 900267GlasgowZL49 2KG2021-06-02T09:46:17Z
2Eleanor Ashworthjasper.nakamura@test+44 7700 900226LeedsTF72 5UZ2021-10-05T07:24:14Z
3Clara Rasmussenmarcus.blackwood@example.org+44 7700 900068CoventryZS40 3RY2026-09-26T20:56:06Z
4Alice Underwoodgrace.underwood@example.net+44 7700 900971NewcastleYD97 2KD2022-04-19T12:31:04Z
5Silas Underwoodfelix.carmichael@example.org+44 7700 900821ManchesterOI12 2BH2024-08-04T12:31:12Z
6Silas Delacroixzara.yamamoto@test+44 7700 900010YorkIS86 1GW2025-10-07T02:08:24Z
7Mabel Ezeursula.fairweather@test+44 7700 900866CoventryJH21 3YZ2021-04-03T00:47:23Z
8Esme Carmichaelsofia.fairweather@test+44 7700 900546EdinburghGN76 8BF2024-08-01T07:25:52Z
9Oscar Groveridris.nakamura@example.com+44 7700 900955ManchesterDB81 2SH2024-04-16T22:04:06Z
10Dara Quinteroamara.lindqvist@example.org+44 7700 900720YorkZA86 2KP2023-05-20T03:17:57Z

The same columns, count and seed always produce the same data, so a fixture stays stable between runs. Press New data for a different set.

about this tool

Nothing here can reach a real person

Test data escapes. It ends up in screenshots, in bug reports, in a staging database someone points at a live email service, and occasionally in a mailshot that should never have gone out. So every value that could collide with something real is drawn from a range that was set aside for exactly this purpose.

Email addresses use example.com and its siblings, reserved by RFC 2606 and guaranteed undeliverable. Phone numbers come from 07700 900000 to 900999, which Ofcom reserves for use in television and film precisely so that nobody gets called. IP addresses use the documentation ranges from RFC 5737 and the 2001:db8:: prefix from RFC 3849. National Insurance numbers use the QQ prefix, which is never issued. Card numbers are built on the prefixes the payment schemes publish for testing.

That is a deliberate choice over generating something that merely looks plausible. A plausible phone number belongs to somebody.

The checksums are real

An IBAN here passes the mod-97 check, and a card number passes Luhn. Data that fails validation is useless for testing validation: you cannot tell a working form apart from a broken one if every value is rejected either way.

The bank code inside each IBAN is ZZ followed by letters, which no real institution uses, so the number is structurally valid and cannot address an actual account.

The same seed gives the same data

Generation is seeded rather than random, so the same columns, row count and seed always produce the same set. That matters for a fixture: a test that depends on the third row still works tomorrow, and a colleague running the same settings sees the same thing. Press New data when you want a different draw.

Four ways out

The table is for looking at. JSON and CSV are for loading somewhere. SQL produces a single INSERT statement, with numbers and booleans left unquoted and apostrophes escaped, so a name like O'Brien does not break the statement.