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) sampled with Math.random. The output has the shape and rhythm of a real customer table but is entirely synthetic - the email john.smith0@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 is RFC 4180 compliant - fields containing commas or quotes are wrapped in double-quotes so the output imports cleanly into Excel, Google Sheets, and strict CSV parsers.
A note on regulated data: the generator never POSTs your output anywhere - names, addresses, and emails stay in browser memory and disappear when you close the tab - but synthetic-looking data is not the same as anonymised data. If you are seeding a production-like environment subject to HIPAA, PCI-DSS, or GDPR scope, this output is fine for local development, unit-test fixtures, and CI seed data, but it is not a substitute for the de-identification step you need before any pipeline touches real production records. The output looks plausible by design, which is exactly why dropping it into the wrong context can mask a missing redaction step.
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.