Tool Guide8 min read

Random Data Generator: Create Realistic Test Data at Scale

Learn how to generate realistic test data with our Random Data Generator. Support for 15+ data types, 20+ locales, custom formats, and bulk generation up to 100,000 records per request.

AppHighway Teamblog.common.updated January 9, 2025

TL;DR

  • Generate realistic test data across 15+ data types (names, emails, phones, addresses, dates, numbers, UUIDs, IPs)
  • Support for 20+ locales with native formatting (en-US, de-DE, fr-FR, ja-JP, and more)
  • Create custom formats using templates, regex patterns, and placeholder replacement
  • Bulk generation: Generate up to 100,000 records in seconds with CSV, JSON, or SQL output
  • Cost-effective: Just 1 point per 1,000 records, perfect for large-scale testing and development

Supported Data Types

The Random Data Generator supports 15+ data type categories, each with multiple variations and formatting options. All data is generated using industry-standard faker libraries to ensure realistic and diverse output.

Why It Matters

Different testing scenarios require different types of data. Our comprehensive data type support means you can generate complete, realistic datasets without using multiple tools or writing custom generation logic.

Names

Available Types:

  • First name
  • Last name
  • Full name
  • Prefix (Mr., Dr.)
  • Suffix (Jr., III)

Example: firstName: 'Emma', lastName: 'Johnson', fullName: 'Dr. Emma Johnson III'

Contact Information

Available Types:

  • Email addresses
  • Phone numbers
  • Company emails
  • Mobile numbers
  • International phone formats

Example: email: 'emma.johnson@example.com', phone: '+1-555-123-4567'

Addresses

Available Types:

  • Street address
  • City
  • State/Province
  • ZIP/Postal code
  • Country
  • Full address

Example: street: '742 Evergreen Terrace', city: 'Springfield', zip: '90210'

Dates & Times

Available Types:

  • Past dates
  • Future dates
  • Recent dates
  • Birthdays
  • Timestamps
  • Custom ranges

Example: birthdate: '1985-03-15', createdAt: '2024-11-23T14:30:00Z'

Numbers & Finance

Available Types:

  • Integers (with ranges)
  • Decimals/Floats
  • Prices/Currency
  • Credit card numbers
  • Bank account numbers

Example: price: 49.99, accountNumber: '12345678', cardNumber: '4532-****-****-1234'

Technical Data

Available Types:

  • UUIDs
  • IP addresses (v4/v6)
  • MAC addresses
  • User agents
  • URLs
  • Domain names

Example: uuid: '550e8400-e29b-41d4-a716-446655440000', ip: '192.168.1.42'

Text & Content

Available Types:

  • Lorem ipsum
  • Paragraphs
  • Sentences
  • Words
  • Slugs
  • File names

Example: title: 'Quick brown fox jumps', slug: 'quick-brown-fox-jumps'

Company Data

Available Types:

  • Company names
  • Job titles
  • Departments
  • Industry types
  • Company emails

Example: company: 'TechCorp Inc.', jobTitle: 'Senior Software Engineer'

Data Type Examples

Quick reference for common data types and their output formats

Nameperson.fullName

Sarah Mitchell

Emailinternet.email

sarah.mitchell@example.com

Phonephone.number

+1-555-234-5678

Addresslocation.streetAddress

123 Oak Avenue

Datedate.past

2023-08-15T10:30:00Z

Numbernumber.int(1, 100)

42

UUIDstring.uuid

f47ac10b-58cc-4372-a567-0e02b2c3d479

IP Addressinternet.ipv4

192.168.1.100

Performance Note: All data types are generated at the same speed: approximately 5,000 records per second. Complex data types (like full addresses with multiple fields) count as a single record.

Multi-Locale Support

Generate data in 20+ locales with native formatting for names, addresses, phone numbers, and more. Each locale provides culturally appropriate and realistic data specific to that region.

Why It Matters

Testing international applications requires realistic data from different regions. Our locale support ensures that generated names, addresses, and phone numbers match local formats and conventions, making your test data truly representative of your user base.

English (United States) (en-US)

Name: John Smith, Phone: (555) 123-4567, Address: 123 Main St, New York, NY 10001

German (Germany) (de-DE)

Name: Hans Müller, Phone: 030 12345678, Address: Hauptstraße 42, 10115 Berlin

French (France) (fr-FR)

Name: Marie Dubois, Phone: 01 23 45 67 89, Address: 12 Rue de la Paix, 75001 Paris

Spanish (Spain) (es-ES)

Name: Carlos García, Phone: 912 34 56 78, Address: Calle Mayor 15, 28013 Madrid

Italian (Italy) (it-IT)

Name: Giovanni Rossi, Phone: 06 1234 5678, Address: Via Roma 10, 00100 Roma

Dutch (Netherlands) (nl-NL)

Name: Jan de Vries, Phone: 020 123 4567, Address: Damstraat 1, 1012 Amsterdam

Portuguese (Brazil) (pt-BR)

Name: João Silva, Phone: (11) 98765-4321, Address: Rua Paulista 100, São Paulo

Japanese (Japan) (ja-JP)

Name: 田中太郎 (Tanaka Taro), Phone: 03-1234-5678, Address: 東京都渋谷区 1-2-3

Chinese (China) (zh-CN)

Name: 王伟 (Wang Wei), Phone: 010-12345678, Address: 北京市朝阳区中央大街100号

Korean (South Korea) (ko-KR)

Name: 김민수 (Kim Min-su), Phone: 02-1234-5678, Address: 서울특별시 강남구 테헤란로 123

Russian (Russia) (ru-RU)

Name: Иван Петров, Phone: +7 (495) 123-45-67, Address: ул. Ленина 10, Москва

Polish (Poland) (pl-PL)

Name: Jan Kowalski, Phone: 22 123 45 67, Address: ul. Marszałkowska 1, Warszawa

Turkish (Turkey) (tr-TR)

Name: Ahmet Yılmaz, Phone: (212) 123 45 67, Address: İstiklal Caddesi 42, İstanbul

Swedish (Sweden) (sv-SE)

Name: Erik Andersson, Phone: 08-123 456 78, Address: Storgatan 10, Stockholm

Danish (Denmark) (da-DK)

Name: Lars Nielsen, Phone: 33 12 34 56, Address: Strøget 1, København

Finnish (Finland) (fi-FI)

Name: Matti Virtanen, Phone: 09 1234567, Address: Mannerheimintie 1, Helsinki

Norwegian (Norway) (no-NO)

Name: Ole Hansen, Phone: 22 12 34 56, Address: Karl Johans gate 1, Oslo

Czech (Czech Republic) (cs-CZ)

Name: Jan Novák, Phone: 224 123 456, Address: Václavské náměstí 1, Praha

Greek (Greece) (el-GR)

Name: Γιώργος Παπαδόπουλος, Phone: 210 123 4567, Address: Πλατεία Συντάγματος 1, Αθήνα

Arabic (Saudi Arabia) (ar-SA)

Name: محمد أحمد, Phone: 011 123 4567, Address: شارع الملك فهد، الرياض

Mixed Locale Generation

Generate datasets with multiple locales in a single request, perfect for testing international applications.

Request 10,000 records: 60% en-US, 20% de-DE, 20% fr-FR

Custom Format Templates

Create custom data formats using templates, regex patterns, and placeholder replacement. Define exactly how your generated data should look, from simple patterns to complex composite fields.

Why It Matters

Every application has unique data requirements. Custom formats let you generate data that matches your exact schema, validation rules, and business logic without post-processing.

Template Syntax

Use curly braces to insert generated values into templates

blogRandomDataGenerator.customFormats.templateSyntax.placeholders.0.syntax

Insert a first name

Example: "Emma"

blogRandomDataGenerator.customFormats.templateSyntax.placeholders.1.syntax

Insert a last name

Example: "Johnson"

blogRandomDataGenerator.customFormats.templateSyntax.placeholders.2.syntax

Insert an email address

Example: "emma.johnson@example.com"

blogRandomDataGenerator.customFormats.templateSyntax.placeholders.3.syntax

Insert a number in range

Example: "4721"

blogRandomDataGenerator.customFormats.templateSyntax.placeholders.4.syntax

Insert a past date

Example: "2023-05-12"

blogRandomDataGenerator.customFormats.templateSyntax.placeholders.5.syntax

Insert a UUID

Example: "f47ac10b-58cc-4372-a567-0e02b2c3d479"

Custom User IDs

Template:

blogRandomDataGenerator.customFormats.examples.0.template

Output:

USER-47283

Email with Company Domain

Template:

blogRandomDataGenerator.customFormats.examples.1.template

Output:

emma.johnson@mycompany.com

Product SKUs

Template:

blogRandomDataGenerator.customFormats.examples.2.template

Output:

SKU-A7F3M2K9-432

Order Numbers

Template:

blogRandomDataGenerator.customFormats.examples.3.template

Output:

ORD-20250109-3847

Full Address (Single Line)

Template:

blogRandomDataGenerator.customFormats.examples.4.template

Output:

742 Evergreen Terrace, Springfield, IL 62704

Regex-Based Generation

Use regular expressions to generate data matching specific patterns

blogRandomDataGenerator.customFormats.regexPatterns.examples.0.pattern

Three uppercase letters, dash, four digits

Example: "ABC-1234"

blogRandomDataGenerator.customFormats.regexPatterns.examples.1.pattern

SSN-like pattern

Example: "123-45-6789"

blogRandomDataGenerator.customFormats.regexPatterns.examples.2.pattern

Mixed case with numbers

Example: "Alpha42"

Bulk Generation at Scale

Generate up to 100,000 records per request with multiple output formats. Perfect for load testing, database seeding, and large-scale development workflows.

Why It Matters

Manual test data creation doesn't scale. Our bulk generation capability lets you create massive, realistic datasets in seconds, not hours or days.

Generation Limits

Maximum Records

100,000 records per request

Minimum Records

1 record per request

Processing Speed

~5,000 records per second

Time Limit

60 seconds maximum processing time

JSON

Array of objects, perfect for APIs and NoSQL databases

blogRandomDataGenerator.bulkGeneration.outputFormats.0.example

Use Case:

API testing, MongoDB imports, application mocking

CSV

Comma-separated values with headers, ideal for spreadsheets and SQL imports

name,email\nEmma,emma@example.com\n...

Use Case:

Excel imports, SQL COPY commands, data analysis tools

SQL INSERT

Ready-to-run SQL INSERT statements with batching

INSERT INTO users (name, email) VALUES ('Emma', 'emma@example.com'), ...

Use Case:

Database seeding, SQL Server imports, direct database population

JSON Lines

Newline-delimited JSON, one record per line

blogRandomDataGenerator.bulkGeneration.outputFormats.3.example

Use Case:

Stream processing, log analysis, big data tools

Performance Benchmarks

1,000 records

Processing time: 0.2 seconds

1 point

10,000 records

Processing time: 2 seconds

10 points

50,000 records

Processing time: 10 seconds

50 points

100,000 records

Processing time: 20 seconds

100 points

Intelligent Batching

Large requests are automatically split into optimal batch sizes for consistent performance and memory efficiency. Progress tracking available for requests over 10,000 records.

Implementation Guide

Get started with the Random Data Generator in minutes. Here are practical examples for common use cases.

Basic Data Generation

Generate 100 user records with common fields

Request:

curl -X POST https://apphighway.com/api/v1/random-data-generator \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d {
    "count": 100,
    "locale": "en-US",
    "schema": {
      "firstName": "person.firstName",
      "lastName": "person.lastName",
      "email": "internet.email",
      "phone": "phone.number",
      "age": "number.int(18, 65)",
      "createdAt": "date.past"
    },
    "format": "json"
  }

Response:

blogRandomDataGenerator.implementation.examples.0.response

Custom Format Templates

Generate data with custom formats and composite fields

Request:

curl -X POST https://apphighway.com/api/v1/random-data-generator \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d {
    "count": 500,
    "locale": "en-US",
    "schema": {
      "userId": "USER-{{number.int(10000,99999)}}",
      "fullName": "{{person.firstName}} {{person.lastName}}",
      "companyEmail": "{{person.firstName}}.{{person.lastName}}@techcorp.com",
      "employeeId": "EMP-{{string.alphanumeric(6)}}",
      "department": ["Engineering", "Sales", "Marketing", "Support"],
      "salary": "number.int(50000, 150000)",
      "hireDate": "date.past(5)",
      "address": "{{location.streetAddress}}, {{location.city}}, {{location.state}} {{location.zipCode}}"
    },
    "format": "json"
  }

Response:

blogRandomDataGenerator.implementation.examples.1.response

Bulk CSV Generation

Generate 50,000 records as CSV for database import

Request:

curl -X POST https://apphighway.com/api/v1/random-data-generator \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d {
    "count": 50000,
    "locale": "en-US",
    "schema": {
      "id": "string.uuid",
      "firstName": "person.firstName",
      "lastName": "person.lastName",
      "email": "internet.email",
      "phone": "phone.number",
      "dateOfBirth": "date.birthdate(18, 65)",
      "address": "{{location.streetAddress}}",
      "city": "location.city",
      "state": "location.state",
      "zipCode": "location.zipCode",
      "accountBalance": "number.float(0, 10000, 2)",
      "registeredAt": "date.past(2)"
    },
    "format": "csv"
  } > users.csv

Response:

# CSV file (users.csv) contains:
id,firstName,lastName,email,phone,dateOfBirth,address,city,state,zipCode,accountBalance,registeredAt
f47ac10b-58cc-4372-a567-0e02b2c3d479,Emma,Johnson,emma.johnson@example.com,+1-555-234-5678,1985-03-15,742 Evergreen Terrace,Springfield,IL,62704,5432.89,2023-08-15T10:30:00Z
# ... 49,999 more rows

# Processing completed in 8.2 seconds
# Points cost: 50 points ($0.50)

Using with TypeScript/JavaScript

blogRandomDataGenerator.implementation.sdkExample.code

Real-World Success Story

SaaS Startup Load Testing

The Challenge

A fast-growing SaaS company needed to load test their user management system before a major product launch. They required 50,000 realistic user records with diverse profiles, multiple locales, and complex field relationships.

Requirements:

  • 50,000 complete user profiles with 12 fields each
  • Mixed locales: 60% en-US, 20% de-DE, 20% fr-FR
  • Realistic relationships (e.g., city matches state, email domain matches company)
  • CSV format for easy import into PostgreSQL
  • Completed within budget constraints

The Solution

The team used the Random Data Generator with mixed locale support and custom format templates to generate realistic, diverse test data in a single API call.

Configuration:

Records

50,000

Locales

en-US (60%), de-DE (20%), fr-FR (20%)

Fields

12 custom fields with templates

Output Format

CSV

Processing Time

8.2 seconds

Points Cost

50 points ($0.50)

The Results

Time Saved

~40 hours

Manual data creation would have taken 2-3 days. API generation completed in 8 seconds.

Cost Efficiency

$0.50

Total cost for 50,000 records. Alternative: hiring contractor at $50/hour = $2,000+

Data Quality

100% realistic

Locale-aware formatting revealed UI bugs that random strings wouldn't catch

Performance Bottlenecks Found

3 critical issues

Load testing with realistic data uncovered pagination, search, and indexing problems

"The Random Data Generator saved us days of work. The mixed locale support was crucial – we found several internationalization bugs during load testing that would have been disasters in production. Best $0.50 we ever spent."

Sarah Chen, CTO

Error Handling

Handle common error scenarios gracefully

INVALID_SCHEMA

One or more schema fields contain invalid data type specifications

Example:

blogRandomDataGenerator.errorHandling.errors.0.example

Solution: Verify all data types match the supported types list. Check for typos in field names.

COUNT_EXCEEDED

Requested record count exceeds the maximum limit of 100,000

Example:

blogRandomDataGenerator.errorHandling.errors.1.example

Solution: Split large requests into multiple API calls or use batch processing endpoints.

INVALID_LOCALE

Specified locale is not supported

Example:

blogRandomDataGenerator.errorHandling.errors.2.example

Solution: Use a supported locale code from the documentation. Default to 'en-US' if unsure.

INSUFFICIENT_POINTS

Account doesn't have enough points to complete the request

Example:

blogRandomDataGenerator.errorHandling.errors.3.example

Solution: Purchase additional points or reduce the record count in your request.

Best Practices

Use Appropriate Record Counts

Start with smaller batches (1,000-10,000 records) for testing, then scale up to larger batches for production data generation.

Tip: Smaller batches have faster response times and make troubleshooting easier.

Match Locales to Your User Base

Use locale distribution that mirrors your actual user demographics. Mixed locale requests help uncover internationalization issues early.

Tip: Generate 70% en-US, 15% de-DE, 15% fr-FR if that matches your traffic distribution.

Leverage Custom Templates

Use format templates to generate data matching your exact schema. This eliminates post-processing and ensures validation rules are met.

Tip: blogRandomDataGenerator.bestPractices.practices.2.tip

Choose the Right Output Format

Use JSON for APIs and NoSQL databases, CSV for SQL imports and spreadsheets, SQL INSERT for direct database seeding.

Tip: CSV format is 40% smaller than JSON for large datasets.

Test with Realistic Data Types

Use appropriate data types that match your production environment. This helps catch validation bugs, format issues, and edge cases.

Tip: Generate real email formats, not just random strings, to catch email validation bugs.

Monitor Point Usage

Track point consumption in development vs. production. Set up alerts for unusual usage patterns.

Tip: 1 point per 1,000 records means 50,000 records = 50 points. Budget accordingly.

Cache Generated Data Locally

For development and testing, generate once and reuse the dataset. This saves points and ensures consistency across test runs.

Tip: Generate 10,000 records, save to file, use for multiple test runs.

Validate Generated Data

While data is realistic, always validate it matches your application's specific requirements before importing to production.

Tip: Run validation scripts on generated data before database imports.

Next Steps

Try the tool Playground

Test the Random Data Generator with interactive examples in our API playground. No coding required.

Review Full Data Types Reference

Explore all 15+ data type categories with detailed examples and format options.

Check Out Related Tools

Combine with CSV-to-JSON, Structify, or other data transformation tools for complete data workflows.

Join the Community

Share your use cases, ask questions, and get help from other developers using AppHighway tools.

Start Generating Test Data Today

The Random Data Generator provides everything you need to create realistic, scalable test data for development, testing, and demos. With support for 15+ data types, 20+ locales, custom formats, and bulk generation up to 100,000 records, you can generate production-quality test data in seconds. At just 1 point per 1,000 records, the tool is cost-effective for projects of any size. Whether you're seeding a development database, load testing a new feature, or creating demo data for a presentation, the Random Data Generator delivers realistic data at scale.

Ready to generate your first dataset? Get your API token and start creating test data in minutes.

Random Data Generator: Create Realistic Test Data at Scale