Back to blog
4 min read

How to Generate Realistic Test Data

Building or testing software almost always means filling it with data first. Real user records are the worst possible choice for that — they are private, regulated, and rarely cover the weird edge cases. Generated fake data is faster, safer, and more thorough.

Why not just use real data

  • Privacy and compliance. Copying production users into a test database puts

real personal information somewhere it should never be.

  • Coverage. Real data clusters around the common case. You need the long name,

the apostrophe in the surname, the address with no postal code — the rows that break naive code.

  • Volume. You can mint ten thousand rows in a second; you cannot ask ten

thousand real users to sign up.

What good test data looks like

Good fake data is realistic without being real: plausible names, well-formed email addresses, valid-looking phone numbers and IDs. It should pass your format validation, so you are testing your logic and not your random-string generator.

Generate it in seconds

The fake data generator produces names, emails, addresses, and other fields ready to paste into a seed script or a spreadsheet. Pick how many records you need and copy the result.

For more specialised values, reach for the dedicated generators:

  • Document numbers that pass checksum validation — CPF, CNPJ, SSN and more —

from the tax ID generator.

  • Unique identifiers for primary keys and correlation IDs from the

UUID generator.

  • API keys and secrets for testing auth flows from the

API token generator.

A practical workflow

  1. Generate a batch of base records (names, emails) with the

fake data generator.

  1. Add valid document numbers from the

tax ID generator where your schema needs them.

  1. Assign each row a UUID as its primary key.
  2. Paste it all into your seed file or import it into a test database.

It never touches a server

Every value is generated locally in your browser, so nothing you create — and nothing about what you are building — is sent anywhere. That is exactly the property you want from a tool you reach for while wiring up a new system. (More on why that matters in why client-side tools are more private.)