Skip to main content
Toollyz

Search tools

Search for a command to run...

Fake JSON Data Generator

Define a schema with 19 field types — UUID, names, emails, phones, addresses, dates, integers, floats, booleans, lorem — and generate up to 10,000 records of fake JSON. Crypto-strong randomness via crypto.getRandomValues. 100% offline.

What is the Fake JSON Data Generator?

Fake JSON Data Generator is schema-driven — you define a list of fields (each with a name and a type), and the generator produces an array of N JSON objects matching the schema. 19 field types are supported, grouped into 6 categories. Identifiers: UUID v4. Numbers: integer (with min/max), float (with min/max), boolean. Custom: literal (a fixed string). People: full name, first name, last name, username, email, phone. Location: street address, city, country. Business: company, URL. Date: locale date string, ISO 8601 date string. Text: lorem ipsum (sentence count configurable). Every random value uses `crypto.getRandomValues` with rejection sampling — uniform distribution, no modulo bias. The fake data draws from curated lists of ~150 names, 25 companies, 25 cities and 25 countries; UUIDs are real v4 UUIDs with the correct variant bits. Output is up to 10,000 records (limited to keep browser memory sensible). Regenerate button mints a fresh batch on demand.

How to use it

  1. Add fields to the schema — pick a name and a type for each.
  2. Set min/max for numbers, sentence count for lorem, or a literal value if needed.
  3. Reorder fields with the up/down buttons; remove with the trash icon.
  4. Pick the record count (1-10 000) and click Regenerate. Copy or download the JSON.

Benefits

  • 19 field types across 6 categories (identifiers, numbers, people, location, business, date, text).
  • Crypto-strong randomness via `crypto.getRandomValues` with rejection sampling — uniform distribution.
  • UUID v4 with correct version and variant bits.
  • Curated names, companies, cities and countries — realistic but unambiguously fake.
  • Custom 'literal' type for constant values across all records.
  • Configurable min/max for integers and floats; sentence count for lorem.
  • Up to 10,000 records per generation — limited to keep browser memory sensible.
  • Regenerate button mints a fresh batch on demand.
  • Persists your schema in localStorage so you can return to the same shape.
  • Runs 100% in your browser — Toollyz has no server.

Frequently asked questions

Is the randomness cryptographic?

Yes — every random byte comes from `crypto.getRandomValues`, the WebCrypto cryptographically-strong RNG. We use rejection sampling so each character in a string or value within a range has uniform probability (no modulo bias).

Are the names / companies / cities real?

They're real names of notable historical figures (computer scientists, mathematicians) and a curated list of well-known companies, world cities and countries. None of the email addresses, phones or street addresses are real — they're constructed from synthetic templates.

How is the UUID generated?

We generate 16 random bytes, then force the version 4 bits (top 4 of byte 6 = `0100`) and variant bits (top 2 of byte 8 = `10`) per RFC 4122. The result is a valid v4 UUID indistinguishable from one generated by any standard library.

Can I generate millions of records?

Up to 10,000 per click. For more, click Regenerate again — there's no rate limit because everything's local. The cap exists to keep the browser tab from running out of memory.

What's the 'literal' field type for?

When you want a constant value across all records — useful for tenant IDs, environment markers, version numbers etc. Set the literal once and it appears in every generated record.

How do I get nested objects?

Not in this version — the generator produces flat objects with primitive values. For nested shapes, generate two arrays and combine them in your application.

Does the output round-trip through JSON.parse?

Yes — every value is JSON-safe (string, number, boolean, ISO date string). Pasting the output into JSON.parse() works without modification.

Will the same schema produce different data each time?

Yes — each regeneration uses fresh random bytes. Click Regenerate to mint a new batch.

Can I seed the random for reproducible output?

Not in this version. Crypto.getRandomValues is unseedable by design. For a reproducible fixture, generate once and save the output.

Are emails / phones routable?

No. Emails use placeholder domains (example.com, test.dev, fake.io). Phones are constructed from common country codes plus random digits and aren't real numbers.

Is anything uploaded?

No. Generation runs entirely in your browser.