Mock Data Generator
Generate realistic fake data (names, emails, addresses, dates, lorem) as JSON or CSV
How to Mock Data Generator Online
Generate realistic fake data — names, emails, addresses, dates, IDs — as JSON or CSV.
- Define your schema: each row has a field name (the JSON key or CSV column) and a type from the dropdown.
- Add or remove fields with the + and trash icons.
- Set the row count (up to 1000) and choose JSON or CSV output.
- Click Generate. The first click lazy-loads the faker library (~3 MB) — subsequent clicks are instant.
- The output appears below with a character count. Click Copy to put it on your clipboard.
- Use the resulting data to seed dev databases, populate UI mockups, or stress-test layouts with realistic content lengths.
About Mock Data Generator
Test data is the silent foundation of every quality engineering process. The reason your design looks great in a Figma mockup and looks broken in production is almost always that you tested with placeholder text "Test User 1" through "Test User 5" and never saw what a real "Christopher Davydovitch-Petersen, VP of Customer Experience at Anthropic" looks like in your row layout. Generating *plausibly real* test data — names with the right average length, addresses with real-looking structure, emails that pass validation, dates spanning realistic ranges — is the difference between a UI that handles real users and one that breaks on the third real signup.
This tool wraps **`@faker-js/faker`**, the maintained successor to the original `faker.js` library and the most-used JavaScript fake-data generator. Under the hood it pulls from dictionaries of real census-frequency names, real city and country lists, real-format postal codes per country, and idiomatic email/phone/username conventions. Combine those with a seeded PRNG and you get rows that look right at a glance — and crucially, that have the right *statistical properties*. Real names average ~12 characters; placeholder "User 1" averages 6, which fits in narrower columns than reality. Generating real-looking names surfaces layout bugs that simple placeholders hide.
The tool exposes the 21 most common field types: names (full / first / last / username), contact info (email, phone, URL, avatar URL), business info (company, job title), addresses (street, city, country, ZIP), identifiers (UUID v4), dates (past, future, both ISO 8601), primitives (number 0–10000, boolean), and prose (Lorem sentence, Lorem paragraph). For each row, faker draws from its dictionaries and the seeded PRNG, so every Generate click produces different data. To get reproducible output, you would need a faker seed — that requires calling faker directly in Node and is beyond the scope of an in-browser tool.
**Lazy-loading is mandatory** for this tool. The faker library is large (~3 MB unminified, much smaller compressed but still substantial relative to a typical web bundle) because the dictionaries themselves are large. Loading it on every page visit would penalize the 95% of visitors who arrive at the site and never click into the Mock Data Generator. The tool uses dynamic `import('@faker-js/faker')` inside the Generate handler, so the library downloads only when you actually need it. The first Generate click shows a loading spinner; subsequent clicks are instant because the browser cached the module.
The **row cap is 1000** — enough for nearly every dev-seed workload but small enough that the browser can render the resulting JSON output in a textarea without lag. For larger datasets (tens of thousands of rows), the right tool is a Node script: `npm install @faker-js/faker`, generate to a file, ingest into your dev database. The library API is identical to what this tool uses. For really large datasets (millions of rows for performance testing), faker is too slow; use a dedicated tool like Mockaroo or a hand-rolled generator that streams output.
**Output formats**: JSON is the right pick when you are pasting into a script or REST API; CSV is the right pick when you are pasting into a spreadsheet, a database import tool, or a SQL `COPY` statement. CSV output escapes embedded commas and quotes per RFC 4180, so the result imports cleanly into Excel, Numbers, Google Sheets, and Postgres' `COPY`. JSON output is pretty-printed with 2-space indent.
A **safety note** the FAQ already touches on: do not use fake data in user-facing production systems. Fake email addresses look real but the domain may or may not exist; sending real signup confirmations to them generates bounces. Fake phone numbers occasionally hit real numbers and produce confused calls. Fake addresses can match real businesses. Test data belongs in test environments — and conversely, test environments should be seeded with fake data, not anonymized production data (which has its own privacy and compliance issues).
Everything runs in your browser. The page makes one network request the first time you click Generate (to fetch the faker module from your own origin). The generated rows live only in the textarea until you copy them or close the tab — no logging, no telemetry, no transmission.
Related Tools
Frequently Asked Questions
Where does the fake data come from?
The `@faker-js/faker` library, the successor to the original `faker.js`. It ships dictionaries of real-looking names, addresses, companies, and so on, and uses a seeded PRNG to combine them into plausible records. Names are drawn from real census frequency data, addresses match real-looking postal formats, and emails use the username/domain conventions you would see in production. The data is *plausible* — not real. None of the names, emails, or addresses correspond to actual people.
Why does the first Generate take a few seconds?
Because the tool lazy-loads `@faker-js/faker` (~3 MB unminified, much smaller compressed) only when you click Generate. Loading 3 MB on every page visit would penalize users who never use this specific tool. Subsequent Generate clicks are instant — the library is cached for the rest of the session.
Is the data safe to use for production seeds?
For dev / staging / test environments: yes. The data looks like real data, which is useful for catching layout issues, performance problems with realistic content lengths, and demo screenshots that don't say 'Lorem ipsum' everywhere. For production: never seed real-user-facing systems with fake data — fake emails route nowhere, fake phone numbers may route to real people who happen to have that number, fake addresses may correspond to real businesses. Test data belongs in test environments.
Why is the row limit 1000?
Because the tool generates everything in memory in your browser and renders the JSON output in a textarea. Past a few thousand rows, the React render of the textarea slows perceptibly. For larger datasets, install faker locally (`npm install @faker-js/faker`) and run a Node script — same library, no browser bottleneck.
Can I customize the field types?
The dropdown covers the 21 most common types. For uncommon types (specific country addresses, IBAN numbers, ISBN, specific date ranges) you would need to call faker directly. The library exposes hundreds of generators; this tool exposes the subset most teams actually use day-to-day.
What is the difference between Lorem sentence and Lorem paragraph?
Lorem sentence emits a single sentence of placeholder Latin (around 5–10 words). Lorem paragraph emits 3–6 sentences joined together. Use sentence for short fields like 'description' and paragraph for longer fields like 'bio' or 'content'. Both use the same word list as the Lorem Ipsum Generator tool.
Is the generated data sent to a server?
No. Faker runs entirely in your browser. The library is fetched once from your own origin (when you first click Generate) and cached. The generated rows live only in the page's textarea until you copy them. No external service sees the data.