Skip to main content
CalcChef

Random Data Generator

Generate 1 to 1,000 fake people as JSON, CSV or a SQL INSERT: id, name, email, phone, address, age and active, each optional but id. Seeds repeat rows. How it works

Use the Random Data Generator

Leave blank for a fresh seed each time.

Fields to include (the ID is always included)

Synthetic test data only: emails use example.test, phones use reserved 555 numbers, and addresses use fictional Testville locations. This data is randomly generated and must not be treated as realistic demographic or production data.

Your test dataset will appear here.

Choose a record count, optionally enter a seed, and generate synthetic data.

About the Random Data Generator

The generator makes 1 to 1,000 fake person records, each with an id, a name, an email, a phone number, a street address, an age from 18 to 90 and an active flag, as JSON, CSV or one SQL INSERT statement. Any field but the id can be left out. The email, phone and address do not point at a real person: emails end in example.test, phone numbers run from (202) 555-0100 to (202) 555-0199 and addresses are in Testville. The same seed and record count give the same rows.

What each field holds

FieldWhat it holds
id1 up to the record count
nameOne of 20 first names plus one of 20 last names: 400 possible names
emailfirst.last plus a number from 1 to 99, at example.test, such as [email protected]
phone(202) 555-0100 to (202) 555-0199: 100 possible numbers
addressA number from 100 to 9999, one of 6 street names, then Testville
ageA whole number from 18 to 90
activetrue or false, with equal chance

The first 10 rows show in a table; Copy and Download give every row as JSON, CSV or SQL. An unticked field is left out of all three; the id always stays.

What the Records field does with a typed value

TypedResult
5Generates 5 records
1000Generates 1000 records
1e3Generates 1000 records
0A message, nothing generated
2.9A message, nothing generated
5000A message, nothing generated
1000abcA message, nothing generated

A value is never rounded or clamped: the field keeps what you typed and the message names the allowed range.

How to use this tool

  1. Set Records, a whole number from 1 to 1000, and optionally a Seed.
  2. Press Generate data. A blank seed gets a new random seed each time, and the page shows the seed it used.
  3. Untick any field you do not need under Fields to include, and for SQL set the table name (people by default).
  4. Copy or download the rows as JSON, CSV or SQL. After generating, Copy Share URL gives a link with the count, the seed and any field or table choice.

Frequently asked questions

How do I generate fake JSON data?
Set Records, press Generate data, then Copy JSON or Download JSON. The JSON is an array of objects with the keys id, name, email, phone, address, age and active, indented by 2 spaces. Copy CSV and Download CSV give the same rows with a header row, every value in double quotes.
How do I get the same random data again?
Type a seed. The same seed and record count return the same rows, and a smaller count with the same seed returns the first rows of the larger set. With a blank seed the page shows the random seed it picked, and Copy Share URL puts that seed and the count in a link. Opening the link fills the two fields; press Generate data to see the rows.
Can I use these emails and phone numbers in tests?
They are built for it. Emails end in example.test, and RFC 2606 reserves the .test top-level domain for testing DNS-related code. The phone numbers sit inside 555-0100 to 555-0199, the 555 range reserved for fictional use. A name is one of 400 combinations of common first and last names, so it can match a real person.
Are the names and emails unique?
No, only the id is. With 400 possible names, names repeat early: with the seed demo the first repeat is at row 55. Emails add a number from 1 to 99, which makes repeats rarer but not impossible: the same seed gives 984 different emails in 1,000 rows. Do not load the email column into a field that must be unique without removing the repeats first.
How do I generate SQL INSERT test data?
Generate the rows, then press Copy SQL or Download SQL. You get one statement, INSERT INTO people (id, name, ...) VALUES, with one bracketed row per record: text in single quotes with any quote inside doubled, numbers bare and active as TRUE or FALSE, which PostgreSQL and MySQL accept (a SQL Server bit column needs 1 and 0). Rename the table in SQL table name: letters, digits and underscores, up to 64 characters, not starting with a digit. SQL Server takes at most 1,000 rows in one INSERT VALUES list, the same as the record limit here.
Is the data realistic enough for analysis?
No. Ages are spread evenly from 18 to 90, there are 400 possible names and 6 street names, and the active flag is a coin flip. Use the rows to test layouts, imports and code, not to study a population.

Related Tools

View all tools