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. Every field it chose is visible, and the actual data is then 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.

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), values for a list (active, banned), a span for dates (2024-01-01 – 2026-12-31), 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.
  • The seed makes output reproducible: same schema + same seed = the exact same rows, today or next month. Re-roll for a fresh batch, or pin a seed in a bug report so everyone sees identical data.
  • 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.
EmailAddress built from the row's name at a generic domain.
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). Options: 0 – 1000
DecimalNumber with 2 decimal places in a range. 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. That correlation is what makes generated data read as real in a demo.

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 re-roll the seed and generate again: 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.