Mock Data Generator

Generate realistic fake test data — names, emails, addresses, phone numbers, UUIDs, dates and more — as JSON, CSV or ready-to-run SQL INSERT statements. Tick the fields you want, choose how many rows, and copy or download the result. Everything runs in your browser: nothing is uploaded and no real people are used.

Fields to include

0 rows

What each field produces

FieldColumnTypeWhat you get
ID (sequential)idnumberA row number that starts at 1 and counts up — a simple primary key.
UUIDuuidstringA random RFC 4122 version-4 UUID, e.g. a globally unique identifier.
First namefirst_namestringA given name picked from a varied international list.
Last namelast_namestringA family name from a varied international list.
Full namefull_namestringThe row’s first and last name joined — kept consistent within the row.
EmailemailstringAn address built from the same row’s name, e.g. jane.smith@example.com.
UsernameusernamestringA handle derived from the row’s name plus a number, e.g. jsmith417.
PhonephonestringA formatted number such as (415) 555-0132.
Street addressstreet_addressstringA house number, street name and street type, e.g. 482 Oak Ave.
CitycitystringA city name from a worldwide list.
StatestatestringA two-letter US state code, e.g. CA.
ZIP / postcodezipstringA five-digit postal code (kept as text so leading zeros survive).
CountrycountrystringA country name from a worldwide list.
CompanycompanystringA made-up company such as “Patel Solutions”.
Job titlejob_titlestringA common role, e.g. Product Manager.
DatedatestringAn ISO date within the last five years, e.g. 2024-03-18.
Date-timedatetimestringAn ISO 8601 timestamp, e.g. 2024-03-18T09:41:07Z.
Boolean (active)activebooleanA true/false flag — a real boolean in JSON, TRUE/FALSE in SQL.
NumbernumbernumberA whole number from 0 to 999.
PricepricenumberA decimal amount with two places, e.g. 42.99.
Colour (hex)colorstringA random hex colour such as #3fa9c2.
IPv4 addressipv4stringA dotted IPv4 address, e.g. 172.16.4.91.
DomaindomainstringA domain name, e.g. garcia.io.
URLurlstringAn https URL, e.g. https://lee.com/dolor.
Paragraph (lorem)paragraphstringA short lorem-ipsum sentence of placeholder text.

Output formats

FormatBest for
JSONSeeding NoSQL stores, mocking API responses, or importing into apps that read JSON. Output is an array of objects.
CSVOpening in a spreadsheet or bulk-importing into a database or CRM. First line is the header row; values are quoted only when they need escaping.
SQLDropping straight into a database. A single multi-row INSERT statement — strings are quoted and escaped, numbers and booleans are left bare.

How to use it

  1. Tick the fields you need — or use Select all to grab everything and untick the ones you don’t want. The output columns follow the order shown in the list.
  2. Set the number of rows (up to 1,000) and choose your format: JSON, CSV or a SQL INSERT (set the table name for SQL).
  3. The data appears instantly. Press Regenerate for a fresh random set, then Copy or Download the file.

How the data is generated

Every value is produced on your own device with plain JavaScript. Random choices come from the browser’s crypto.getRandomValues — a cryptographically strong, unbiased source — applied to short built-in word lists of names, cities, countries, streets and job titles. Each row begins from a single randomly chosen person so that related fields agree: the full name matches the first and last name, and the email and username are derived from that same name. Independent fields such as price, colour or IP address are randomised on their own.

The formatter also handles the fiddly details that break naïve exports. In CSV, any value that contains a comma, a double-quote or a line break is wrapped in quotes and its internal quotes are doubled, so the columns never shift. In SQL, text is wrapped in single quotes with any apostrophe escaped (O'Brien'O''Brien'), while numbers and booleans are written bare (TRUE/FALSE) so the statement runs as-is. In JSON, numbers and booleans stay as real JSON types rather than strings.

Common uses for mock data

  • Seed a database or CMS during development so screens aren’t empty.
  • Mock an API response to build a front end before the back end exists.
  • Stress-test lists, tables and pagination with hundreds of rows.
  • Fill demos and screenshots with plausible records instead of “test test”.
  • Write documentation and tutorials using safe, non-personal sample data.
  • Avoid copying real customer data into staging — a common privacy risk.

JSON vs CSV vs SQL — which should I use?

Reach for JSON when the consumer is code: it is an array of objects with real numbers and booleans, ideal for mocking an API or seeding a document database. Reach for CSV when a human or a spreadsheet is involved, or when a tool offers a “bulk import from CSV” option — the escaping here means a comma inside an address or a quote inside a note won’t corrupt the file. Reach for SQL when you want to load rows directly into a relational database: the single multi-row INSERT is the fastest way to populate a table, and because the values are properly quoted and typed you can paste it into a client and run it without edits.

Frequently asked questions

What is mock (dummy) data and why would I need it?
Mock data is realistic-looking but entirely made-up information used in place of real records. Developers and testers use it to seed a database, populate a UI while it is being built, test how an app behaves with lots of rows, demo a product, or write examples — all without touching real customer data. Because none of it describes a real person, it sidesteps the privacy and compliance risk of copying production data into a test environment.
Is the data really random, and does it describe real people?
The values are drawn at random from generic word lists (common first and last names, cities, countries, street names, job titles) using the browser’s cryptographically strong random number generator. Any resemblance between a generated name-and-email combination and a real person is pure coincidence — nothing here is scraped from or linked to real records, so it is safe to publish in tests, demos and documentation.
Are the fields in a row consistent with each other?
Yes, where it makes sense. Each row starts from one randomly chosen person, so the full name matches the first and last name, and the email and username are built from that same name (for example Jane Smith → jane.smith@example.com and jsmith417). Independent fields like city, price or colour are randomised separately, which is exactly how real records look.
Which output format should I choose — JSON, CSV or SQL?
Use JSON when you are mocking an API response or seeding a document store — it is an array of objects with real numbers and booleans. Use CSV to open the data in a spreadsheet or bulk-import it, with proper escaping so commas, quotes and line breaks inside a value never break the columns. Use SQL when you want to paste the rows straight into a database: it produces one multi-row INSERT with strings safely quoted and numbers and booleans left unquoted.
How many rows can I generate at once?
From 1 up to 1,000 rows per run, which is enough to seed a table or exercise a paginated list. Everything is generated on your device, so larger sets are limited only to keep the page responsive; press Regenerate for a completely fresh set of values, or change the row count and the output updates instantly.
Is anything uploaded to a server?
No. The entire generator is plain JavaScript that runs in your browser, so the data never leaves your device and the tool keeps working offline. That also means you can safely use it behind a corporate firewall or on an air-gapped machine without worrying about where your test data goes.

Related tools

Explore more tools

Browse all 58 tools →