PK Systems PK Systems
Generators

Mock Data Generator

Build a custom schema and download fake JSON, CSV or SQL — names, emails, UUIDs, dates and more.

Mock Data Generator

Up to 1,000 rows per run.

Add one row per column. Pick a column name and a data type.

Output

What this tool does

Generates realistic-looking fake data for development, testing, demos, design mockups and database seeding. Define a schema column by column, pick a regional flavour (English US names, Brazilian Portuguese names, or Spanish names from across Latin America and Spain), and export up to 1,000 rows as a JSON array, a CSV file, or a list of SQL INSERT statements ready to paste into a migration. The generator is entirely offline — there is no upload, no signup, no quota and the page makes no network calls during generation. Random values come from crypto.getRandomValues(), not Math.random(), so UUIDs are RFC 4122 compliant and integer ranges are unbiased. Locales ship with curated pools of first names, last names, cities, streets, companies and job titles, plus locale-aware phone formatting (US, Brazilian and Spanish patterns) and email domains that are safe to use in tests (example.com, example.org).

How to use it

Pick a row count and a locale; the locale only changes the names, cities and phone format — the column types you choose stay the same. Add columns by clicking Add column: each row takes a column name (used as the JSON key, CSV header and SQL column) plus a data type (first name, email, UUID, integer, etc.). Switch the output format chip between JSON, CSV and SQL — for SQL, fill the table name field. Hit Generate, then copy the output to your clipboard or download it as a file. Re-running with the same schema gives different values every time because the RNG is unseeded.

How the values are generated

For each row, the generator walks the schema column by column. Names, cities, streets, companies and job titles are drawn from a per-locale pool with crypto RNG. Emails combine a slugified first and last name with a small numeric salt and a safe test-domain (example.com, exemplo.com.br, ejemplo.com). UUIDs follow RFC 4122 v4 with the version and variant nibbles forced. Phone numbers use locale-specific patterns (US +1 (XXX) XXX-XXXX, Brazilian +55 (XX) 9XXXX-XXXX, Spanish +34 XXX XXX XXX). Integers default to [0, 99999], decimals to two-decimal floats in [0, 1000], dates to ISO YYYY-MM-DD between 1980 and 2024. CSV output escapes values containing commas, quotes or newlines per RFC 4180. SQL output backtick-quotes table and column names and single-quotes string values with the escape ''.

Available column types

Each column type below is locale-aware where it makes sense.

Type Example
First nameOlivia, João, Sofía
Emailolivia.brown@example.com
Phone number+1 555-0142
UUID v43f2c1a90-…-4b21
Date (YYYY-MM-DD)2024-08-12
Booleantrue / false

Frequently asked questions

Is the data unique across runs?
UUIDs are unique with overwhelming probability (122 random bits per value). Other types come from finite pools, so duplicates appear once a column has more rows than the pool size — typically after 100-200 rows.
How big can I go?
1,000 rows per run, capped to keep the in-browser preview snappy. For larger seeds, run the tool a few times and concatenate, or paste the SQL output into a migration that you re-run.
Are emails safe to use in tests?
Yes. We only use IANA-reserved test domains (example.com, example.org) and locale-equivalent placeholders (exemplo.com.br, ejemplo.com). Mail to those domains is silently dropped, so test runs can't accidentally email a real person.
Can I add my own column types?
Not in the UI — the type list is fixed to the 18 most common cases. If you need a custom enum or a specific format, generate the rest of the row here and post-process the output with a quick script.
Why does my SQL output have backticks?
Backticks are MySQL syntax for quoting identifiers. They work in MySQL, MariaDB and SQLite. For PostgreSQL, swap them for double quotes (or remove them — PostgreSQL only requires quoting if the name is a reserved word).
Is anything uploaded?
No. Generation runs in your browser; the page makes no network calls during it. The output stays on your device until you download or copy it.