CSV Workbench

Open a CSV of any size: profile every column, sort, filter, find duplicates, check for broken rows, split it, or convert it to JSON or SQL — on your device.

CSV Workbench

Nothing open
On this device

Open or paste a CSV to see it as a table, with a profile of every column. The file stays on your device.

How is this calculated?
Rows are read by RFC 4180’s rules: a field that starts with a quote is quoted, two quotes inside it are one, and a quoted field may hold the separator and line breaks. The parser is tested on the RFC’s examples and against PapaParse on hundreds of generated files, fed in pieces of every size. Types are strict: a column is a number only if every filled cell is one, and the SQL column type is chosen from the widest value — DECIMAL(9, 2) for amounts with two decimal places — so nothing is rounded.

Runs in your browser — nothing you enter leaves this device.

About this tool

What it does

The CSV Workbench opens a comma-, semicolon-, tab- or pipe-separated file of any size and lets you understand it and clean it before it goes anywhere else. Every column is described at a glance — what kind of data it holds, how many cells are blank, how many distinct values, and for numbers the range, mean, median and total. Rows with problems are listed by line: a different number of cells from the header, a quote that is never closed. You can sort and filter the rows, find rows that repeat, split the file into smaller ones, and download the rows as CSV, JSON, NDJSON or SQL. The file is read in pieces by a background worker and only an index of where each row starts is kept in memory, so a file of several hundred megabytes opens the same way as a short paste.

How to use it
  1. Press “Open a file” and choose a .csv or .tsv file, drag one onto the box, or paste CSV text. “Try an example” loads a small order list with one repeated order. Choose or drop several files at once, or open another while one is showing, and each opens in its own tab — up to eight — keeping its own sort, filter and duplicates while you look at the others.
  2. Check the heading and the column profile: the row count, the separator that was detected, and each column’s type, blanks and range. If some rows have problems, open the list to see which lines and why.
  3. Click a column heading to sort by it; click again to reverse, and a third time to go back to the file’s order.
  4. Filter with words that must appear in any column, or with a condition on one column — is, contains, more than, less than, empty.
  5. Under Duplicates, choose the columns that identify a row (or none, to compare whole rows) and press Find duplicates; then show the rows without repeats or only the repeats.
  6. Download the rows shown as CSV, JSON, NDJSON or SQL for PostgreSQL, MySQL or SQLite, or split them into a ZIP of smaller CSV files, every so many rows or one file per value of a column.
Limits and your data
  • There is no fixed file size. The index takes about 24 bytes a row — 240 MB for ten million rows — and the text stays in the file. Sorting a text column needs every value in memory, so it is limited to a million rows; number columns sort at any size.
  • Duplicates are found by a 64-bit fingerprint of each row’s key rather than by keeping every row. The chance of two different rows sharing one is about one in a hundred thousand for ten million rows.
  • UTF-8 is read as it is; UTF-16 files and files saved by Windows spreadsheets in Windows-1252 are converted to UTF-8 first, and the heading says so. Other legacy encodings are read as Windows-1252.
  • A quote inside a cell that does not start with one, or text after a closing quote, is kept as written — as Excel does — and the row is listed so you can check it. A quote that is never closed makes the rest of the file one cell; the list shows the line where it opened.
  • Dates are recognised in the ISO form 2026-09-24 (with or without a time). Other formats, such as 24/09/2026, are treated as text, because 03/04 means different days in different countries.
  • Distinct counts are exact up to 10,000 values per column, and the median up to a million numbers; beyond that the profile says “more than 10,000” or leaves the median out. A split makes at most 1,000 files, and a ZIP over 4 GB is refused.
  • Rows downloaded as CSV are the original bytes, unchanged; JSON and SQL are built in memory, so a download of that kind is limited by your device’s memory.
  • The file is read and analysed in your browser, by a worker on your device. It is never uploaded, which makes the workbench safe for statements, payroll exports and customer lists, and it works with the network switched off. Closing or reloading the page discards it.

Questions

Why is my number column shown as text?

At least one cell is not a plain number — it has a currency sign, a percent sign, a unit, or text such as “N/A”, or it has leading zeros like a PIN code. Filter that column with “is more than 0” to see the rows that are numbers, then look at the ones left out.

How does it know the separator?

It looks at the first rows and picks the character — comma, semicolon, tab or pipe — that splits them the same way, ignoring anything in quotes. The one it chose is shown in the heading; choose another under Separator if it guessed wrong.

Does converting to JSON or SQL change my numbers?

No. A number is written with the same digits it had, without the grouping commas: “1,24,999.50” becomes 124999.50, not a rounded value. Leading zeros keep a column as text, so a PIN code stays “040012”. Switch off “typed values” to write every cell as text.

Which rows are kept when I remove duplicates?

The first time a row appears is kept; later rows with the same key are the repeats. “Without repeats” shows the first ones, and downloading then gives a file with every key once.

Can I edit the data?

Not cell by cell. The workbench sorts, filters, removes duplicates, splits and converts; to change values, download the rows and open them in a spreadsheet, or load the SQL into the SQL playground.

Can I open two files and compare them?

You can open up to eight files, each in its own tab, and switch between them without losing what you did in each. The workbench does not line two files up row by row; to see exactly which lines changed between two versions of a file, paste both into Text Diff.