Mock Data Generator

Paste one example record, get N structurally identical records with realistic field values.

The frontend needs a screen of list data, the backend wants ten thousand rows for load testing, QA needs an API response that "looks real" — hand-writing those JSONs is slow and always ends up full of "test" and "aaa". This tool works the other way: paste one real example, and it expands it into N records with field values replaced by semantics — the email field gets a valid-looking address, created_at a plausible date, price a two-decimal amount.

Replacement decisions come from a field-name vocabulary: thirty-plus high-frequency names (name/email/phone/city/url/ip/uuid/date/price/status) each have a generator, and anything unmatched falls back to type-based randomness. API envelope shapes (code/msg/data.list) are recognized: the list expands while code and msg stay untouched. The seed is configurable — same seed, byte-identical output, reproducible tests.

Why key names, not types

A type only says "this is a string"; the key name says whose string it is. user_name and url are both strings, but one should be a person and the other a link. Thirty-plus key rules make the semantic call, and unmatched fields fall back to type-level randomness — that is what makes the data convincing instead of just well-typed.

Seeds make tests reproducible

Randomness is seeded: identical seeds produce identical output, byte for byte. Write the seed into your test fixture and frontend, backend replays see exactly the same data — the "flaky" mock differences disappear. Need a fresh batch? Change the seed.

Frequently asked questions

Is any of this real personal data?
No. Names, companies and email domains come from built-in fictional pools, and domains are pinned to reserved hosts like example.com — there is no chance of colliding with a real person.
Does it handle nesting?
Yes, to any depth: nested objects keep their shape with leaves replaced by semantics, and arrays of objects (like items inside an order) expand to the record count at any position.
Is there a record limit?
1,000 per run — covering nearly all dev and integration scenarios. For larger batches, generate in slices and concatenate to keep browser memory happy.

Related tools