The schema format
One field per line, as name: type:
id: uuid
name: fullName
email: email
age: int:18-65
active: boolean
role: pick:admin|editor|viewer
Field names become JSON keys, CSV column headers, or SQL column names: whatever you write is what you get back.
Every field type
| Type | Produces | Example |
|---|---|---|
uuid |
A random v4 UUID | 63579236-7abf-4ffc-9c04-9707376ecae7 |
sequence |
1, 2, 3, … one per row | 1 |
firstName, lastName, fullName |
A name | Ada Lovelace |
email |
A name-shaped address | ada.lovelace42@example.com |
username |
A name-shaped handle | ada.lovelace837 |
phone |
A US-style phone number | (555) 123-4567 |
company |
A two-word company name | Silver Group |
jobTitle |
A job title | Software Engineer |
streetAddress, city, country, zipCode |
Address parts | 482 Oak Ave |
boolean |
true or false |
true |
int:min-max |
A whole number in range | int:1-100 → 57 |
float:min-max |
A number with 2 decimals | float:0-1 → 0.43 |
price:min-max |
Same as float, but reads better for money | price:5-500 → 264.19 |
date:startYear-endYear |
An ISO date | date:2020-2024 → 2022-06-16 |
word, words:n |
Lorem ipsum words | words:3 → ipsum dolor sit |
sentence, paragraph |
Lorem ipsum prose | n/a |
pick:a|b|c |
One of your own listed values | pick:small|medium|large |
Why a seed, not just “regenerate”
Most fake-data generators give you a fresh, different set every time you load the page: fine for a quick look, useless for anything you need to come back to. This one is built on a seeded random number generator: the seed you type (any text) determines every value that follows, in order, every time.
That means:
- The same seed and schema always produce the same rows. Share a seed with a teammate, or write it into a README, and they get byte-identical data.
- Changing only the row count keeps the earlier rows the same: asking for 20 rows gives you the same first 10 as asking for 10, with 10 more appended. Useful when you want to grow a fixture without reshuffling the existing rows.
- A different seed gives genuinely different data, so
seed=test-1andseed=test-2won’t collide if you’re generating fixtures for two separate test cases.
Picking an output format
JSON is the default and suits a test fixture, a mock API response, or a .json seed file.
CSV suits importing into a spreadsheet or a database’s bulk-load tool. Values containing a comma or a quote are quoted and escaped correctly, so a pick field with commas in its values still produces valid CSV.
SQL writes one INSERT statement per row, with the table name you choose. String values are wrapped in single quotes with internal quotes doubled (the standard SQL escape), and booleans are written as TRUE/FALSE: supported by Postgres, MySQL 8+ and SQLite; substitute 1/0 by hand if your database only accepts those.
What it won’t do
Field values are generated independently: there’s no way to make one field depend on another (an endDate that’s always after a startDate, or a total that’s the sum of other fields). For that level of realism, generate here and adjust by hand, or use a dedicated fixture library in your own codebase.