Removing duplicates sounds simple until two lines differ only by capitalization or surrounding spaces. A reliable tool must say which transformed value is compared, which occurrence survives and whether order changes. ListClean performs trimming first when selected, then removes duplicates while keeping the first surviving occurrence. The output count and removed count make that rule auditable instead of hiding it behind a generic clean button.
Exact matching preserves meaningful differences
In exact mode, Apple and apple are distinct, as are `North Hall` and `North Hall` with two internal spaces. Trimming affects only the leading and trailing edges, never the middle of an item. Exact mode is the safest default when capitalization or punctuation may carry meaning. After processing, compare input and output counts and scan the output before replacing an authoritative source.
Ignore-case matching is narrow, not fuzzy
Ignore-case mode converts comparison keys to Unicode lowercase and still keeps the spelling of the first occurrence. It does not remove accents, transliterate alphabets, fix spelling, collapse internal whitespace or decide that abbreviations are equivalent. Café and cafe remain different. This narrow contract is deliberate: semantic guessing could merge two genuinely different items without evidence.
Deduplicate before optional sorting
ListClean removes duplicates before the final ordering step. With order set to Keep current order, the first occurrence rule is visible directly. If sorting is enabled, the same surviving values are reordered only afterwards. This distinction matters because sorting first could change which spelling appears first among lines that compare equal. The fixed pipeline keeps the chosen representative independent from the display order.