Unicode Normalizer - NFC, NFD, NFKC, NFKD and Accent Remover
Unicode Normalizer
Fix text that looks the same but is not: composed vs decomposed accents, ligatures and invisible characters
All Four Forms
Convert to NFC, NFD, NFKC or NFKD with one click, and see which forms your text is already in.
Clean-Up Options
Strip accents to get plain letters, remove zero-width characters and soft hyphens, and turn non-breaking spaces into normal ones.
Compare Look-Alikes
Check whether two strings that look identical are really the same, and see exactly which code points differ.
Every Code Point
A table lists each code point with its UTF-8 bytes and Unicode category, so hidden characters are easy to spot.
Why Text That Looks the Same Is Not
Unicode often allows the same visible character to be written in more than one way. The letter é can be one code point (U+00E9) or an e followed by a combining acute accent (U+0065 U+0301). Both display identically, but a program that compares them byte by byte says they differ. That breaks searches, duplicate checks, file names, database lookups and password comparisons, and macOS and Windows often store the same file name in different forms.
Normalization turns every equivalent spelling into one standard form. NFC composes characters and is what most software expects for the web and databases. NFD decomposes them. The K forms (NFKC, NFKD) also fold compatibility look-alikes: the ligature fi becomes fi, full-width letters become ordinary letters and the circled ① becomes 1. That is useful for searching and for comparing identifiers, but it loses information, so do not use it on text you need to keep exactly. The cleanup options remove zero-width characters, which are a common cause of strings that look equal but are not.
Key Takeaways
- Checked against Python: All four forms and accent removal gave identical results to Python’s unicodedata on thousands of test strings.
- NFC is the safe default: Use NFC for storage and exchange. Use NFKC only for matching and search.
- Zero-width joiners matter: Removing U+200C and U+200D can break emoji sequences and the spelling of some scripts, so leave that option off for such text.