{}JSONFiddleEditor
Tools/

Mock Data Generator

Generate realistic sample JSON data from a template. Supports smart field name detection.

Smart fake data from a single template

This generator inspects the field names in your JSON template and maps them to appropriate @faker-js/faker methods -- over 50 patterns including uuid, email, fullName, streetAddress, price, createdAt, latitude, iban, and more. You provide the shape, it fills in realistic values. Arrays expand to configurable row counts, nested objects recurse, and a seed option gives you reproducible output. The entire generation runs in-browser with faker loaded on demand.

Generating mock data

  1. 1Write or paste a JSON template in the left editor. Field names drive the output -- "email" produces emails, "price" produces currency amounts, and so on.
  2. 2Set the default row count for arrays (top-level or nested). Override individual arrays by clicking the Arrays popover.
  3. 3Optionally set a numeric seed for deterministic output -- same seed, same data, every time.
  4. 4Click Generate. The right panel fills with realistic data matching your template shape.

How it decides what to generate

  • 50+ field-name patternsThe generator matches field names case-insensitively: id/uuid, name/fullName, email, phone, city, country, zipCode, company, jobTitle, url, username, avatar, latitude, longitude, ip, iban, creditCard, password, slug, tags, status, currency, and many more.
  • Type-aware fallbackWhen the field name is not recognized, the generator falls back on the value type: strings get lorem words, numbers get random ints or floats (respecting integer vs. decimal), booleans get random true/false.
  • Per-array row configurationThe Arrays popover lets you set row counts for each detected array path independently. You can also embed __rows_fieldName as a sibling key in the template for inline control -- the editor even autocompletes it.
  • Deterministic seedsPass a seed integer to faker.seed() and get identical output on every run. Useful for snapshot tests, demos, and documentation screenshots.
  • `CodeMirror` autocomplete for `__rows`Type a double-quote inside an object that has array siblings and the editor suggests __rows_<field>: 10 completions, saving you from remembering the annotation syntax.

When you need this

  • Frontend prototypingGenerate a realistic users array to feed into a React table or card grid without standing up a backend.
  • API mockingCreate fixture files for MSW, Mirage, or json-server that look like production data instead of lorem ipsum.
  • Database seedingGenerate INSERT-ready JSON arrays with hundreds of rows, then pipe through a JSON-to-SQL converter.
  • Load testing payloadsProduce large, varied datasets for stress-testing parsers, validators, or search indexes.
  • Demo environmentsSeed a demo app with consistent (seeded) but realistic data that resets cleanly.

Template and output

// Template:
{
  "id": "uuid",
  "name": "John Doe",
  "email": "john@example.com",
  "orders": [{ "product": "Widget", "price": 9.99 }],
  "__rows_orders": 2
}

// Generated output (seed: 42):
{
  "id": "a1b2c3d4-...",
  "name": "Elena Gutkowski",
  "email": "Joana_Bechtelar@hotmail.com",
  "orders": [
    { "product": "Rustic", "price": 472.00 },
    { "product": "Incredible", "price": 89.00 }
  ]
}

Common questions

How does the tool know "email" should be an email address?

It lowercases the field name and matches against a hardcoded lookup table. "email" maps to faker.internet.email(), "price" maps to faker.commerce.price(), and so on. Unrecognized names fall back to type-based generation.

What is `__rows` and how does it work?

Add a sibling key "__rows_fieldName": N next to any array field to control how many items that array generates. For example, "__rows_orders": 5 produces 5 order objects. This annotation is stripped from the output.

Is the `faker` library bundled in the page?

No. @faker-js/faker is dynamically imported when you click Generate, keeping the initial page load fast. The library is cached after the first import.

Can I generate more than 1000 rows?

The UI caps at 1000 rows per array to prevent browser tab crashes. For larger datasets, generate in batches or use faker directly in a Node script.

Related tools