Dummy Data Generator
Generate realistic fake test data including names, emails, addresses, and custom schemas for development and testing
Updated
What is the Dummy Data Generator?
Generate sample data for development, testing, and prototypes. The generator can create related values, such as an email based on a generated name, and supports nested structures. These are fictional test values, not verified records; avoid using them as real contact or account information.
Why Developers Choose This Tool
Related sample values: Where possible, emails are based on generated names, and address and phone fields use plausible formats. These values are not verified against real addresses, phone numbers, or accounts.
Visual Schema Builder: No JSON templates to memorize. Add fields through an intuitive interface, nest objects and arrays visually, and see your structure take shape in real time.
Multiple Export Formats: Generate once, use everywhere. Export as JSON for APIs, CSV for spreadsheets, SQL for database seeding, or TypeScript for type-safe development.
Live Preview: See exactly what your data looks like before generating thousands of records. One-click preview updates instantly as you modify your schema.
Built-In Data Types
| Category | Types |
|---|---|
| Identity | First name, last name, full name, email, phone |
| Location | Full address, city, country, ZIP code |
| Business | Company name, job title |
| Technical | UUID, URL, IP address, hex color |
| Numeric | Integer, decimal with custom ranges |
| Temporal | Date, ISO datetime |
| Content | Lorem ipsum (configurable length), custom enums |
| Structure | Nested objects, arrays with typed items |
Other features
- Schema Templates: Start instantly with pre-built User, E-commerce, Blog, and API Response schemas
- Schema Persistence: Save and reload your custom schemas via localStorage
- Batch Generation: Generate up to 10,000 records per batch
- Smart Arrays: Define array length and item types—arrays of primitives or complex objects
- Validation: Real-time schema validation catches duplicate keys, invalid identifiers, and type misconfigurations before generation
How it works
Build a schema by adding fields, choosing a type for each one, and setting any options such as a numeric range or enum values. Use object and array fields for nested data. A preview lets you check the structure before generating a batch.
Choose an output format based on how you plan to use the sample:
- JSON keeps nested objects and arrays.
- CSV is convenient for spreadsheets; nested values are flattened into columns.
- SQL creates
INSERTstatements for a table name you provide. - TypeScript creates type definitions from the schema.
The generator uses pseudorandom values, so each run can produce different results. It does not retrieve or verify real-world information. Review generated output before using it, and do not treat sample values as real user records or use them to contact people. Saved schemas are kept in your browser's local storage.
Examples
Generate User Profiles
Create realistic user profiles with names, emails, and addresses for testing a user management system
Schema: firstName, lastName, email, phone, address, city, country, isActive. Count: 100. Format: JSON.[{"firstName":"James","lastName":"Smith","email":"james.smith@gmail.com","phone":"(555) 123-4567","address":"123 Oak Ave","city":"Seattle","country":"United States","isActive":true}, ...]E-commerce Product Data
Generate product catalog data with prices, SKUs, and categories for an online store
Schema: name (lorem 3 words), sku (UUID), price (float 9.99-999.99), category (enum), inStock (boolean). Count: 500. Format: CSV.name,sku,price,category,inStock
Wireless Bluetooth Headphones,a1b2c3d4,79.99,Electronics,true
Ergonomic Office Chair,e5f6g7h8,249.50,Furniture,true,...Nested API Response
Create complex nested JSON structures with arrays and objects for API testing
Root: object. Fields: success (boolean), data (array of 10 objects with id, value), meta (object with total, page, timestamp). Format: JSON pretty print.{
"success": true,
"data": [{"id":"550e8400-e29b-41d4-a716-446655440000","value":42},...],
"meta": {"total":100,"page":1,"timestamp":"2026-07-25T10:00:00.000Z"}
}SQL Database Seeding
Generate SQL INSERT statements to populate a customers table
Schema: id (UUID), firstName, lastName, email, createdAt (datetime). Table name: customers. Count: 1000. Format: SQL.INSERT INTO customers (id, firstName, lastName, email, createdAt) VALUES ('a1b2c3d4','Sarah','Johnson','sarah.johnson@outlook.com','2026-07-25 10:00:00');...TypeScript Interface
Generate TypeScript type definitions from your data schema
Schema: id (UUID), name (fullName), age (integer 18-100), email, tags (array of strings). Format: TypeScript.export interface MyData {
id?: string;
name?: string;
age?: number;
email?: string;
tags?: string[];
}Frequently asked questions
What is dummy data and why do I need it?
What is dummy data and why do I need it?
Dummy data is sample information used during software development and testing. It can help populate prototypes, exercise database queries, or test an interface before real user data is available. The generated values are not verified real-world records and should not be used to contact people or represent actual users.
Is the generated data truly random?
Is the generated data truly random?
Values are pseudorandom and drawn from built-in lists and formatting rules. Addresses and contact details are plausible-looking, not checked against real addresses or phone numbers. Results can differ each time you generate them. This tool is not suitable for passwords or other security-sensitive values.
Can I generate relationships between fields?
Can I generate relationships between fields?
Yes. Some field types can use other values in the same record; for example, an email may be formed from generated first and last names. The result is still sample data and may not belong to a real account.
What is the maximum number of records I can generate?
What is the maximum number of records I can generate?
The tool supports 1 to 10,000 records per generation. Larger batches and complex schemas may take longer or use more memory, depending on your browser and device.
Why does my email not match the first and last name?
Why does my email not match the first and last name?
This occurs when fields use inconsistent key names. The generator recognizes standard variants: firstName/first_name, lastName/last_name. If you use non-standard keys like fname or firstname, the email generator cannot find the context values and falls back to random generation. Use the built-in field types or standard snake_case/camelCase naming for automatic relationship detection.
How do I create arrays of objects?
How do I create arrays of objects?
Use the Array field type, set your desired length, then click "Add Field" to define the array item structure. The child fields you add represent properties of each array element. For example, an orders array with id and total children generates: [{id: "...", total: 99.99}, {id: "...", total: 45.50}, ...].
Can I save my schema for later use?
Can I save my schema for later use?
Yes. Click Save Schema in the Options section, provide a name, and your configuration persists to browser localStorage. Saved schemas appear below the template buttons and survive page reloads. To delete a saved schema, click the trash icon next to its name. Export/import via copy-paste of the generated JSON is also possible.
Why is my CSV output missing columns?
Why is my CSV output missing columns?
CSV flattening uses dot notation for nested keys. A field user with child name becomes column user.name. Arrays JSON-stringify into single cells. If columns appear merged, your spreadsheet application may be interpreting commas incorrectly—ensure UTF-8 encoding and proper CSV parsing. For deeply nested data, JSON format preserves structure better than CSV.
How do I generate SQL for multiple tables?
How do I generate SQL for multiple tables?
Generate separately for each table with appropriate schemas, then combine the output. The tool generates INSERT statements only—no CREATE TABLE definitions. Include primary keys in your schema if you need to reference them for foreign key relationships. For complex multi-table seeding with foreign keys, generate in dependency order (parent tables first).
What is the difference between Date and DateTime types?
What is the difference between Date and DateTime types?
Date generates ISO 8601 calendar dates: 2026-07-25 (YYYY-MM-DD format). DateTime generates full ISO timestamps: 2026-07-25T10:00:00.000Z including time and timezone. Both sample from 1970 to present with uniform distribution. Use Date for birthdates, anniversaries, or calendar events. Use DateTime for created_at timestamps, event logs, or precise scheduling.
Can I customize the lorem ipsum word count?
Can I customize the lorem ipsum word count?
Yes. When selecting the Lorem Ipsum field type, a "Words" input appears. Specify any count from 1 to 1000. The generator repeats and shuffles a 64-word Latin pool to fulfill longer requests. Output always ends with a period and capitalizes the first letter for realistic sentence appearance.
Why does my enum field show null values?
Why does my enum field show null values?
Enum fields require at least one option. Ensure you've entered comma-separated values in the options field (e.g., active, inactive, pending). Empty options or malformed input (trailing commas, no values) triggers validation errors before generation. The tool randomly selects from provided options with uniform distribution.
How do I generate realistic phone numbers?
How do I generate realistic phone numbers?
The Phone type generates North American format: (XXX) XXX-XXXX with valid area codes (200-999). For international formats, use the Custom Enum type with your specific number patterns, or generate component fields (country code, area code, number) and combine with an Object type.
Can I import my existing JSON schema?
Can I import my existing JSON schema?
Direct import is not supported. However, you can manually recreate any structure using the visual builder: map JSON keys to field keys, determine appropriate types (string → lorem/enum/name depending on content pattern), and replicate nested objects with the Object type. For complex existing schemas, generate sample data in JSON format, then use the TypeScript export to get matching type definitions.
What happens if I exceed browser storage?
What happens if I exceed browser storage?
Saved schemas store in localStorage with a typical 5MB quota. Large schemas with many nested fields consume more space. If quota is exceeded, the tool shows a save error and suggests deleting older schemas. Generated data is never stored—only schemas—so large generations do not impact storage.
Is my data sent to any server?
Is my data sent to any server?
The sample generation runs in your browser, and the schema and generated values are not sent to a remote data-generation service. Saved schemas remain in your browser's local storage. Avoid entering real personal information or secrets.
Why does the preview differ from full generation?
Why does the preview differ from full generation?
The Preview generates exactly 1 record with identical logic as full generation. Differences in appearance are due to: (1) pretty-printing toggle affecting JSON formatting, (2) root type (object vs array) changing wrapper structure, or (3) random variation between generations—click "Regenerate" to see new random samples. If structural differences appear, verify your schema hasn't changed between preview and generation.
How do I generate sequential IDs instead of UUIDs?
How do I generate sequential IDs instead of UUIDs?
Use the Integer type with appropriate min/max for your range. For true sequential generation (1, 2, 3...), the current version uses random integers. For strict sequences, generate with UUIDs then post-process with a script, or use Integer and sort after generation. UUIDs are preferred for test data as they reveal sorting/aggregation bugs that sequential IDs might mask.
Can I generate data in multiple languages?
Can I generate data in multiple languages?
Built-in pools are English-centric. For other languages: (1) use Custom Enum fields with your own name/address pools, (2) generate English data and transform externally, or (3) use the Lorem Ipsum type which uses Latin (language-neutral). Full internationalization of all data types is planned for future versions.
Related tools
More utilities you might find handy.
Barcode Generator - Free Code128 Creator Online
Generate Code128 barcodes online instantly. Create free printable SVG and PNG barcodes with custom sizes, colors, and text.
Dot Grid Generator
Generate printable dot grids for bullet journals, sketching, and calligraphy.
Gitignore Generator
Generate a custom .gitignore file for any tech stack, framework, or language.