Turn any CREATE TABLE statement into realistic dummy data. Generate thousands of rows of SQL inserts instantly.
Any CREATE TABLE DDL statement — MySQL, PostgreSQL, or SQLite syntax all work.
Each column gets an auto-detected generator. Override any field from the dropdown.
Copy a ready-to-run INSERT statement directly into any SQL client or migration file.
| id | full_name | role | is_active | created_at | |
|---|---|---|---|---|---|
| 1 | James Jones | [email protected] | Lorem ipsum dolor sit amet, consectetur adipiscing elit. | true | 2026-04-12 |
| 2 | Richard Rodriguez | [email protected] | Lorem ipsum dolor sit amet, consectetur adipiscing elit. | true | 2022-12-29 |
| 3 | David Taylor | [email protected] | Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. | false | 2025-01-08 |
| 4 | James Smith | [email protected] | Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. | false | 2025-02-03 |
| 5 | Mary Lopez | [email protected] | Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.. | true | 2024-02-29 |
| 6 | Jessica Brown | [email protected] | Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.. | false | 2024-01-31 |
| 7 | Mary Miller | [email protected] | Lorem ipsum dolor sit amet, consectetur adipiscing elit. | true | 2024-11-11 |
| 8 | James Miller | [email protected] | Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. | true | 2025-07-26 |
| 9 | James Miller | [email protected] | Lorem ipsum dolor sit amet, consectetur adipiscing elit. | true | 2022-02-15 |
| 10 | William Garcia | [email protected] | Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. | true | 2021-07-10 |
Click any template to load it into the generator above
All 13 built-in generators — use the type key value in any column dropdown
| Type key | Label | Category | Example |
|---|---|---|---|
integer_increment | Auto-increment | Numbers | 1, 2, 3, 4 … |
integer_random | Random integer | Numbers | 347, 12, 891 |
uuid | UUID v4 | Identity | 550e8400-e29b-41d4-… |
full_name | Full name | People | James Smith |
first_name | First name | People | Mary, John |
last_name | Last name | People | Johnson, Lee |
email | Email address | People | [email protected] |
city | City | Location | New York, Tokyo |
country | Country | Location | USA, France |
date_past | Date (past 5 yr) | Time | 2022-08-15 |
date_future | Date (next 2 yr) | Time | 2027-03-01 |
boolean | Boolean | Logic | TRUE / FALSE |
text_sentence | Text (sentence) | Content | Lorem ipsum dolor sit amet. |
| Condition | Assigned generator |
|---|---|
| Column name is id or ends with _id + INT type | integer_increment |
| Column name is id or ends with _id + UUID type | uuid |
| SQL type contains bool | boolean |
| SQL type contains date or time, name includes birth / created | date_past |
| SQL type contains date or time (other names) | date_future |
| Column name includes email | email |
| Column name includes first_name / firstname | first_name |
| Column name includes last_name / lastname | last_name |
| Column name includes name (any other) | full_name |
| Column name includes city | city |
| Column name includes country | country |
| Column name includes description / bio / text | text_sentence |
| SQL type contains int (any other name) | integer_random |
| Fallback (all other cases) | text_sentence |
What each column type gets by default — and when to override
| SQL type | Example | Auto generator | Notes |
|---|---|---|---|
| INT / INTEGER | id INT | integer_increment | When column is named id or *_id; otherwise integer_random |
| BIGINT | views BIGINT | integer_random | — |
| SMALLINT / TINYINT | age SMALLINT | integer_random | — |
| DECIMAL / NUMERIC | price DECIMAL(10,2) | integer_random | No decimal generator — override to integer_random or text_sentence for placeholder amounts |
| FLOAT / DOUBLE / REAL | score FLOAT | integer_random | — |
| BOOLEAN / BOOL | is_active BOOLEAN | boolean | — |
| VARCHAR / CHAR | name VARCHAR(100) | full_name | Name-based heuristic runs first — email, name, city, country, etc. |
| TEXT | body TEXT | text_sentence | — |
| DATE | hire_date DATE | date_future | date_past when column name includes birth or created |
| TIMESTAMP / DATETIME | created_at TIMESTAMP | date_past | created_at → date_past; future_at → date_future |
| UUID | id UUID | uuid | — |
| ENUM | role ENUM('a','b') | text_sentence | ENUM values are ignored — the parser reads only the base type. Override manually. |
| JSON / JSONB | meta JSON | text_sentence | No JSON generator — output will be a plain sentence, not valid JSON. |
How to load the generated INSERT SQL into real databases
# Paste the INSERT SQL into a .sql file, then: psql -U postgres -d mydb -f seed.sql
Use -q flag to suppress row-count output when seeding large tables.
# Save as seed.sql, then: mysql -u root -p mydb < seed.sql
Prepend SET foreign_key_checks = 0; if you hit FK constraint errors during seeding.
sqlite3 dev.db < seed.sql
Use .read seed.sql inside the sqlite3 REPL for interactive sessions.
BEGIN; -- paste your INSERT statement here COMMIT;
Wrapping bulk inserts in a single transaction can be 10–50× faster than auto-committing each row.
-- PostgreSQL: generate N copies of the same INSERT INSERT INTO users (...) SELECT ... FROM generate_series(1, 10000);
The browser caps output at 1 000 rows. For larger datasets, use generate_series (PostgreSQL) or a simple script loop.
What the schema parser handles, partially handles, and silently ignores
| Feature | Support | Details |
|---|---|---|
| Table name | Full | Extracted and used in the INSERT statement. |
| Column name | Full | All column names are extracted. |
| Base data type | Full | INT, VARCHAR, BOOLEAN, DATE, TIMESTAMP, TEXT, UUID, etc. |
| Type length / precision | Partial | Parsed but not enforced — VARCHAR(10) and VARCHAR(255) behave the same. |
| AUTO_INCREMENT / AUTOINCREMENT | Full | AUTOINCREMENT is normalized to AUTO_INCREMENT before parsing. |
| PRIMARY KEY | Ignored | Recognized syntactically but has no effect on generator choice (use id / *_id naming instead). |
| NOT NULL / NULL | Ignored | Generator always produces a value; nullability is not enforced. |
| DEFAULT value | Ignored | Default expressions are stripped. The generator produces its own values. |
| UNIQUE / INDEX | Ignored | No uniqueness guarantee on generated data — duplicates are possible. |
| FOREIGN KEY | Ignored | Referential integrity is not maintained. Seed parent tables first. |
| CHECK constraint | Ignored | Values may violate CHECK conditions. |
| ENUM values | Ignored | ENUM('a','b') is treated as a plain type; actual values are ignored. |
| JSON / JSONB column | Partial | Parsed as a column, but filled with a text sentence — not valid JSON. |
| Generated / computed columns | Ignored | GENERATED ALWAYS AS expressions not supported and may cause a parse error. |
| Multi-statement files | Ignored | Only the first CREATE TABLE statement is used. |
Mock rows are useful for different reasons: validating schema shape, testing value realism, or avoiding production PII altogether.
Generate rows only after the schema shape is believable
Use this path when fake data quality depends more on table design and relationships than on row count alone.
Choose realistic values that match column meaning
Relevant when the generator is exposing weak type choices or when sample rows should behave like production data in tests.
Need safe non-production data, not copied identities
Choose this route when masking or synthetic substitution matters more than perfectly mirroring live records.
Use these guides when generated rows are only one part of the job and you still need stronger tables, types, or relationships
Good next step if you want to mix browser-generated data with SQL-native seeding techniques.
Helpful when you need better table structure before generating mock rows.
Important when staging or demo data should stay realistic without copying production identities.
Useful for choosing more realistic column types and understanding generator limitations.
Important when your seed data needs to respect parent-child tables and foreign keys.
Turn spreadsheet-style tabular data into INSERT statements.
Jump to the broader schema workflow when mock data generation is only one part of design review.
Translate regex filters into SQL search conditions.
Format the generated SQL before sharing or reviewing it.