Skip to the tool
ViewCSV
Files stay on your device

Sample CSV files

orders.csv

15 rows · 8 columns · orders with leading-zero IDs, a blank price, padded spaces and one duplicate row

Try sorting, filtering, cleaning and converting: the IDs must keep their zeros and the duplicate should be found.

order_id,customer,city,product,quantity,unit_price,order_date,status
001041,Liam Garcia,Austin,Desk lamp,6,142.72,2026-01-09,paid
001042,Mary Clark,Seattle,"Monitor 27""",5,210.76,2026-02-03,shipped
001043,Henry Taylor,Denver,Notebook A5,1,143.74,2026-03-25,pending
001044,Lucas Smith,Chicago,"Monitor 27""",5,137.00,2026-04-25,shipped
001045,Noah Davis,Seattle,USB-C cable,7,,2026-05-11,refunded

contacts.csv

6 rows · 7 columns · contacts with a multiline note and a quoted comma

Made for CSV to vCard: the headers are matched to contact fields automatically.

first_name,last_name,email,mobile,company,city,notes
Ava,Williams,contact1@example.test,+1 555-235-0351,Harbor Analytics,Atlanta,
Mary,Brown,contact2@example.test,+1 555-073-4622,Bluebird Labs,Chicago,"Met at the trade fair
Prefers email"
Olivia,Garcia,contact3@example.test,+1 555-982-2565,Northwind,Chicago,
Noah,Clark,contact4@example.test,+1 555-072-0725,Northwind,Denver,"VIP, call before 10:00"
Emma,Taylor,contact5@example.test,+1 555-564-4421,Summit Supply,Austin,

customers.csv

8 rows · 4 columns · customers with five-digit IDs

Join it with the invoices file on customer_id in Merge CSV.

customer_id,name,country,segment
00301,Liam Johnson,United States,business
00302,Olivia Brown,United States,education
00303,Ethan Wilson,United States,education
00304,Sophia Garcia,United States,business
00305,Olivia Smith,United States,business

invoices.csv

10 rows · 4 columns · invoices referring to customer IDs, some repeated

The second file for a join; repeated customer IDs show how one-to-many matches are reported.

customer_id,invoice_no,total,paid
00308,INV-2400,352.82,false
00309,INV-2401,94.00,true
00307,INV-2402,498.24,true
00305,INV-2403,266.43,true
00308,INV-2404,21.08,true

signups.csv

7 rows · 6 columns · sign-ups with an invalid email, an impossible date, a duplicate and an empty row

Run Validate CSV with rules, then Clean CSV, and compare what each finds.

id,name,email,age,signup_date,plan
1," James Smith",first@example.test,34,2026-01-04,pro
2,Mary Johnson,not-an-email,thirty,2026-02-30,Pro
3,Ava  Williams,third@example.test,,2026-03-11,free
3,Ava  Williams,third@example.test,,2026-03-11,free
,,,,,

sales.csv

18 rows · 4 columns · monthly revenue for three regions

For charts, grouping and pivots: month × region.

month,region,revenue,units
2026-01,New York,1701,50
2026-01,Chicago,1156,38
2026-01,Austin,1186,63
2026-02,New York,3079,14
2026-02,Chicago,1662,70

edge-cases.csv

5 rows · 4 columns · parser edge cases: quotes, line breaks, tabs, emoji, a formula, long IDs

Check that a program keeps every value exactly: 0007, 1.2300 and 20-digit IDs must survive.

id,label,note,amount
0007,"Comma, inside","He said ""yes""",1.2300
12345678901234567890,"Line
break","Ends with spaces  ",-0.5
003,Café · 東京 · Москва · مرحبا,=SUM(A1:A2),1e-3
004,,Tab	inside,
005,😀 emoji,"""quoted""",9007199254740993

prices-semicolon.csv

5 rows · 4 columns · semicolon-separated prices with decimal commas, as saved by Excel in many European languages

Open it to see delimiter detection; filter numbers with the comma decimal separator.

item_no;description;price;quantity
000201;Coffee beans 1 kg;12,90;2
000202;Desk lamp;34,50;3
000203;USB-C cable, 2 m;7,99;4
000204;Notebook A5;3,25;5
000205;Northwind;1.234,50;1

orders-100k.csv

100,000 orders, about 7 MB, generated in your browser

Generated from a fixed seed, so every download is identical. Use it to try large-file handling.

These are seven small CSV files with fictional people and example.test email addresses, built to test CSV tools. Each one is documented below: its columns, what it is for, and the exact traps it contains, such as zero-padded IDs like 001041, a quoted comma, an escaped quote, a line break inside a cell, a blank price and a duplicate row. All files are comma-separated UTF-8 text with a header row and CRLF line endings.

The files and their columns

orders.csv15 orders: order_id, customer, city, product, quantity, unit_price, order_date, status. The general-purpose file for sorting, filtering, mapping and converting.
orders-updated.csvA later version of orders.csv for comparing: order 001044 has a new quantity, order 001046 is gone and order 001099 is new.
contacts.csv6 contacts: first_name, last_name, email, mobile, company, city, notes. Made for address-book exports such as vCard.
customers.csv8 customers: customer_id, name, country, segment. The left side of a join.
invoices.csv10 invoices: customer_id, invoice_no, total, paid. The right side of a join; some invoices point to customer 00309, who is not in customers.csv.
signups.csv7 records of deliberately messy signup data: id, name, email, age, signup_date, plan. Made for cleaning and validation.
sales.csv18 rows of monthly sales in long format: month, region, revenue, units, six months for each of three regions. Made for charts, pivots and transposing.

Column names are plain identifiers, as in most exported files. Dates use ISO 8601 (2026-03-25), months are written 2026-01, and money values have two decimal places with a dot.

Edge cases built into each file

  • orders.csv: every order_id is zero-padded to six digits (001041 to 001054), so a tool that reads IDs as numbers will drop the zeros. The product Monitor 27" is written "Monitor 27""" (an escaped quote) and "Chair, ergonomic" holds a quoted comma. Order 001045 has an empty unit_price, order 001047 has spaces around the customer name, and the last row is an exact duplicate of order 001043.
  • contacts.csv: one notes cell spans two lines (Met at the trade fair / Prefers email) and another holds a comma (VIP, call before 10:00). Most notes are empty. Mobile numbers start with +1 555.
  • customers.csv and invoices.csv: both key on a five-digit zero-padded customer_id such as 00301, so the join only matches if both sides stay text. Customer 00308 has three invoices, four customers have none, and 00309 has invoices but no customer row.
  • signups.csv: a name with a leading space, one with a trailing space and one with a double space; not-an-email and N/A in the email column; thirty and empty values in age; the impossible date 2026-02-30 and the ambiguous 11/03/2026; pro and Pro as two spellings of one plan; an exact duplicate record, a completely empty record and no record with id 4.
  • sales.csv: a clean, all-numeric file. revenue and units are whole numbers, so it is the control case: anything a tool gets wrong here is not caused by messy data.

Which file to use for which task

Viewing, sorting and filteringorders.csv in the CSV viewer, sort or filter tools. Sort by order_id to check that zero-padded IDs keep their order.
Convertingorders.csv for CSV to JSON, CSV to SQL or CSV to Excel; contacts.csv for CSV to vCard. Check that 001041 survives and the two-line note stays one value.
Comparing two versionsorders.csv against orders-updated.csv in Compare CSV: expect one changed, one removed and one added row.
Joiningcustomers.csv and invoices.csv in Merge CSV with customer_id as the key.
Cleaning and validatingsignups.csv in Clean CSV or Validate CSV: use it to see which of the problems listed above a tool reports or fixes.
Charts and reshapingsales.csv in the CSV chart maker (revenue by month or region) or Transpose CSV.

On the tool pages that use them, Try a sample loads the matching file directly, so you can see the tool's behavior before opening your own data.

Is the data real?

No. The people are random combinations of common first and last names, the companies are invented, every email address uses the reserved .test domain from RFC 2606, and English phone numbers use the 555 range. City names are real places, used only as labels. Prices, quantities and dates are generated from a fixed seed, so each file is the same every time it is created.

The files follow the interface language: on another language’s page the names, cities, companies and phone formats are ones familiar to that audience, while column names, IDs and the edge cases stay the same.

When you need a different file

These files are deliberately small so every row can be checked by eye. For thousands of rows, other column types or your own column names, use the CSV generator: the same seed and settings always give the same file, so a test can be repeated exactly.

Example: how the tricky contacts row reads

The first three records of contacts.csv as written in the file, and the values a correct RFC 4180 reader returns for them. The line break and the comma stay inside the notes value; an empty last field is an empty string, not a missing column.

CSV
first_name,last_name,email,mobile,company,city,notes
Ava,Williams,contact1@example.test,+1 555-235-0351,Harbor Analytics,Atlanta,
Mary,Brown,contact2@example.test,+1 555-073-4622,Bluebird Labs,Chicago,"Met at the trade fair
Prefers email"
Olivia,Garcia,contact3@example.test,+1 555-982-2565,Northwind,Chicago,
Parsed records (7 values each)
[
  ["Ava", "Williams", "contact1@example.test", "+1 555-235-0351", "Harbor Analytics", "Atlanta", ""],
  ["Mary", "Brown", "contact2@example.test", "+1 555-073-4622", "Bluebird Labs", "Chicago", "Met at the trade fair\nPrefers email"],
  ["Olivia", "Garcia", "contact3@example.test", "+1 555-982-2565", "Northwind", "Chicago", ""]
]

Questions and answers

Can I use these files in my own tests or tutorials?

They contain no real people or contact details, so they are safe to use as test fixtures. Keep in mind that the city names are real places.

Why do the IDs start with zeros?

Because real exports often do (order numbers, ZIP codes, product codes), and it is the most common thing a CSV tool breaks. If 001041 turns into 1041, the tool converted text to a number.

Why is there a duplicate row in orders.csv?

To test deduplication and comparison. The last record repeats order 001043 exactly, so a duplicate check should find one duplicate row.

Standards and references