Seeding a database or building a demo screen is far easier with believable-but-fake people. This generator produces complete fictional profiles — name, age, address, phone, email, and job — that are internally consistent and safe to use as placeholder data.
How it works
Each profile draws a first and last name from name pools, then derives a matching email such as [email protected] so the record is self-consistent. A date of birth is generated within a realistic age range and the age is computed from it. Address, phone (using fictional ranges), and a job title are picked independently. The whole batch can be copied as a JSON array, ideal for fixtures and seed scripts.
When developers need fake profiles
Unit and integration tests. Most test frameworks discourage using production data in test databases for privacy and reproducibility reasons. Fake profiles give each test run a clean, predictable dataset with no PII.
Demo and staging environments. Sales teams, designers, and QA testers all need to log in and see a realistic application state. Populating a demo environment with ten or twenty coherent profiles — not “Test User 1” through “Test User 10” — makes demos more convincing and catches layout issues with real-length names and addresses.
UI development. A design that looks fine with “John Smith” may break badly with “Bartholomew Achterberg-Visser.” Generating a varied batch up front surfaces edge cases in truncation, avatar initials, and sorting logic before they reach production.
GDPR and data-minimisation compliance. Development and testing environments legally should not contain real customer data. Fake profiles let teams build realistic fixtures without any regulatory exposure.
Load and performance testing. Scripts that simulate concurrent user actions — logins, form submissions, API calls — need unique identifiers per simulated user. Bulk-generated profiles provide realistic seed data for k6, JMeter, or custom scripts.
What internal consistency means here
A generated profile’s email ([email protected]) is derived from the name fields, so the record makes sense as a whole. The age is computed from the date of birth so the two fields always agree. Phone numbers use clearly non-callable formats (e.g. reserved ranges or obviously fictional number patterns) so they cannot accidentally connect to a real subscriber.
Tips for using the JSON output
The copy-as-JSON button produces a plain array of objects you can paste directly into:
- Prisma / Sequelize seed scripts —
createMany({ data: profiles }) - MongoDB seed —
insertMany(profiles) - Mock REST API servers (e.g. json-server) — paste as the
db.jsonuserscollection - Postman environment variables — generate one profile, paste the object as a pre-request script variable to drive dynamic test data
Increase the count before copying to populate a whole table at once, then re-generate when you want a fresh cohort with new names and addresses.