CSV · TSV → CSV

CSV cleaner and import fixer

Clean CSV or TSV files for import, privately in your browser.

01

Add CSV file

CSV · TSV · TXT

02

Import settings

Clean up data

03

Columns

Choose and order columns. Edit names when the first row is a header.

Choose a file to see a preview.

04

Preview

Choose a file to see a preview.

Your files stay on your device.

Clean a CSV without losing the meaning of its columns

Prepare a CSV, TSV or TXT table for import by fixing separators and encoding, trimming field edges, removing empty or duplicate rows, and padding short rows. Then select, rename and reorder columns. Review the result against the destination's import rules: a clean-looking preview does not establish that identifiers, dates or formulas will be interpreted correctly by another application.

Step by step

  1. Open one file and check its separator and character encoding. If every value appears in one column, choose the correct separator; if accented names are damaged, select the source encoding. Decide whether the first row is a header.
  2. Enable only the cleanup operations you need. Trimming runs before duplicate comparison, and padding can normalize short rows. Choose retained columns, change header names and use the arrows to order them. Changing separator or encoding resets column choices.
  3. Choose an output separator, download the cleaned CSV and inspect it in the destination importer. The preview shows only the first 12 data rows and 12 columns; the export uses every retained row and selected column.

Settings and limits

Parsing and cleanup
Automatic separator detection considers comma, semicolon, tab and pipe; a custom separator must be one valid character. Quoted separators, multiline fields and doubled quotes are supported. The header is protected from row removal.
Limits before cleanup
The input limit is 20 MiB, 100,000 parsed rows including the header, 1,000 columns and 1,000,000 cells. These limits are checked before cleanup, so removing duplicates cannot rescue an already rejected oversized file.
Export and data types
Output is UTF-8 without a BOM, with CRLF line endings and a final newline. The filename ends in -cleaned.csv even for tab-separated output. Fields remain text in the file, but the importing program decides types; formula-like values are not neutralized.

Worked example

Download dirty-accounts.csv. Choose semicolon and keep the header. Enable trimming, removal of empty rows, removal of duplicates and padding of short rows. Rename ID to Account ID, move Name first, then export with comma as the output separator.

Download the example files

Example input

ID;Name;Note
00123; Anna ;"first; order"
00123;Anna;"first; order"
;;
00456;Bjørn
Expected result
NameAccount IDNote
Anna00123first; order
Bjørn00456

Expect two rows removed and no uneven rows. Anna's two rows become identical after trimming; the empty row disappears and Bjørn's missing Note becomes an empty field. Compare cleaned-accounts.csv and the output table. The file retains 00123 and 00456, but opening it directly in Excel can still remove leading zeros; import those columns as text.

Questions and troubleshooting

Why did excluding a column not remove more duplicates?

Duplicate comparison uses full cleaned source rows before column exclusion. Rows differing only in an excluded column remain distinct. Define the intended duplicate rule in the source before using this tool.

Why did the quoting change in my export?

The exporter regenerates quoting for the chosen separator and doubles embedded quotes. Changing from semicolon to comma can make a formerly quoted field unquoted. That can preserve the same value even though the file is not byte-identical.

What should I do with parse or uneven-row errors?

Check the separator and encoding first. Repair unclosed quotes in the source; padding only adds missing trailing cells and cannot repair malformed quoting or shifted columns. Keep at least one column selected, and split a source that exceeds the input limits.