Mock Data Generator
Design a schema of fields, pick how many rows you need, and generate realistic fake data as JSON, CSV or SQL — ready to seed a database or feed a test.
Schema
Realistic test data in seconds
25+ field types
Names, emails, UUIDs, dates, numbers, booleans, addresses, companies, lorem text and more.
Three formats
Export JSON for APIs, CSV for spreadsheets, or ready-to-run SQL INSERT statements.
Custom schema
Add, rename and reorder fields to match your exact table or interface.
Private & instant
Everything is generated in your browser — no rows ever leave your device.
Model the schema, not just the rows
The generator starts where your real data starts: a schema. Add a field per column, name it exactly as your table or interface names it, and pick a type — names, emails, UUIDs, dates, numbers, booleans, addresses, companies, lorem text and more. Because the field names carry through to the output keys, CSV headers and SQL columns, the generated rows drop into your code without a rename pass. Set the row count, choose JSON, CSV or SQL, and generate; the output panel gives you copy and download in one click.
Why fake data beats production copies
Seeding development and demo environments with copies of production data is the classic shortcut that turns into a privacy incident: real emails end up in test mailers, real names in screenshots, real records on contractor laptops. Generated data sidesteps the entire problem — it looks convincing in a UI, satisfies foreign-shaped fields like emails and UUIDs, and contains no person. It also demos better: screens filled with plausible names and companies read as finished product, where "test test 123" reads as a prototype.
Make your test data earn its keep
Uniform pretty rows hide bugs; variety finds them. Include the shapes that break layouts and logic: long names that test truncation, addresses with apartment lines, dates near month and year boundaries, zero and negative numbers where they're legal. Generate a small batch first and read it — then scale up to the row count you need (up to 1,000 per run, and nothing stops you from generating several batches). For SQL seeds, set the table name in the bar and the output becomes INSERT INTO statements ready for a migration file.
Step-by-step: from empty schema to seed file
The page opens with a starter schema (id, name, email, age, city, signup date, active flag) so there is something to generate immediately. To model your own table, work down the schema panel: click + Add field for each column, type the exact column name in the left box, and pick a type from the dropdown on the right — id for a 1-based auto-increment, uuid, firstName / lastName / fullName, email, username, phone, city, country, streetAddress, company, jobTitle, date, datetime, boolean, number, age, price, decimal, color, url, word, sentence or paragraph. Remove a field with the × button. Then set Rows (1–1,000), click JSON, CSV or SQL in the format switch — the Table name box only appears for SQL — and press Generate. The output header shows the row count and format; Copy puts the text on the clipboard and Download saves it with a matching .json, .csv or .sql extension.
Real-world use cases
- Seeding a local Postgres or MySQL database. Mirror the
userstable column-for-column, set the table name, export SQL and paste the statements into a migration orpsqlsession. Because theidtype emits consecutive integers, foreign keys in a second table can be generated asnumberand mapped in range. - API mocks for front-end work. Generate 50 JSON rows with
uuid,fullName,emailanddatetime, save the file next to your components and point a mock server or MSW handler at it — the UI gets realistic list views before the backend exists. - Spreadsheet and import testing. CSV with
price,decimal,dateandcountrycolumns quickly reveals how an importer handles decimal separators, quoted commas in addresses and date formats. - Screenshots and demos. A product screenshot with thirty plausible names, companies and cities looks finished; the same screen with "asdf" does not, and it never exposes a real customer.
How the three exports are built under the hood
All three formats come from the same array of row objects, so a schema tweak changes every export identically. JSON is pretty-printed with two-space indentation — readable in a code review, and trivially minified later if size matters. CSV writes a header row from the field names, then quotes any value containing a comma, double quote or newline and doubles embedded quotes, which is the RFC 4180 convention most importers expect; booleans and numbers are written bare. SQL sanitizes the table name to word characters and underscores, emits one INSERT INTO table (cols) VALUES (...) statement per row, writes booleans as TRUE/FALSE, leaves numeric types unquoted and wraps everything else in single quotes with embedded quotes escaped as ''. If your database expects 1/0 for booleans or a different date literal, a single search-and-replace on the downloaded file is the easiest fix.
Further reading
For the format details behind the exports, see our guides on CSV, JSON and XLSX conversion pitfalls and when to minify or beautify code and data files, or browse all guides.
Frequently asked questions
Can the generated data accidentally contain real people?
No. Every value is assembled randomly from generic word and name lists on your device. Any resemblance to a real person or company is coincidence — there is no source database of real records behind it.
How do I match my exact database table?
Create one schema field per column with identical names and compatible types, then export as SQL with your table name filled in. The INSERT statements will line up with your columns, so they paste straight into a seed script.
Which format should I pick for which job?
JSON for API fixtures and front-end state, CSV for spreadsheets and import tools, SQL for seeding a relational database. The same schema drives all three, so you can export one dataset in multiple shapes.
Is 1,000 rows per run really enough?
For UI tests, demos and development seeds, usually yes — and repeated runs give you more. If you're load-testing with millions of rows, use this to prototype the shape and generate volume with a script.
Does any generated row leave my machine?
No. Schema, generation and export all run in the page. That makes the tool safe even for schemas whose field names are themselves confidential.
Why does my CSV import misread some values?
Spreadsheet importers guess types — long digit strings become scientific notation, and date-like strings get reformatted. Import with explicit column types (or as text) when the values must survive verbatim.