CSV Toolkit

Sort, filter, dedupe, transpose and convert CSV data in one place, entirely in your browser, with proper handling of quoted fields and embedded commas.

0 × 0
Rows × columns

Operations

0 × 0
After operations

The delimiter guess gets 7 of 9 realistic files right

Detection counts commas, tabs, semicolons and pipes in the first 3 lines and picks the commonest. It runs before anything is parsed, so it has no way to know which of those characters are structure and which are prose — and delimiters inside quoted fields count towards the tally.

FileReal delimiterGuessed
Plain comma ,
Semicolon ;
Tab tab
Pipe |
Semicolon, European decimals ;
Comma, quoted commas ,
Semicolon, commas in prose ; ✗ ,
Single column ,
Tab, commas in fields tab ✗ ,

Both failures are the same thing. A semicolon file whose fields contain ordinary English — Ada;"born 1815, London, England" — holds three semicolons and four commas, so it is read as comma-delimited and every row collapses into the wrong shape. Every unquoted file is detected correctly, and quoting alone is not fatal: two of the quoted files still come out right. Counting only unquoted delimiters would need parsing, and parsing needs the delimiter you are trying to find. That is why the dropdown exists.

The 3-line window is a trade rather than an improvement. It rescues a file whose clean header is followed by thirty comma-heavy rows, and blinds the detector when the first three rows are the unrepresentative ones. Reading the whole file swaps which of those two cases wins; it does not fix both.

The parser survives 343 awkward tables and loses exactly two shapes

Writing a table out and reading it back should return what you started with. Sweeping every two-row table built from 7 awkward field values — an embedded comma, a quote, a newline, a space, an empty string — gives 343 combinations, and all 343 round-trip exactly. Quoting, doubled quotes and embedded newlines are all handled correctly.

TableWritten asRead back as
[[""]] "" []
[["a"],[""]] "a\n" [["a"]]

Both are a row that is a single empty cell, and both are the phantom-row rule doing its job. A trailing newline in a real file should not produce an extra empty row, so the parser strips one — right almost always, wrong for a table whose last row genuinely is one empty cell. The two cases write to byte-identical files, so no parser can separate them and this one chose the common case. A row of several empty cells is kept, and so is a leading empty row; only a trailing single one is dropped.

How to use

  1. Paste or upload your CSV.
  2. Confirm the delimiter and header row.
  3. Apply the operations you need in sequence.
  4. Download the result or copy it out.

Frequently asked questions

Does my data get uploaded?

No. Every operation runs in your browser, so customer lists, exports and financial data never leave your machine. This is the main reason to use a local tool for anything you would not paste into an unknown website.

Why does my file have the wrong number of columns?

Usually an unquoted comma inside a field, or a line break inside a quoted value that a naive writer failed to quote. Proper CSV handles both by quoting; files assembled by string concatenation frequently do not, and the damage appears as rows with too many columns.

What is transposing for?

Swapping rows and columns. It is useful when data arrives with periods across the top and categories down the side but your tool wants the opposite, which is a routine annoyance with exported reports.

Why does Excel mangle my CSV?

Because it aggressively guesses types. Product codes become dates, leading zeros vanish from postal codes, and long numbers turn into scientific notation. It is also encoding-sensitive, often needing a byte-order mark to recognise UTF-8. None of this is your file's fault.

What delimiter should I use?

Comma is standard, but semicolon is common across Europe where the comma is a decimal separator. Tab-separated is often the safest choice for data containing punctuation, since tabs rarely appear inside fields and so need no quoting.

How are blank lines and trailing newlines handled?

A trailing newline at the end of a file is conventional and should not produce a phantom empty row. Blank lines in the middle usually indicate a problem with how the file was produced, and are skipped rather than treated as empty records.

🔒 This tool runs entirely in your browser. Nothing you enter is uploaded, logged, or stored.