Result
This page has no server side at all. The table you paste is parsed by JavaScript inside your own browser, the chart is drawn on a canvas element on your machine, and the export file is assembled locally. Nothing is uploaded, stored or written to any log. You can disconnect from the network after the page has loaded and everything will still work — which is the simplest way to verify the claim yourself.
Facts and limits of this method
| Trim whitespace | Removes leading and trailing spaces and tabs from every line; spaces inside a line are untouched |
|---|---|
| Empty line | A line that is empty after trimming — including a line that contains only spaces |
| Duplicate detection | Case-insensitive: "[email protected]" and "[email protected]" count as the same line |
| Kept occurrence | The first occurrence of a duplicate line is kept; later ones are dropped |
| Processing order | Trim → remove empty lines → remove duplicates, when all three switches are on |
| Line endings | Both \n and \r\n line breaks are recognized |
When it misleads you
- Duplicate detection compares whole lines, not individual fields — two lines that differ only in a trailing comment or an extra column are not treated as duplicates.
- Case-insensitive matching uses simple lowercase comparison; it does not apply locale-specific case rules, so a handful of accented or special characters can still end up treated as distinct.
- Trimming only removes whitespace from the two ends of a line. Repeated spaces in the middle of a line ("John Smith") are left as-is — use Find & Replace for that.
- The three switches always run in the same order — trim, then empty lines, then duplicates. If you only need one step, turn the other two off before copying the result.
How it is calculated
Each line of the input is treated independently — the list is split on line breaks before any cleanup step runs.
When trimming is on, every line has its leading and trailing whitespace stripped before the other checks run, so " foo" and "foo " become identical for the empty-line and duplicate checks that follow.
Duplicate removal keeps the first line it sees for each lowercase key and discards every later line with the same key, so the surviving lines stay in their original order.
"Lines before" counts the lines right after splitting the input; "lines after" counts what remains once the selected operations are applied, so you can see how much the list shrank.
Questions and answers
Does the tool remove duplicates first or trim first?
Trimming runs first, then empty lines are removed, then duplicates — so " foo" and "foo " are recognized as the same duplicate as long as trimming is on.
Is duplicate matching case-sensitive?
No, it is always case-insensitive: "Test" and "test" are treated as duplicates and only the first one is kept.
Can I keep the original list order?
Yes. The cleaner never sorts the list — it only removes lines, so the order of the remaining lines matches the original.
What counts as an empty line?
A line with zero characters, or one that becomes zero-length after whitespace trimming — for example a line with only spaces or tabs.
Is my list uploaded anywhere?
No. Everything runs in your browser; the list you paste is never sent to a server.