Chris Collins

Tools · data

Fake data generator

Build a schema of typed fields and generate reproducible test data — people, addresses, orders, logs, sensor readings — as JSON, CSV, SQL, YAML, XML, or Markdown.

Added

How to use it

Start from a preset — Users, Orders, Products, Employees, Addresses, IoT readings, or Access log — or add fields one by one. Each field has a name, a type, type-specific options, and a percentage of rows that should be null. Drag the ⋮⋮ handle to reorder.

Over 70 types in groups: identity (sequence ids, UUID v4), people (names, usernames, emails, phones, ages, birth dates), work (job titles, departments, companies), places (street addresses, cities, regions, postcodes, countries, latitude and longitude within bounds), numbers (integers, decimals, normal distributions, prices, booleans), time (dates, ISO 8601 timestamps, Unix time, steadily increasing timestamps with random gaps for logs), text (lorem words and paragraphs, product names, colours), internet (URLs, IPs, MACs, user agents, HTTP methods and statuses weighted like real traffic, log levels, hashes, SemVer versions), commerce (test card numbers, order and account statuses), and sensors (temperature, humidity, pressure, battery voltage, RSSI).

Three types tie things together:

  • One of… picks from a list, optionally weighted: USD:6, EUR:3, GBP:2.

  • Pattern fills with a digit, ? with a lowercase letter, A with an uppercase letter, * with a letter or digit, and X with a hex digit: SKU-AA-###. Escape with \.

  • Template builds text from other fields in the same row: {first}.{last}@example.com.

Within a row, names, emails, and usernames belong to the same person, and a card brand matches the card number.

Seed makes output reproducible: the same seed, schema, and row count always give the same data, so fixtures can be regenerated exactly. 🎲 picks a new seed. Locale changes names, cities, street formats, postcodes, and phone formats (US, UK, German, French, Spanish).

Safe by construction. Emails use the reserved example.com, example.org, and example.net domains. IPv4 addresses come from the documentation blocks 192.0.2.0/24, 198.51.100.0/24, and 203.0.113.0/24 (or private ranges if you choose), IPv6 from 2001:db8::/32, and MAC addresses are locally administered. US phone numbers use the fictional 555-0100–0199 range, UK numbers Ofcom’s drama range 07700 900xxx, and French numbers ARCEP’s fiction ranges; German and Spanish numbers have no reserved range and only look real, so never dial them. Card numbers are the published test numbers that pass the Luhn check and never charge.

Output formats: JSON, JSON Lines, CSV (RFC 4180 quoting), TSV, SQL (a CREATE TABLE with column types inferred from the data, then INSERT batches of 500), YAML, XML, and a Markdown table. Generate up to 100,000 rows; the preview shows the first 200 KB, and Copy and Download give the full output. Export and Import save the schema as JSON to reuse later.

Sharing

Share link copies a URL that opens this tool exactly as configured. The whole schema with rows, seed, locale, and format, so the link regenerates exactly the same data. By hand: ?preset=users&count=10&seed=abc&format=csv. For example: fake-data/?preset=users&count=5&seed=demo&format=csv.

Runs entirely in your browser; nothing you type leaves this page.