Smart fake data from a single template
This generator inspects the field names in your JSON template and maps them to appropriate @faker-js/faker methods -- over 50 patterns including uuid, email, fullName, streetAddress, price, createdAt, latitude, iban, and more. You provide the shape, it fills in realistic values. Arrays expand to configurable row counts, nested objects recurse, and a seed option gives you reproducible output. The entire generation runs in-browser with faker loaded on demand.
Generating mock data
- 1Write or paste a JSON template in the left editor. Field names drive the output -- "email" produces emails, "price" produces currency amounts, and so on.
- 2Set the default row count for arrays (top-level or nested). Override individual arrays by clicking the Arrays popover.
- 3Optionally set a numeric seed for deterministic output -- same seed, same data, every time.
- 4Click Generate. The right panel fills with realistic data matching your template shape.
How it decides what to generate
- 50+ field-name patterns — The generator matches field names case-insensitively: id/uuid, name/fullName, email, phone, city, country, zipCode, company, jobTitle, url, username, avatar, latitude, longitude, ip, iban, creditCard, password, slug, tags, status, currency, and many more.
- Type-aware fallback — When the field name is not recognized, the generator falls back on the value type: strings get lorem words, numbers get random ints or floats (respecting integer vs. decimal), booleans get random
true/false. - Per-array row configuration — The Arrays popover lets you set row counts for each detected array path independently. You can also embed
__rows_fieldNameas a sibling key in the template for inline control -- the editor even autocompletes it. - Deterministic seeds — Pass a seed integer to
faker.seed()and get identical output on every run. Useful for snapshot tests, demos, and documentation screenshots. - `CodeMirror` autocomplete for `__rows` — Type a double-quote inside an object that has array siblings and the editor suggests
__rows_<field>: 10completions, saving you from remembering the annotation syntax.
When you need this
- Frontend prototyping — Generate a realistic users array to feed into a React table or card grid without standing up a backend.
- API mocking — Create fixture files for MSW, Mirage, or json-server that look like production data instead of lorem ipsum.
- Database seeding — Generate INSERT-ready JSON arrays with hundreds of rows, then pipe through a JSON-to-SQL converter.
- Load testing payloads — Produce large, varied datasets for stress-testing parsers, validators, or search indexes.
- Demo environments — Seed a demo app with consistent (seeded) but realistic data that resets cleanly.
Template and output
// Template:
{
"id": "uuid",
"name": "John Doe",
"email": "john@example.com",
"orders": [{ "product": "Widget", "price": 9.99 }],
"__rows_orders": 2
}
// Generated output (seed: 42):
{
"id": "a1b2c3d4-...",
"name": "Elena Gutkowski",
"email": "Joana_Bechtelar@hotmail.com",
"orders": [
{ "product": "Rustic", "price": 472.00 },
{ "product": "Incredible", "price": 89.00 }
]
}Common questions
How does the tool know "email" should be an email address?
It lowercases the field name and matches against a hardcoded lookup table. "email" maps to faker.internet.email(), "price" maps to faker.commerce.price(), and so on. Unrecognized names fall back to type-based generation.
What is `__rows` and how does it work?
Add a sibling key "__rows_fieldName": N next to any array field to control how many items that array generates. For example, "__rows_orders": 5 produces 5 order objects. This annotation is stripped from the output.
Is the `faker` library bundled in the page?
No. @faker-js/faker is dynamically imported when you click Generate, keeping the initial page load fast. The library is cached after the first import.
Can I generate more than 1000 rows?
The UI caps at 1000 rows per array to prevent browser tab crashes. For larger datasets, generate in batches or use faker directly in a Node script.