Define columns as name: type, pick up to 1,000 rows and copy fake data as JSON, CSV, SQL INSERT or JSON Lines. Email addresses use a reserved example domain. Nothing is uploaded.
To generate mock data, write one column per line as name: type, choose between 1 and 1,000 rows and a format, and press Generate data; the result is fake rows you can copy into a test, a database or a demo. The type decides what each cell holds. A line such as age: int(18,65) makes a whole number from 18 to 65, and plan: enum(free|pro|team) picks one of three words. The page opens with ten columns so you can see the output before you type anything. Every press of Generate data gives new random values, from your browser's secure random source when available. There is no seed, so the same columns will not give the same rows twice.
Text types: firstName, lastName, fullName, city, country, company, word, sentence and paragraph. Contact types: email, phone, url and ipv4. Other types: uuid, bool, color (a hex code such as #3a7bd5) and enum(a|b|c). Number types: int(min,max) for whole numbers, and float(min,max,dp) for decimals with dp places from 0 to 6. int takes values up to 1,000,000,000,000,000 in size. Without brackets, int means 0 to 1000 and float means 0 to 1000 with 2 places. Date types: date(from,to) gives a day such as 2024-02-29, and datetime(from,to) adds a time in UTC such as 2024-02-29T13:45:09Z. Dates are written YYYY-MM-DD and must exist; without brackets they run from 2020-01-01 to 2025-12-31. If a minimum is bigger than the maximum, the two are swapped.
Take the single column company: enum(O'Neil, Ltd). The value contains an apostrophe and a comma, which is where formats differ. In JSON it is the string "O'Neil, Ltd". In CSV the comma forces quotes, so the cell is "O'Neil, Ltd" with the header company above it. In SQL INSERT the string is wrapped in single quotes and the apostrophe is doubled: 'O''Neil, Ltd'. The statement starts INSERT INTO "mock_data" ("company") VALUES. Names are wrapped in double quotes for PostgreSQL, SQLite and standard SQL, or in backticks for MySQL and MariaDB, and a quote character inside a name is doubled. SQL output is split into one INSERT per 100 rows. JSON Lines puts one compact object on each line, which suits tools that read a stream. CSV cells that contain a comma, a quote, a line break, or a space at either end are quoted, and a quote is written as two.
The values are made to be safe to paste anywhere. Email addresses and web addresses use example.com or example.org, names that RFC 2606 sets aside for documentation, so a test email cannot reach a real mailbox. Phone numbers look like (415) 555-0142: the 555-0100 to 555-0199 block is reserved for fictional use in the North American numbering plan, so these are US and Canada style only. IPv4 addresses come from 192.0.2.0/24, 198.51.100.0/24 and 203.0.113.0/24, the ranges RFC 5737 sets aside for documentation. Names are drawn from short lists of common given and family names, written for this tool, and company names are assembled from word lists, so a match with a real company is chance. Text uses the classic Lorem ipsum words.
Columns are independent: the email does not match the name in the same row, and dates do not follow each other. Values can repeat, since only uuid is meant to be unique. Nothing is checked against a schema, and there are no nulls, foreign keys or nested objects. The uuid column has the shape of a version 4 UUID, but it is test data, not an identifier to rely on for security. Up to 50 columns and 1,000 rows are allowed, and a result over 5,000,000 characters is refused with a message; fewer rows or shorter text types fix that. Everything runs in this tab.
Write the fields as lines such as id: uuid and name: fullName, keep the format on JSON, set the rows, for example 25, and press Generate data. You get an array of objects with numbers and booleans as real JSON types, ready to copy.
Choose CSV. The first line is the column names, then one line per row. Cells with commas, quotes or line breaks are quoted, so a company called Smith, Jones comes out as "Smith, Jones" and the file opens in Excel or a database import.
Choose SQL INSERT, type a table name, and pick double quotes for PostgreSQL or SQLite, or backticks for MySQL. You get INSERT INTO table (columns) VALUES with 100 rows per statement, strings in single quotes with apostrophes doubled.
No. Emails end in example.com or example.org, which RFC 2606 reserves for documentation, and phone numbers use the fictional 555-0100 to 555-0199 block. IPv4 addresses come from the 192.0.2.0/24, 198.51.100.0/24 and 203.0.113.0/24 documentation ranges.
From 1 to 1,000 rows and up to 50 columns per press. If the text would pass 5,000,000 characters, as 50 paragraph columns over 1,000 rows would, the tool asks for fewer rows or columns. Press Generate again for a new batch.
No. The text is processed in your browser and not uploaded. Your columns and the generated rows are never saved; only your option settings, such as the format, are kept on this device.