Excel's Remove Duplicates Not Working? Here's Why
You run Remove Duplicates, and rows that look exactly the same are still sitting there afterward. This is one of the most common Excel frustrations, and it almost always comes down to the same handful of causes: something invisible is different between the two cells, even though nothing visible is.
Quick answer
Excel's Remove Duplicates compares stored content, not visual appearance. Rows that look identical usually differ in ways you can't see: a trailing or leading space, a non-breaking space instead of a regular one, a zero-width character from a web paste, or a number stored as text in one row and a real number in another. Find the exact difference with the Invisible Character Detector, then normalize the list with the Text Fixer (trim, remove extra spaces, remove duplicates) before pasting it back in.
Find the hidden character causing the mismatch.
Open Invisible Character Detector →The most common cause: trailing or leading spaces
"Apple" and "Apple " (with a trailing space) look identical in a cell but are different strings as far as Excel's comparison is concerned. This happens constantly with data pasted from web pages, copied from PDFs, or exported from another system that pads values with whitespace. Remove Duplicates does not trim whitespace before comparing, so both rows survive.
The sneaky one: non-breaking spaces
A non-breaking space (used in HTML as ) renders visually identical to a normal space but has a completely different underlying character code. Text copied from a web page frequently carries these in without any visual sign that anything unusual happened. Two cells that appear character-for-character identical - even when you zoom in - can still fail to match because one has a regular space and the other has this different character entirely.
Zero-width characters
Less common but real: zero-width spaces and similar invisible Unicode characters occasionally make it into pasted text, particularly from certain web sources or copy-paste chains through multiple apps. These take up no visible space at all, so there's no way to spot them just by looking at the cell - they only show up when something like a duplicate check or an exact-match filter fails unexpectedly.
Numbers stored as text
A value typed with a leading apostrophe, imported from a CSV, or pulled from certain database exports can end up stored as text even though it displays as a plain number. The same number entered normally elsewhere in the sheet is stored as an actual numeric type. Visually these are indistinguishable - both show 1024 - but depending on how the comparison is done, Excel may or may not treat them as equal.
Case sensitivity working against you (not for you)
Remove Duplicates is generally case-insensitive, treating "Apple" and "apple" as the same value by default. This is the opposite problem: instead of missed duplicates, it can merge rows you actually wanted kept distinct, such as case-sensitive codes or identifiers where capitalization is meaningful.
Diagnosing the exact problem
Rather than guessing, paste the suspect list into the Invisible Character Detector. It annotates every line with visible markers for non-breaking spaces, zero-width characters, tabs, and carriage returns, plus a summary count of each type found. This turns "these look the same but don't match" into a concrete, visible answer.
Fixing it in one pass
Once you know what's different, the fastest fix is usually not to hunt down individual cells but to normalize the whole list at once. Paste the list into the Text Fixer, enable trim start/end and remove extra spaces, add a case change if case sensitivity is part of the problem, and check remove duplicates. The output is a cleaned, deduplicated list you can paste straight back into your column - no manual per-cell editing required. Google Sheets has the same blind spot for hidden characters; its own options are covered in how to remove duplicates in Google Sheets.
Want the full breakdown of every cause?
A general guide to why identical-looking lines fail to match, across any tool.