Dedupe lines with optional trimming and sorting. Free, private, runs in your browser.
100% private — your files never leave your browser. All processing happens locally on your device.
Duplicate lines show up everywhere: merged log files, concatenated CSVs, copy-pasted spreadsheet rows, imported user lists. Removing them is a prerequisite for almost any downstream analysis, and doing it in a text tool is faster than writing a Python script or piping through `sort | uniq`.
When the same line appears more than once, you choose which copy survives. 'Keep first' preserves the first occurrence — the default, and correct for most cases because it preserves original order. 'Keep last' is useful when you have log-style data where later entries override earlier ones (e.g., user records where the most recent edit wins).
By default, the tool compares lines case-insensitively and trims leading/trailing whitespace before comparing. That means `apple`, `APPLE`, and ` Apple ` are all treated as the same line. Toggle these off for strict byte-level comparison — useful when whitespace or case is actually meaningful (like source code).
Yes. The comparison runs locally in your browser. Your pasted lines never leave your device. There's no server, no analytics on content, nothing transmitted.
Yes. 'Keep first' preserves the first occurrence and removes later copies — the default. 'Keep last' does the opposite. Either way, the surviving line stays in its original position unless you enable sort.
Lines are compared after trimming leading and trailing whitespace (toggleable) and optionally ignoring case. Internal whitespace is always significant.
Yes. Toggle 'Sort output A-Z' to sort the result alphabetically after duplicates are removed. The dedupe step still respects your keep-first or keep-last preference.