Skip to content

Tools

Mock Data Generator

Build a schema — names, emails, prices, dates, UUIDs, your own enums — and get up to 1,000 rows of realistic fake data as JSON, CSV or SQL. Seeded and reproducible, generated entirely in your browser. Or describe the dataset in plain English and let the resident AI set up the fields for you.

Start from:

Fields — name · type · options

Format

Output

Found a bug or missing a field type? Tell me— reports get fixed fast.

What is this tool?

A free mock data generator for developers: define the shape of a record — a user, a product, an order, a sensor reading — and it produces as many rows of realistic fake data as you need, up to 1,000 at a time, in JSON, CSV or ready-to-paste SQLINSERT statements. Use it to seed a development database, fill an empty UI with believable content, write API fixtures, or reproduce a bug that only shows up with "real-looking" data.

Everything is generated in your browser — there is no upload, no account, and the schema you build is saved only in your own browser's local storage. The one optional exception is the AI schema builder — off by default — which is this tool's twist:

The AI twist

Flip the AI describe switch and you can skip the clicking: type "50 employees with name, department and a salary between 30k and 90k" and a small language model fills in the schema builder for you — field names, types, ranges, enum values, even the row count and SQL table name. The model is not a cloud API: it's a compact open-weights model running on this website's own server — the same machine that writes regexes for theregex checker and paints for thepalette generator. Your description is the only thing sent, and nothing about you is stored with it.

The best part is what happens next: the AI's schema lands in thesame editable builder you'd have used by hand, and the rows appear in the output pane straight away. Every field it chose is visible, and the actual data is generated by the deterministic engine on your device — so the AI can't hallucinate a malformed row. If it picked a wrong type, change it in one click and the output regenerates instantly.

It reads the shape of your ask, not just the topic. Say"50 usernames starting with the letter s" and you get a single username column of 50 rows — not a padded-out user table. Describe a full record and you get the whole table. Constraints like a range (30k-90k), an enum's values, or a "starts with" prefix ride along into the field options.

How to use it

  • Start from a preset (Users, Products, Orders, Blog posts) or add fields one by one.
  • Each field is a name, a type, and an optional options text: a range for numbers (18-65, k/m shorthand like 30k-90k works), values for a list (active, banned), a span for dates (2024-01-01 – 2026-12-31), a decimal precision for floats (4dp), or a null rate (10% null) on any type.
  • Pick the row count and format — JSON for fixtures, CSV for spreadsheets and imports, SQL for seeding a table.
  • Hit Generate data for a fresh batch — click it as many times as you like, each press rolls new rows and jumps you to the output.
  • The seed (optional, for power users) makes output reproducible: type a number and the same schema returns the exact same rows, today or next month — pin one in a bug report so everyone sees identical data. Leave it alone and Generate picks a new one each time.
  • Copy the output or download it as .json, .csv or .sql.

Field types

People

TypeGenerates
Full nameFirst and last name — used to derive emails and usernames in the same row.
First nameGiven name, consistent with other name fields in the row.
Last nameFamily name, consistent with other name fields in the row.
UsernameHandle derived from the row's name, like mrossi42 — never repeats in a batch. Add "starts with s" to constrain the opening. Options: starts with s
EmailAddress built from the row's name at a generic domain — never repeats in a batch. Options: starts with s
PhoneFictional 555 number, +1 (312) 555-0147 style.
Job titleSeniority + role, like Senior Data Analyst.

Business

TypeGenerates
CompanyInvented two-word company name, like Cobalt Labs.
Product nameAdjective-material-thing, like Ergonomic Oak Desk.

Place

TypeGenerates
CityReal-world city from a broad international pool.
CountryCountry name from a broad international pool.
Street addressNumber + invented street, like 742 Juniper Lane.
Postal codeFive-digit code (kept as a string — leading zeros survive).
LatitudeDecimal degrees, 4 decimal places. Options: -90 – 90
LongitudeDecimal degrees, 4 decimal places. Options: -180 – 180

Numbers & IDs

TypeGenerates
Row numberSequential integer — 1, 2, 3… or from any start value. Options: start at 1
IntegerWhole number in a range (inclusive) — k/m shorthand works, 30k is 30,000. Options: 0 – 1000
DecimalNumber in a range, 2 decimal places — add e.g. 4dp for more precision. Options: 0 – 100
PriceMoney-shaped decimal, always 2 decimal places. Options: 1 – 999
UUIDRandom version-4 UUID.

Choice

TypeGenerates
Pick from listOne of the values you list — statuses, categories, tags. Options: active, inactive, banned
True / falseBoolean, 50/50.

Date & time

TypeGenerates
DateISO date (YYYY-MM-DD) in a range. Options: 2024-01-01 – 2026-12-31
Date & timeISO 8601 timestamp (UTC) in a range. Options: 2024-01-01 – 2026-12-31

Text

TypeGenerates
WordSingle lorem word.
SentenceOne lorem sentence — titles, labels, short strings.
ParagraphA few lorem sentences — descriptions, comments, bodies.

Web

TypeGenerates
URLhttps link to an invented domain.
DomainInvented hostname, like cascade.dev.
IPv4 addressDotted-quad address like 172.16.254.3.
Hex color#rrggbb color code.

Rows are internally consistent where it matters: if a record has name fields and an email or username, they agree —Lina Kimura gets lina.kimura@example.com, not a random string. A schema with several person fields (sayauthor and reviewer) gets a distinct person for each, with the second email tracking the second name. And because generated data ends up in tables withUNIQUE constraints, emails and usernames never repeat within a batch.

Fake by construction

"Realistic" never means "real". Phone numbers use the reserved555 exchange, emails end in generic domains likeexample.com, companies and street names are invented, and people are random combinations drawn from name pools — so nothing generated here can collide with an actual person's data. That makes it safe for screenshots, demos and public test suites, where scraping "just a little" production data is how privacy incidents start.

Output format notes

  • JSON keeps honest types: numbers are numbers, booleans are booleans, missing values are null — not strings pretending.
  • CSV follows RFC 4180 quoting: cells containing commas, quotes or newlines are quoted, quotes are doubled, and nulls become empty cells. Field order matches your schema.
  • SQL emits multi-row INSERT statements chunked 100 rows at a time, with single quotes escaped by doubling and identifiers quoted only when they need it. The syntax is standard enough for PostgreSQL, MySQL, MariaDB and SQLite alike.

FAQ

Is it free? Yes — free, no sign-up, no limits beyond the 1,000-row cap per batch.

Is my data uploaded anywhere? No. Generation runs entirely in your browser and works offline once the page is loaded. The optional AI schema builder — only if you've switched it on — sends exactly one thing: the description you typed. It never sees the generated data at all.

Why a seed? Because random test data that changes on every refresh is a debugging nightmare. The seed pins the randomness: commit it next to a failing test and every teammate regenerates byte-identical rows.

Can I generate more than 1,000 rows? Per batch, no — it keeps the page instant on any device. But pressGenerate data again for another 1,000: each batch is different, and SQL output appends cleanly.

Which SQL dialect is the output? Deliberately plain multi-row inserts — no backticks, no ON CONFLICT, no dialect-specific types — so it pastes into PostgreSQL, MySQL and SQLite unchanged. Create the table first; this tool fills it.

Need model classes for this JSON? Paste the output into the JSON to code converterand get Dart, TypeScript, Python, Go, Kotlin or Swift models in one step.

Built from scratch for this site in vanilla TypeScript — a pure, unit-tested generation core with a seeded PRNG, zero runtime dependencies, and a self-hosted small language model on schema-drafting duty.