About the Fake Data Generator
Pick your columns in this fake data generator and get up to 1,000 rows of made-up test data: names, emails, phone numbers, addresses, companies, IBANs, UUIDs, IP addresses and more. Export them as JSON, CSV or a ready-to-run SQL INSERT statement.
Use it to seed a development database, fill a staging app before a demo, or test a CSV import with values that belong to no one. Fake rows also catch bugs that tidy test data hides, like an apostrophe in D'Amore that breaks a hand-built SQL string.
The rows are created in your browser with the faker library, which loads the first time you click Generate Data. People, addresses and phone numbers come from faker's English (US) data. Country and IBAN values cover many countries.
- Under Fields, the page starts with two columns,
firstNameandemail. Type a column name and pick a data type for each, such as Full Name, City, Job Title or IBAN. Add Field adds another column (up to 20), and the trash icon removes one. - For a Number field, type the lowest and highest value in the two boxes next to it. The order doesn't matter: the smaller number is always used as the minimum.
- Set Number of records, from 1 to 1,000. The default is 10.
- Choose the Output format: JSON, CSV or SQL INSERT. For SQL, type the Table name too; it starts as
users. - Click Generate Data, then Copy the rows or Download them as
fake-data.json,fake-data.csvorfake-data.sql. Switching the format rewrites the same rows, so one set can go out three ways. Click Generate Data again for new values. - If two columns share a name, or a name is empty, a note shows the names the output will use instead, like
"email" → "email_2".
Inputname Full Name
email Email
country Country
age Number, 18 to 80
active Boolean
signup_date DateOutput[
{
"name": "Wilber Price",
"email": "jada_stracke@yahoo.com",
"country": "Albania",
"age": 42,
"active": true,
"signup_date": "2027-07-04"
},
{
"name": "Payton Dach",
"email": "hilma.lebsack@hotmail.com",
"country": "Luxembourg",
"age": 58,
"active": true,
"signup_date": "2025-08-31"
}
]Generated on 7 October 2026. Dates fall between 5 years ago and 1 year ahead, so a signup date can be in the future. Filter those out if your validation rejects them.
Inputname Full Name
address Address
active Boolean
Output format: CSVOutputname,address,active
Irene D'Amore,"72805 Smith Street, North Mossieboro, Rhode Island 36457-1996",false
Serena Lang,"5304 Rowena Court, South Lisaport, Wyoming 21539-0327",falseEach address contains commas, so it's wrapped in double quotes. The apostrophe needs no escaping in CSV. Lines end with CRLF.
InputOutput format: SQL INSERT
Table name: customersOutputINSERT INTO customers (name, address, active) VALUES
('Irene D''Amore', '72805 Smith Street, North Mossieboro, Rhode Island 36457-1996', FALSE),
('Serena Lang', '5304 Rowena Court, South Lisaport, Wyoming 21539-0327', FALSE);In SQL the apostrophe in D'Amore is doubled, which is the standard way to put a quote inside a string.
What each data type gives you
There are 21 types. A few behave in ways worth knowing before you load them into a database:
- Credit Card (test) numbers pass the Luhn check and come in several lengths and layouts, like
3721-613349-73872. Strip the dashes if your column only takes digits. - IBAN values have correct check digits (the mod-97 rule from ISO 13616) and come from dozens of countries, for example
FI8219492700530086orIT84G22147706599864U4701ENQ. - Password gives 15 random letters and digits, sometimes with an
_. Color gives a hex value like#deecd6, and IP Address an IPv4 address like63.157.190.32. - Date is written as
YYYY-MM-DD. Number gives whole numbers only, between your two limits. - Phone Number uses US national format, like
(579) 533-9020. Address is one string with street, city, state and ZIP code.
Why test with fake data instead of a copy of production
A production dump holds real people's names, emails and addresses, and from a development database it spreads to laptops, logs and screenshots. Privacy laws such as the EU's GDPR, Brazil's LGPD and India's DPDP Act cover personal data wherever it's stored, test systems included.
Generated data avoids that. One catch: faker emails use real domains such as gmail.com and yahoo.com. Turn off outgoing mail in test environments, or replace the domain with example.com, which RFC 2606 reserves for examples.
How the CSV and SQL output is written
The CSV follows RFC 4180, the common CSV format:
- The first line is a header with the column names. Lines end with CRLF (
\r\n). - A value that contains a comma, a double quote or a line break is wrapped in double quotes, and a double quote inside it is written twice (
""). - Booleans are the words
trueandfalse, because CSV has no data types. - The SQL output is one multi-row INSERT. Strings are in single quotes with
'doubled, numbers have no quotes, and booleans areTRUEandFALSE. - Table and column names made of letters, digits and underscores stay as they are. Other names get ANSI double quotes, such as
"first name". MySQL reads double quotes as identifiers only inANSI_QUOTESmode, so keep names simple there. TRUEandFALSEwork in PostgreSQL, MySQL and SQLite. SQL Server has no boolean literals, so replace them with1and0for abitcolumn.
Load the CSV into a database
Create the table first, with the columns in the same order as the file. Each command skips the header row. PostgreSQL reads the text true and false into a boolean column; other databases may keep them as text, so the SQL INSERT output is often simpler there.
\copy customers FROM 'fake-data.csv' WITH (FORMAT csv, HEADER true)LOAD DATA LOCAL INFILE 'fake-data.csv' INTO TABLE customers
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES;.import --csv --skip 1 fake-data.csv customersFake data for other countries and languages
faker has data for dozens of locales, with local names, cities and phone formats. If your users are in Germany, Brazil, India or Japan, generate rows in code with the matching locale. The comments show the output for seed 10.
import { fakerDE, fakerFR, fakerPT_BR, fakerEN_IN, fakerJA } from "@faker-js/faker";
for (const f of [fakerDE, fakerFR, fakerPT_BR, fakerEN_IN, fakerJA]) {
f.seed(10);
console.log(f.person.fullName(), "|", f.location.city(), "|", f.phone.number({ style: "national" }));
}
// Marius Köhre | Alt Marisaburg | 05867 297513
// Liétald Le gall | Calais | 06 10 69 05 86
// Alexandre Reis | Melissa do Descoberto | (69) 05867-2975
// Aanand Patil | Khair | 06710 690 586
// 本間 海翔 | 湖節子村 | 005-867-2975from faker import Faker
fake = Faker(["de_DE", "fr_FR", "pt_BR", "en_IN", "ja_JP"])
for locale in fake.locales:
f = fake[locale]
print(f.name(), "|", f.city(), "|", f.phone_number())Is the generated data real personal data?
No. Each value is a random combination from faker's word lists. A generated name or email can still match a real person by chance, so keep it in test systems and never contact it.
What's the difference between fake, mock, dummy and test data?
The words overlap. Dummy data fills space, mock data stands in for a real service or API response, and test data is whatever a test runs against. Generated rows can serve all three.
Are the credit card numbers real?
No. Credit Card (test) numbers pass the Luhn check, so a basic form check accepts them, but no bank issued them and no payment will go through. For numbers by card brand and the official sandbox cards of payment providers, use the Test Credit Card Generator.
Can I use the Password values as real passwords?
No. faker uses a Mersenne Twister pseudo-random generator, which is fast but predictable. Real passwords need a secure source of randomness, which the Password Generator gets from crypto.getRandomValues.
How many rows can I generate?
Up to 1,000 rows and 20 columns per click. For bigger tables, run faker in a script, or generate several files and load them one after another.
Can I get names and addresses for a specific country?
Not on this page. Names, addresses and phone numbers use faker's English (US) data, while Country and IBAN are international. For local data, use a faker locale in code as shown above.
Can I generate nested JSON instead of flat rows?
This page makes flat rows that fit a table or a CSV file. For nested objects and arrays, use the Sample JSON Generator.