Test Data Generator
Create repeatable synthetic person records in JSON, CSV, SQL, or plain lines.
-
1Enter data
Enter content, paste text or load a file from disk. -
2Click the button
The tool will immediately process your data in the browser. -
3Get the result
Copy the finished text or save the file to your device.
return "Result ready in 0.1s";
}
Advanced
The data is synthetic and pseudorandom. Save the displayed seed to reproduce the result. CSV is quoted correctly and SQL is escaped for MySQL. Do not treat these records as real people's data.
Rate this tool:
Related tools
Other tools you may find usefulTest data generator for APIs, forms, and databases
The test data generator creates synthetic person records with selected fields and exports them as JSON, CSV, MySQL INSERT statements, or simple lines. Supply a seed to reproduce the same sequence on another run, or generate a random seed and store it with the fixture.
The tool uses prepared pools of Polish names, cities, and neutral company names. An email is built from an ASCII transliteration of the name and the selected domain, phone numbers use a sample +48 format, and UUID values follow the version 4 layout. The records are fictional: they may coincidentally resemble a person, but they do not come from a user database or public registry.
Choosing fields and dataset size
The minimal preset keeps first name, last name, and email. The full preset also enables phone, city, postal code, company, date, and UUID. You can toggle every field afterward. The range of 1 to 1,000 records protects the browser from an unnecessarily large result; a handful is usually enough for a validation unit test, while a list prototype may need dozens.
Technical keys stay in English: first_name, last_name, email, phone, city, postal_code, company, date, and uuid. A fixture can therefore be used in code regardless of the interface language. If identifiers are all you need, use the UUID generator or shorter values from the NanoID generator.
JSON, CSV, SQL, and line formats
| Format | Best use | Data safety behavior |
|---|---|---|
| JSON | API fixtures, frontend tests, documentation | Unicode and slashes encoded without character loss |
| CSV | spreadsheets, importers, migration scenarios | semicolon delimiter with quotes for separators and newlines |
| SQL INSERT | a local MySQL table | identifier normalization and literal escaping |
| Lines | preview, simple scripts, demo values | backslash, CR, LF, and | escaped; null as \N |
JSON preserves Polish characters and is convenient when a record goes directly to an API client. CSV uses semicolons and standard quoting: a comma, apostrophe, or space does not damage its structure, while a field containing a semicolon or newline is enclosed in quotes. For a specialized CSV-only sample, compare the result with the CSV dummy data generator.
SQL and safe literals
SQL export creates one INSERT statement per record. The table name is restricted to letters, digits, and underscores, capped at 64 characters, and enclosed in backticks. Apostrophes are doubled in values, while backslashes, null bytes, line feeds, carriage returns, and Control-Z are escaped for MySQL. The serializer can also emit actual NULL, numeric, and boolean values, although the standard generator fields are mostly text.
The export targets MySQL because it uses backticks. PostgreSQL and SQLite may require different identifier quoting. The generator does not create a table, indexes, or constraints and does not guarantee unique emails: random combinations in a set of up to 1,000 records can repeat. Enforce or verify uniqueness in the fixture layer when a test depends on it.
Seeds, repeatability, and limits of randomness
A seed initializes the pseudorandom generator. The same integer seed, field selection, and environment version yield the same result, which helps reproduce a failing test. When the seed field is empty, the tool chooses a value and displays it in the metrics above the output. Store it in a file name, scenario comment, or test configuration.
- Choose a preset and fields matching the form or endpoint structure.
- Set the record count and a valid domain such as
example.com. - Enter a fixed seed or click “Random seed” and save the displayed number.
- Select JSON, CSV, SQL, or lines and copy the result.
- Add validation failures, edge cases, and expected constraints in the actual test suite.
Pseudorandom output is not suitable for passwords, tokens, or cryptographic keys. UUIDs have the right layout but come from the same deterministic stream so the fixture stays reproducible. If another sortable identifier is needed, use the ULID generator.
Validating the domain, seed, and inputs
The email domain must consist of valid ASCII labels and a suffix, such as example.com. Rejecting spaces, apostrophes, slashes, and line breaks prevents malformed addresses and control fragments from reaching CSV or SQL. Record count and seed must be integers; fractional values are not silently truncated. The output format is checked by the component rather than trusted only because the form uses a select box.
Generated dates use years 2018–2026 and days 1–28, so they are always valid calendar dates. They do not model age distributions, seasonality, or population statistics. Phone numbers, postal codes, and company names are demonstrations and are not checked against an operator or registry. The tool supports interface and serialization tests, not statistical analysis.
Privacy and fixture practices
Synthetic records reduce the need to copy production users into lower environments, which improves privacy and access control. Files should still be labeled as test data, use reserved domains, and never trigger email or SMS delivery. Do not use the output to create public service accounts. Generate secrets separately with the password generator and keep them out of the repository.
A useful suite contains more than tidy records. After generating a baseline, add empty, very long, apostrophe, comma, Unicode, multiline, and NULL cases. That is how you exercise application validation and serializers. This tool's serializers support those characters, while its built-in pools intentionally provide a readable baseline scenario.
Frequently asked questions
Are the generated people and companies real?
No. Records are assembled from local pools and random combinations. They can coincidentally resemble real data, so never associate them with a person or use them outside testing.
How do I get exactly the same dataset again?
Use the same seed, count, format, and fields. If the seed was blank, save the value displayed in the output metrics and enter it on the next run.
Does CSV handle commas, apostrophes, and multiline fields?
Yes. CSV is written by a standard serializer with a semicolon delimiter. A separator, quote, or newline causes proper quoting; an apostrophe requires no special CSV rule.
Can I run the SQL output directly in production?
That is not recommended. The result is for a local MySQL database and requires review. It does not create a schema or constraints and may contain duplicate values.
Is this generator enough for security or statistical testing?
No. It does not create malicious payloads or a representative population distribution. Use it as a baseline fixture and add security and edge cases deliberately.