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.
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
| Field | What it holds |
|---|---|
| id | 1 up to the record count |
| name | One of 20 first names plus one of 20 last names: 400 possible names |
| first.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 |
| address | A number from 100 to 9999, one of 6 street names, then Testville |
| age | A whole number from 18 to 90 |
| active | true 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
| Typed | Result |
|---|---|
| 5 | Generates 5 records |
| 1000 | Generates 1000 records |
| 1e3 | Generates 1000 records |
| 0 | A message, nothing generated |
| 2.9 | A message, nothing generated |
| 5000 | A message, nothing generated |
| 1000abc | A 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
- Set Records, a whole number from 1 to 1000, and optionally a Seed.
- Press Generate data. A blank seed gets a new random seed each time, and the page shows the seed it used.
- Untick any field you do not need under Fields to include, and for SQL set the table name (people by default).
- 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 toolsUUID Generator
Generate 1 to 1,000 random v4 UUIDs, or time-based v1, or name-based v5 and v3 from a namespace and a name, and copy them. Repeats of v4 are very unlikely.
UUID v7 Generator
Generate 1 to 1,000 UUID v7 values that stay in creation order on one page, and decode a UUID to its version, variant and timestamp.
Lorem Ipsum Generator
Generate lorem ipsum placeholder text as paragraphs, sentences or words, up to 100 paragraphs or 5,000 words, with optional HTML paragraph tags.
Password Generator
Generate a random password of 8 to 128 characters from uppercase, lowercase, numbers and symbols, and see its entropy in bits. Can skip look-alike characters.
Random Number Generator
Random number generator: draw 1 to 10,000 numbers between a minimum and maximum you set, as whole numbers or decimals, with or without repeats, sorted or not.
JSON Formatter
Paste JSON to format it with 2 spaces, 4 spaces or tabs, minify it or sort its keys. A syntax error is reported with its line, column and a caret under it.