Fake Data Generator

Build realistic mock data for tests, demos and seed scripts — JSON, CSV, SQL or TypeScript. Free, fast, and your data never leaves your device.

Fields

Output


        

How to use the Fake Data Generator

  1. Choose your fields. Each row is one column: pick a data type on the left and type the column name you want on the right.
  2. Add or remove fields until the shape matches the table, API response or fixture you are building.
  3. Set how many rows you need, from 1 to 500.
  4. Pick an output format — JSON, CSV, SQL INSERT (with your table name) or a TypeScript interface.
  5. Tick "Seeded" and enter a seed if you want the exact same data every time you press Generate — ideal for committed test fixtures and snapshot tests.
  6. Click "Generate data", then copy the result or download it as a file.

Why use ZillaKit's Fake Data Generator?

Every developer eventually needs a hundred plausible users. Hand-typing them is slow and produces the kind of data that hides bugs — everybody named "test test" with the email "a@a.com". Real-looking mock data surfaces the problems you actually ship: names with apostrophes that break your SQL escaping, company names with commas that break your CSV parser, addresses long enough to overflow a fixed-width column. This generator builds that data from inline word banks of over a hundred first names, surnames, cities and companies, deliberately including the awkward cases, and emits it in the four formats developers reach for most: JSON for API mocks and fixtures, CSV for spreadsheet imports and bulk-load tools, SQL INSERT statements for seeding a database directly, and a TypeScript interface so your types match the shape you just generated. The seeded mode uses a small deterministic pseudo-random generator, so the same seed always yields byte-identical output — which means you can commit a fixture, regenerate it on another machine, and get the same rows. There are no external libraries, no API calls and no rate limits: everything is computed in your browser, so the data you generate is never sent anywhere and you can generate as much of it as you like, free.

Choosing the right format

JSON gives you an array of objects, pretty-printed with two-space indentation, ready to paste into a fixture file or a mock API handler. CSV writes a header row followed by one line per record, quoting any value that contains a comma, a quote or a newline and doubling embedded quotes, so it round-trips through Excel, Google Sheets and any standards-compliant parser. SQL INSERT produces batched multi-row insert statements against the table name you supply, escaping single quotes by doubling them — the ANSI-standard approach that works in PostgreSQL, SQLite, SQL Server and MySQL in standard mode. TypeScript interface emits the type declaration plus a typed sample array, so the mock data and its type never drift apart. Whichever you pick, the underlying rows are identical — only the serialisation changes.

FAQ

Is any of this data sent to a server?

No. The word banks are embedded in the page and the rows are generated by JavaScript running in your browser tab. There is no API call, no rate limit, no signup and no logging. You can disconnect from the internet after the page loads and it will still work.

What does "seeded" mean, and when should I use it?

Seeded mode replaces the browser's random number source with a small deterministic generator driven by the seed you type. The same seed, field list and row count always produce exactly the same output. Use it for test fixtures you commit to a repository, for snapshot tests, and any time a colleague needs to reproduce the data you are looking at. Leave it off when you just want fresh random rows each time.

Are the names, emails and companies real?

No. The surnames and first names are common ones, but they are combined at random, so any resemblance to a real person is coincidental. Email addresses use reserved example domains that cannot receive mail, and the company names are invented or drawn from well-known fictional placeholders. Never use generated data as if it identified a real individual.

Does the SQL output handle apostrophes safely?

Yes — single quotes inside values are escaped by doubling them, which is the SQL-standard form and is safe in PostgreSQL, SQLite, SQL Server and MySQL running in standard mode. The word banks deliberately include names like O'Brien and companies like Margie's Travel precisely so you can see the escaping work. That said, generated INSERT statements are for seeding development databases; never build production SQL by concatenating strings — use parameterised queries.

Can I control the column names?

Yes. Every field row has an editable column name. The default is a sensible snake_case name for the type, but you can rename it to anything your schema uses. The name you type is what appears in the JSON keys, the CSV header, the SQL column list and the TypeScript interface.

Why is the row limit 500?

Five hundred rows is enough for essentially any fixture, demo or seed script, renders instantly and keeps the output pane responsive. If you need more, generate several batches with different seeds and concatenate them, or copy the logic — it is plain JavaScript on the page.