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

TEMPLATE
Status: Empty0 chars

Options

records

Same seed = same data, every time.

Ready, paste to start
GENERATED JSON
Output: Empty0 chars
HOW IT WORKS

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.

THE TOKENS

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_turing42

Text

{{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}}aB3kQ9zL

Numbers & flags

{{int}} or {{int:1..100}}42
{{float}} or {{float:0..10}}7.31
{{bool}}true

Dates & network

{{date:2020..2024}}2022-08-14
{{now}}2026-07-31T…Z
{{timestamp}}1722441600000
{{ipv4}}192.168.4.21
{{url}}https://magna.io/dolor

Structure

{{enum:a|b|c}}editor
{{null}}null
Docs · Generate

A 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

A user record
{"id": "{{index1}}", "name": "{{name}}", "email": "{{email}}", "age": "{{int:18..65}}", "active": "{{bool}}"}

Names, emails, and a bounded integer, all unboxed to real types.

Enum + dates
{"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

FAQ

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.