sieve
In your browser. Off our servers.A Digitopia Labs tool ↗

CSV cleaner for untidy spreadsheetsA little order.
A lot less faff.

Drop in a CSV. Review the loose ends. Take away a cleaner file.
Nothing changes until you say so.

contacts-september.csv
12 rows · 4 columns · sample data
Processed in your browser. Nothing uploaded.
02 / A closer look

Trim the loose ends.

Removes spaces, tabs and no-break spaces at the start and end of a value. Spaces between words stay exactly as they are. Marked below: · a space, ⇥ a tab, ⍽ a no-break space.

Preview only
RowColumnBeforeAfter
2Name(1 leading space) Alice Morgan (1 trailing space)Alice Morgan
2Company(1 leading space) North StudioNorth Studio
3CompanyFieldwork (1 trailing space)Fieldwork
5CompanyFieldwork (1 trailing space)Fieldwork
6Email(1 leading space) jo@example.comjo@example.com
8CompanyPaper House (1 trailing space)Paper House
10Name(1 leading space) Ada WilsonAda Wilson
12Company(1 leading space) KindredKindred
8 of 8 values shown · row numbers as the file stands now, header as row 1
Your original is untouched. Review a fix to get started.
None in this file. With this on, each gets a leading apostrophe so a spreadsheet shows it as text instead of running it as a formula. Plain negative numbers are left alone. The change report says which you chose.
Drop a file anywhere on the desk · UTF-8 CSV up to 2 MB, 10,000 rows, 100 columns
A cleaner file. A clearer head. ↓
How Sieve cleans a CSV

Spreadsheets collect baggage.
You don’t have to keep it.

01 / See it

The space you can’t see.

A trailing space makes two identical-looking names different to a spreadsheet, a mail merge or a lookup. Sieve draws the spaces, tabs and no-break spaces at the edges of each value before it trims anything, and leaves the spaces between words alone.

02 / Decide it

Same name. Different person?

You decide what makes a duplicate. Match every column, or choose a key such as email. Preview the rows that would go, each beside the row it matches; the first stays. Nothing is merged or guessed.

03 / Keep it

A file. And a paper trail.

Download the cleaned CSV and a plain-text record of every change, in order. Undo anything first if it is not right. The file you opened is never changed, and leading zeros in codes and postcodes stay put.

A few sensible questions

Less mystery.
More control.

Does my CSV leave my computer?

No. Sieve reads and cleans the file in your browser tab. Nothing is uploaded, stored or sent anywhere, and closing the tab clears it. The only things that leave the page are the two files you choose to download, and a count of anonymous events such as a file opened or a fix applied, which never includes a file name, a column name or a value.

What does Sieve clean?

Three things, deliberately: spaces, tabs and no-break spaces at the start or end of a value; rows that are completely empty; and duplicate rows, matched on the columns you choose. Every change is shown before it happens, applied only when you approve it, and can be undone.

Will it fix dates or guess missing values?

No. Sieve never guesses dates, fills blanks, changes capitals, merges similar names or converts values to numbers. Those are judgements about what your data means, and a tool that makes them silently is worse than a messy file.

What happens when I open the cleaned file in Excel?

A CSV stores text, not formatting. Sieve keeps leading zeros in the file, but a spreadsheet may still decide a column is numbers and drop them when it opens it. Import columns such as account codes and postcodes as Text to keep them. Values that begin with =, +, -, @, a tab or a return are given a leading apostrophe by default, so a spreadsheet shows them as text instead of running them as formulas. The change report says how many.

Which files can I use?

UTF-8, comma-separated files with a header row, up to 2 MB, 10,000 rows and 100 columns. Quoted commas, quotes and values over several lines all work. A row with a different number of values from the header is refused rather than padded or cut, because guessing which value went missing would change your data without telling you.

How are duplicates decided?

By exact match on the columns you choose, which is every column to begin with. The first row stays and later matches are removed. Ben and ben, or Ben with a trailing space, are different, which is why outer spaces are offered first. A row whose chosen columns are all blank never counts as a duplicate.