Fake Data Generator
Generate realistic fake data for testing and development purposes.
Next steps
Test Credit Card Generator
RecommendedGenerate valid test card numbers for dev and QA — never real.
UUID Generator
RecommendedGenerate v4 UUIDs instantly — copy one or bulk-generate thousands.
JSON Mock Generator
Quickly generate realistic mock JSON data for API tests.
Lorem Ipsum Generator
Generate placeholder text for mockups and designs in one click.
Runs entirely in your browser. No uploads. Your files stay private.
What Is a Fake Data Generator?
A fake data generator produces synthetic records that look like real people - believable first and last names, plausible addresses, well-formed phone numbers - without referencing any real individual. It's the standard way to populate development databases, build UI mockups, and write fixtures for tests without leaking customer PII into your repo.
This generator builds rows in pure TypeScript using small curated word banks (firstNames, lastNames, streets, cities, companies in the source above) sampled with Math.random. The output has the shape and rhythm of a real customer table but is entirely synthetic - the email john.smith@example.com is constructed from the chosen first and last name combined with the IETF's reserved example.com domain (RFC 2606), which is guaranteed to never reach a real inbox.
Phone numbers follow the North American Numbering Plan format (NANP): three-digit area code, three-digit exchange, four-digit subscriber number. The generator restricts the area code to the 100-999 range, which means it can occasionally produce a string that matches a real area code. The number itself is random, not from the 555-01XX range officially reserved for fictional use, so for film/TV use prefer Faker.js's helpers.faker.phone.number('555-01##') pattern instead.
Compared with the de-facto standard library Faker.js (now @faker-js/faker), this tool is intentionally minimal. Faker.js ships ~80 locales, generates 50+ field types (avatars, IBANs, ISBNs, jargon job titles), and supports seeded reproducibility - features you want for serious test fixtures. The advantage of the inline generator here is zero install weight and zero supply-chain risk: no npm dependency, no version pinning, just a script in your tab.
Output flexibility matters because every downstream tool expects a different shape. JSON output (via JSON.stringify with two-space indent) drops cleanly into Postman, Mock Service Worker, REST Client extensions, and TypeScript fixture files. CSV output uses comma-separated cells with no quoting - good enough for simple Excel import, but you should switch to the dedicated CSV exporter if any field can contain commas or newlines (e.g., addresses with embedded apartment numbers).
Important privacy note: the generator runs entirely client-side. Names and addresses never leave your browser, so even when you generate 100 records the data only exists in your tab's memory. For regulated test data (HIPAA, PCI), still don't use any generator's output as a substitute for actual de-identification - synthetic data isn't the same as anonymised data, and seeding a production-like environment with synthetic PII still triggers many compliance scopes.
The deliberate tradeoffs in this build: no seeding (so the same generation isn't reproducible across runs), no locale switching (everything is US-English defaults), and no nullable fields (every record has every field populated). These limit the tool's scope to quick demos and seed data for learning - swap to Faker.js for real test infrastructure where reproducibility and locale matter.
Common Use Cases
01
Quick database seed
Populate a dev sqlite or Postgres table with believable user rows in 30 seconds during prototyping.
02
Postman collection fixtures
Paste the JSON output into a Postman environment variable to drive end-to-end tests against a sandbox API.
03
UI mockup data
Fill a customer-list table in Figma or a React storybook with realistic-looking but obviously synthetic content.
04
Load test payloads
Generate 100 records, paste into k6 / Locust scripts as the request body fixture for soak testing.
Frequently Asked Questions
This build produces name, email, phone, US-format street address, and company. The fields are fixed (no field picker yet) and every record gets every field populated. For richer schemas (job title, IBAN, locale-aware names) install Faker.js into your codebase.
Yes. The JSON button copies a JSON.stringify-formatted array to your clipboard. The CSV button downloads a fake-data.csv file with header row. Note the CSV exporter doesn't quote fields, so commas inside addresses will break parsing in strict CSV consumers - inspect the output first if you need RFC 4180 compliance.
No. The first and last names come from common-name lists used for fictional characters. Combinations like 'John Smith' will inevitably overlap with real people, but the email (using example.com), phone, and address are constructed from random tokens and are not tied to any real individual.
The dropdown caps at 100 in this UI. Internally the generator is just a for-loop over Math.random calls, so you could run it for 10,000 records by changing the count - but the rendered table caps at 10 visible rows for performance and the rest only appear in the export.
No - they're random NANP-format strings, which can occasionally land on real numbers. For published media (videos, screenshots, marketing) prefer reserved 555-0100 to 555-0199 numbers, which are explicitly set aside by the FCC for fictional use. Faker.js can pin to that range.
No. The ZIP is a random 5-digit number between 10000 and 99999, so it likely matches a real ZIP somewhere but won't correspond to the city listed in the same row. For geocode-faithful test data, use Faker.js with a US locale or a dedicated address generator.
No - there is no seed input, so each generation produces different rows. For deterministic test fixtures you'd want a seedable PRNG; Faker.js exposes faker.seed(123) for exactly this. Pin the data inline in your test file if you need stable snapshots.
No. Synthetic data is not the same as anonymized data. Replacing real records with generated ones doesn't satisfy GDPR, HIPAA, or CCPA de-identification because there's no auditable mapping back to the originals. Use proper anonymization tooling (k-anonymity, differential privacy) for production de-identification.
Not in this build. All names, streets, and cities are drawn from US-English banks. For other locales (German Straße addresses, Japanese family names, Indian phone formats) install @faker-js/faker and pass a locale option.
No. Generation runs entirely in JavaScript in your browser. The records exist only in your tab's memory until you copy or download them, after which they live wherever you put them. Closing the tab erases the in-memory dataset.
Advertisement