Mock Data Generator: Fake SQL, JSON, CSV & Excel Test Data
Generate up to 250,000 rows of realistic test data locally, export as SQL, JSON, CSV, or Excel.
Populating a test database usually means hand-typing a dozen rows or wiring a script around Faker.js yourself. This tool wraps that same library behind a schema builder: name a column, pick one of more than 100 bundled field types — full names, IBANs, bitcoin addresses, cron expressions, HTTP status codes — and a pool of Web Workers fills in the rows without freezing the tab, even when you ask for the full quarter-million-row ceiling.
How to generate mock data
- Name each column and pick its data type from the grouped dropdown; a new schema starts with id, full_name and email, and + Add field appends more columns.
- Type a row count from 1 to 250,000 and click Generate — the progress bar fills as each worker chunk finishes.
- Choose JSON, CSV, SQL (INSERT INTO) or Excel (.xlsx) as the export format; picking SQL reveals a Table name field, prefilled with generated_data.
- Check the first 20 rows in the preview table, then click Download. A free export holds up to 2,500 rows per file; Pro lifts that to the full 250,000.
A schema is a list of typed columns, arranged into eleven categories
The field-type catalog is grouped into Identity, Internet & Tech, Location & Geo, Company & Business, Finance, Date & Time, Text & Content, Commerce, Numbers & Identifiers, Vehicle, and Misc, each entry marked as producing a string, number, or boolean value. The dropdown you pick from is a plain data file, kept deliberately faker-free so loading the schema builder never pulls the actual @faker-js/faker library — roughly a megabyte — into the main bundle just to render a list of names.
That real library only loads inside the worker that generates rows, where every catalog id maps to one concrete Faker call. A test suite in the codebase checks the two lists against each other so a type can never appear in the picker without a working generator behind it, or vice versa.
Mock data field types in each of the eleven categories
- Identity: full name, first and last name, job title, gender, zodiac sign, avatar image URL.
- Internet & Tech: email address, username, IPv4 and IPv6 address, user agent, JWT token, semantic version, Git commit SHA.
- Location & Geo: street address, city, ZIP or postal code, country code, latitude, longitude, time zone.
- Company & Business: company name, catchphrase, buzzword phrase, department.
- Finance: IBAN, BIC/SWIFT code, credit card number and CVV, currency code, bitcoin and ethereum addresses.
- Date & Time: past, future and recent dates, birthdate, Unix timestamp, ISO 8601 timestamp.
- Text & Content: lorem word, sentence, paragraph, URL slug.
- Commerce: product name, product description, price, ISBN, UPC barcode, promotion code.
- Numbers & Identifiers: UUID, Nano ID, ULID, auto-incrementing row index, random integer or float, hex/RGB/HSL colour.
- Vehicle: manufacturer, model, VIN, fuel type.
- Misc: animal type, music genre, airline, airport, chemical element, phone number.
Rows are generated in parallel, then exported on the main thread
Generation splits into many small chunks handed to a pool of workers, each chunk seeded from an internal run seed offset by its own starting row index — the offset is what keeps a four-worker split from quietly generating duplicate or overlapping data, not a reproducibility feature you control from the UI. Each finished chunk is itself the progress signal the bar tracks, rather than a separate status message the workers have to send.
Once every chunk lands, the assembled rows sit in memory and export formatting runs synchronously against them — fast even at the row ceiling, since it's no longer touching the network or a worker boundary, just reshaping data that already exists.
Generation goes to 250,000 rows; a free export stops at 2,500
The engineering ceiling — how many rows the worker pool will actually build — sits at 250,000. The free tier's limit is narrower and applies only at the export step: requesting a download above 2,500 rows is blocked with an inline upgrade prompt, while generation and on-screen preview happen at full scale regardless of tier.
Four export formats are offered: JSON, CSV, SQL as INSERT statements, and Excel. The Excel path doesn't pull in a spreadsheet-writing package — it hand-assembles a minimal, valid OOXML SpreadsheetML document inside its own ZIP container, verified structurally by its own test file, and opens cleanly in Excel, LibreOffice, and Google Sheets.
When to reach for generated mock data
- Seeding a development or staging database, so migrations, indexes and slow queries meet realistic volume without anyone copying production records.
- Building tables, forms and dashboards before the backend API exists — the JSON export drops straight into a front-end fixture file.
- Sales demos, screenshots and training environments, where a real customer's name on screen would be a privacy incident.
- Load and pagination tests: generate up to 250,000 rows to see how sorting, search and infinite scroll hold up, keeping in mind that files above 2,500 rows need Pro.
Fabricated data, shaped like the real thing but never tied to it
Fields like credit_card_number, iban, bitcoin_address, and ethereum_address are Faker-generated strings formatted the way a real one looks — they are not linked to any actual bank account, wallet, or person, and there's no guarantee one will satisfy a real payment processor's own checksum or BIN-range rules. They're built for populating a schema or a UI mockup, not for exercising a payment integration.
The same caution applies in the other direction: this data is clean and well-formed on purpose, so it won't exercise the messy edge cases real user input produces — no stray unicode in a name field, no malformed email address, no accidental leading whitespace. Use it to check that a schema holds the right shapes, not as a stand-in for adversarial input testing.
Questions people ask about Mock Data & Fake Database Generator
- Is my schema or generated data sent to a server?
- No. The Faker library runs inside Web Workers in your own tab, and the export file is assembled in memory and handed straight to your browser's download, so neither your column list nor a single generated row travels over the network.
- What data types are available?
- There are 127 field types across 11 categories, from names and job titles to IBANs, IPv6 addresses, VINs, ULIDs and ISO 8601 timestamps. Each type produces a string, number or boolean, and the dropdown groups them by category so the one you want is quick to find.
- Can I set the SQL table name?
- Yes. Selecting SQL (INSERT INTO) as the format shows a Table name field that defaults to generated_data. Any run of characters other than letters, digits, hyphens and underscores is replaced with an underscore, and the cleaned name is used both in the INSERT statements and for the downloaded file.
- Is the generated data realistic?
- Each value looks right on its own, but every column comes from a separate Faker call, so columns aren't linked: a row's city, state and ZIP code won't necessarily belong together, and the email address won't be built from the full name beside it. Treat rows as plausible fragments, not coherent people.
- How many rows can I actually download from a single export?
- On the free tier, an export is capped at 2,500 rows regardless of how many you generated on screen; requesting more triggers an inline upgrade prompt instead of a partial file. Generation itself — filling the schema with data and previewing it — runs all the way up to the 250,000-row engineering ceiling on any tier.
- Will clicking generate again give me the exact same rows?
- No. Each generation run uses a fresh internal seed, so re-running the same schema produces a different dataset every time. The seed you don't see exists only to keep a multi-worker split from duplicating rows within one run, not to make separate runs reproducible against each other.
- Are the fake credit card and bank account numbers safe to use for testing a payment integration?
- They're safe in the sense that they aren't real accounts, but they aren't guaranteed to pass a real processor's own checksum or BIN-range checks either. For testing an actual payment flow, use a processor's own published sandbox numbers rather than this tool's Finance-category fields, which exist for populating database schemas, not for exercising payment logic.
- Does the Excel export require Microsoft Excel to open, or a plugin?
- No. The .xlsx file is a hand-built, standards-compliant OOXML SpreadsheetML document wrapped in its own ZIP container — no third-party spreadsheet library was added to produce it — and it opens directly in Excel, LibreOffice Calc, Google Sheets, or any other application that reads the open XLSX format.
Related tools on BrakeTools
- JSON Formatter & Type Generator — Format, minify, and generate types from JSON payloads up to 100MB+, no freeze.
- SQL Sandbox — Run queries and view a schema ERD against a local SQLite file, zero upload.
- Bulk UUID/GUID Generator — Bulk-generate up to 10,000 RFC-compliant UUID v4 or v7 identifiers, copy or download instantly.
- Credit Card / BIN Checksum Validator — Validate a card's Luhn checksum or grab a published Stripe/PayPal sandbox test number.
Content reviewed 2026-09-27.