Mock JSON Data Generator

Generate fake JSON records for development and testing with toggleable fields and a reproducible seed. Runs entirely in your browser.

Generation happens locally in your browser. No dataset ever leaves your device.

Set a seed above 0 and the same value always reproduces the same dataset; leave it empty for Math.random.

Fields
—

How It Works

Every control is wired to a single rebuild function with a 250 ms debounce: change the count, toggle a field or type a seed and the dataset regenerates live. Each record is built by walking the fixed field list in schema order — id, name, email, username, phone, address, date, company, product, sentence, price, active, uuid — and keeping only the checked fields, so the key order inside every object stays stable and predictable. The result is pretty-printed with two-space indentation.

Field generators
id is a plain sequential counter; name, username, email, phone and address draw from built-in word pools (given names, surnames, streets, cities with countries); company and product combine adjective and noun lists; sentence stitches 8–12 lorem-ipsum words into a capitalized English sentence; date picks a random ISO birthday between 1950 and 2005; price is a float from 1.00 to 999.99; active is a coin flip; uuid is a real v4 identifier from crypto.getRandomValues.
Deterministic seeds (mulberry32)
When the seed box holds a value greater than zero, all random draws (except uuid, which always uses Web Crypto) come from mulberry32 — a ten-line arithmetic PRNG seeded with your number. Identical seeds replay identical sequences, so a colleague on another machine gets exactly your dataset. Leaving the seed empty falls back to Math.random, and the stats line tells you which source produced the current output.
RFC-reserved test data
Email addresses only ever use example.com, example.org or example.net, the domains RFC 2606 reserves for documentation and testing. Phone numbers use the 555 exchange set aside for fictional use in North American numbering plans. That combination makes the output safe to commit to a repository or load into a staging database without any chance of messaging a real person.

Frequently Asked Questions

Can I use the generated emails for signups?

No — and that is the point. Every address ends in example.com, example.org or example.net, the three domains RFC 2606 reserves for documentation and testing, so they can never reach a real inbox. Phone numbers use the 555 exchange reserved for fictional use. The data is safe to commit and safe to test with, but it is not usable for signing up anywhere.

What does the seed option do?

Leave the seed empty and the tool uses Math.random, so every keystroke produces fresh data. Enter a whole number from 1 upward and the tool switches to a small built-in mulberry32 pseudo-random generator initialized with that seed: the same seed plus the same settings reproduces a byte-for-byte identical dataset, on any machine, in any session. One exception: the uuid field always comes from the Web Crypto API and is not reproducible by seed.

Why does the output box stop at 100 records?

A 1,000-record pretty-printed JSON blob is large enough to make the textarea sluggish, so the visible preview is capped at the first 100 records. Copy JSON and Download .json always serialize every record you asked for — the cap is display-only.

Can I define custom fields?

No. The generator offers a fixed schema of thirteen field types (id, name, email, username, phone, address, date, company, product, sentence, price, active, uuid) and you toggle which ones appear. Keeping the vocabulary fixed is what makes the output predictable, the seeding meaningful and the page dependency-free.

Is anything uploaded to a server?

No. The whole generator is vanilla JavaScript running in your browser — no CDN, no API, no network request. The dataset is built and stays in your tab, and closing the page discards it.