Mock Data Generator

Generate realistic fake data as JSON, CSV, or SQL.

Fake data built locally, nothing uploaded

Generate fake test data as JSON, CSV or SQL

Fields
Example — press Generate for a fresh dataset

About this mock data generator

Pick the fields you need — names, emails, phone numbers, companies, job titles, cities, dates, prices — choose how many rows (up to 1,000), and generate test data as JSON, CSV, or ready-to-run SQL INSERT statements. Emails are derived from each row’s name, phone numbers follow the (555) 123-4567 pattern, and IDs come as sequential integers or real UUIDs, so the output drops straight into seed scripts, fixtures, and demos.

Unlike most generators, the name pools mix Anglo and Hispanic names — with plenty of Puerto Rican and Latin American surnames and cities — so your test users look like real users instead of twenty John Does. CSV fields are quoted and escaped correctly, SQL strings are escaped and identifiers sanitized, and everything runs locally in your browser: no account, no API key, no rate limits, nothing sent to any server.

What the generator makes — and what it doesn't

Every click produces one flat list of independent rows — an array in JSON, a single table in CSV or SQL. There are no relationships between rows and no second table: each row is filled field by field from the built-in pools, with nothing linking one row to another. That makes it right for seeding a single table or a fixture file, and wrong for anything that needs referential integrity or foreign keys.

ValueUnique across rows?Note
idWithin one batchSequential 1…N; a second generation restarts at 1, so ids overlap between batches.
uuidYescrypto.randomUUID() — a collision is astronomically unlikely.
emailNoBuilt from the row's own name plus a random domain, so two rows can land on the same address.
phoneNoFully random digits in the (NXX) NXX-XXXX shape; duplicates are possible, more so at high row counts.
name, city, company, countryNoDrawn from small fixed pools, so repeats are expected and normal.

The row count is capped at 1,000 per generation (values below 1 or above 1,000 are clamped to that range). Because names and cities carry accents — José, Ramírez, México — open the CSV through an import dialog rather than double-clicking it, so the UTF-8 survives:

  1. Excel: Data > From Text/CSV, then set File Origin to "65001: Unicode (UTF-8)" before you Load.
  2. Google Sheets: File > Import, upload the file, and pick the separator character.
  3. Or use the JSON output, which is UTF-8 with no encoding dialog to get wrong.

FAQ

Does the generated data contain real personal information?

No. Every value is assembled on the fly from built-in lists of names, companies, and cities — any match with a real person is coincidence. Nothing is stored either: reload the page and the data is gone.

Can I run the SQL output directly in my database?

Yes. Choose SQL INSERT, set the table name, and copy or download the .sql file. Identifiers are sanitized and strings escaped, so the statement runs as-is in PostgreSQL, MySQL, or SQLite once a table with matching columns exists.

Why do the emails match the names?

Realistic test data should be internally consistent, so each row’s email is derived from its own name — lowercased, accents stripped, with a varied mail domain. "José Rodríguez" becomes something like jose.rodriguez@gmail.com.

Related tools