Guides › Data
Making test data for a demo or test system
A demo, a test environment or a trial import needs data that looks real, and copying real customers into it is how personal data ends up where it shouldn’t. Made-up rows do the job without that risk. These tools make them in your browser, so nothing is uploaded.
1. Describe one row
In the Test Data Generator, list the fields one per line as name: type options, such as:
id: sequence 1
name: full name
email: email
joined: date 2024-01-01 to 2026-10-31
plan: pick free*6, pro*3, team
phone: phone | 30% blank
*6 makes a choice six times as likely as one without, so the mix looks like real use rather than an even spread,
and | 30% blank leaves gaps where real data has them; empty values are what break imports and reports most often.
The emails use the example domains and the phone numbers a range kept for TV and film, so a test system that
sends messages reaches no one.
Type a Seed, such as demo, to get the same rows every time: useful when a demo script or a test expects
particular names.
2. Link tables by ID
Most systems have more than one table, such as customers and their orders. Make the parent first, with
id: sequence 1 and, say, 50 rows. Then make the child with a field that picks from the same range:
order_id: sequence 1001
customer_id: integer 1-50
total: decimal 5-500 2
ordered: datetime 2026-01-01 to 2026-10-31
Every order then belongs to a customer that exists. Values from other types are random, not unique, so use
sequence or uuid for anything that must be.
For IDs to paste in by hand, the UUID Generator makes up to 1,000 at once: version 4 for random ones, ULIDs when they should sort by time, or version 5 when the same name must always give the same ID.
3. Choose the format the system takes
Choose Format for where the data is going: CSV or TSV for an import or a spreadsheet, JSON or JSON Lines for an
API, fixtures or a script, and SQL for a database. The SQL is INSERT statements into the table you name, so create
the table first. Then Copy or Download, up to 10,000 rows at a time.
4. Check it before loading
Download each table as CSV and open them together in the SQLite Viewer: each becomes a table named after its file. A query shows whether the data says what the demo needs, such as:
SELECT plan, COUNT(*) AS customers FROM customers GROUP BY plan;
SELECT COUNT(*) FROM orders WHERE customer_id NOT IN (SELECT id FROM customers);
The second should be 0. To look through a file by eye instead, paste it into CSV ⇄ JSON and choose
Show as a table, then sort by a column to see its blanks and extremes together.
5. Add files where the system takes them
If the system takes uploads, such as attachments or profile pictures, the Test File Generator makes files of an exact size, one or many in a ZIP, to try its limits. Fill them with random bytes to test real transfer sizes. Testing an upload limit or a slow upload goes further.
All 62 guides, grouped by what they help with.
Saved you a few minutes? Say thanks with a coffee.
Something wrong or unclear in this guide? Report it or suggest a guide.