Fake JSON Generator
Describe a shape, get realistic mock data. Seeded and reproducible.
Your data is processed entirely in your browser and is never uploaded.
Tool workspace
Options
Same seed = same data, every time.
Generate realistic JSON in three steps
Write a template
Start with any JSON shape and drop in tokens like {{name}} or {{email}}. A value that is only a token keeps its real type.
Tune the batch
Set the record count and let nested arrays grow the data to the size you need: thousands of rows, still typed.
Generate & export
Click Generate, then copy the JSON or download it as a file. All processing happens in your browser.
Write a shape, get the data
The template is ordinary JSON. Put a faker token in any string value. A value that is only a token keeps its real type, so "{{int:1..9}} becomes a number.
Identifiers
{{uuid}}3f1c…e9a2{{index}}0, 1, 2 …{{index1}}1, 2, 3 …People
{{name}}Grace Hopper{{firstName}}Margaret{{lastName}}Hamilton{{email}}ada.lovelace@example.com{{username}}alan_turing42Text
{{word}}consectetur{{words}} or {{words:5}}sed do eiusmod tempor incididunt{{sentence}}Lorem ipsum dolor sit amet.{{paragraph}}Three to five sentences.{{string}} or {{string:8}}aB3kQ9zLNumbers & flags
{{int}} or {{int:1..100}}42{{float}} or {{float:0..10}}7.31{{bool}}trueDates & network
{{date:2020..2024}}2022-08-14{{now}}2026-07-31T…Z{{timestamp}}1722441600000{{ipv4}}192.168.4.21{{url}}https://magna.io/dolorStructure
{{enum:a|b|c}}editor{{null}}nullA shape in, realistic data out, reproducibly
Fake JSON lets you describe a shape with a normal JSON template and faker tokens placed in string values: {{name}}, {{email}}, {{int:18..65}}, {{enum:admin|editor|viewer}}, and many more. Put a token in a value that is *only* the token and it keeps its real type, so "{{int}}" becomes a number, not text. Set a count and an optional seed: the same template, count, and seed always produce the same records, which makes the output perfect for test fixtures and CI. Leave the seed empty for fresh random data each time. Everything runs locally, and the readout shows records, size, generation time, and the seed echo.
Things to know
An unknown token is left as text
A token that doesn't match the legend is treated as a literal string. It won't error, it just won't expand. Load this and check the template status for the exact message.
{"id": "{{index1}}", "role": "{{unknown}}"}Token-only values keep their type
"{{int:18..65}}" becomes a real JSON number because the value is only the token. Write text around it ("id-{{int}}"), and the whole value is a string. The unbox rule is what keeps your numbers numeric.
{"age": "{{int:18..65}}", "label": "id-{{int:1..9}}"}Seeds make output reproducible
Type any seed and the same template + count + seed always yields the same records, handy for fixtures and CI. Leave it empty for fresh random data each time.
{"name": "{{name}}", "email": "{{email}}"}Nesting is just JSON
The template is real JSON, so tokens expand anywhere, inside nested objects and arrays. For a variable-length array, list the tokens you want; a repeat-count token is on the roadmap.
{"user": {"name": "{{name}}", "tags": ["{{word}}", "{{word}}"]}}Try these
{"id": "{{index1}}", "name": "{{name}}", "email": "{{email}}", "age": "{{int:18..65}}", "active": "{{bool}}"}Names, emails, and a bounded integer, all unboxed to real types.
{"role": "{{enum:admin|editor|viewer}}", "joined": "{{date:2021..2024}}", "bio": "{{sentence}}"}A role enum and a bounded date keep the data realistic.
pair this withFormat it → JSON Formatter·Validate the shape → JSON Validator·Add unique ids → UUID Generator
Quick answers
Is my template sent anywhere?
No. Generation runs entirely in your browser. The template and the data it produces never leave your machine.
What does the seed do?
It makes the output reproducible. Type any word and the same template + count + seed always yields the same records. Handy for fixtures and CI. Leave it empty for fresh random data each time.
Why did my number come out as a string?
It didn't, if the value was only the token. The unbox rule keeps "{{int}} as a number. If you write text around a token, like "id-{{int}}, the whole value is text, so you get a string.
Can I nest objects and arrays?
Yes. The template is real JSON, so any structure works. Tokens expand wherever they appear, including inside nested objects and arrays. For a variable-length array, list the tokens you want; a repeat-count token is on the roadmap.