Unicode Normalizer
Normalize Unicode text to NFC, NFD, NFKC, or NFKD form. Fixes encoding inconsistencies.
Form:
Canonical Decomposition + Canonical Composition (most common)
Input
Normalized (NFC)
Original length: 0Normalized length: 0Original code points: 0Normalized code points: 0Changed: No
What is Unicode normalization?
Unicode allows the same character to be represented in multiple ways. For example, 'é' can be a single code point (U+00E9, NFC) or two code points — 'e' + combining accent (U+0065 + U+0301, NFD). Normalization ensures a consistent form. NFC is best for web/storage; NFD is preferred for text processing; NFKC/NFKD additionally decompose compatibility characters like ℌ → H. Use NFC for most applications.
Built and maintained by Meet Shah · Last updated
What this tool is used for
- Making two strings that look identical actually compare equal.
- Normalising user input before storing it so lookups match reliably.
- Diagnosing why a filename does not match between two systems.
- Choosing between composed and decomposed forms for a database column.
- Checking what a compatibility normalisation does to a string before applying it.
Frequently Asked Questions
- What is the difference between NFC and NFD?
- How an accented letter is stored. NFC composes it into one code point (é = U+00E9); NFD decomposes it into a base letter plus a combining mark (e + U+0301). Both display identically, both are correct, and they are not equal as strings.
- Which form should I store?
- NFC, almost always — it is what the W3C recommends for the web, what most systems produce, and it is shorter. Normalise on input, once, at the boundary, so everything downstream can compare strings with `==` and be right.
- What do the K forms do differently?
- NFKC and NFKD apply *compatibility* mappings, which are lossy: fi becomes fi, ① becomes 1, ℌ becomes H, and a full-width A becomes A. Useful for search indexing and username checks, destructive for anything you intend to display back.
- Why does my filename not match on macOS?
- Because HFS+ stored filenames in a decomposed form close to NFD while nearly everything else uses NFC. A file called "café" created on a Mac can fail to match the same name typed on Linux — the classic cause of a mysterious "file not found" in a build.
- Why does the character count change?
- Because decomposing adds code points: café is 4 in NFC and 5 in NFD, since the accent becomes its own character. What a reader sees is unchanged, which is why a length check should count grapheme clusters rather than code units.
- Which normalisation form should I use?
- NFC for storage and interchange — it is what the web platform assumes and keeps text compact. NFKC only when you deliberately want compatibility folding, since it rewrites characters such as ligatures and fullwidth forms.
Common errors and gotchas
- Using a compatibility form on data you must preserve exactly, since it changes characters rather than reordering them.
- Normalising a password before hashing on one system and not the other, which breaks every login.
- Assuming normalisation is idempotent across forms, so applying two in sequence is safe.
- Normalising a filename on a platform that stores a different form, which then mismatches.
- Treating normalisation as sanitisation, which it is not.
Related Text Tools tools
Case Converter
Convert between Sentence, Title, camelCase, snake_case, and more.
Word Counter
Count words, characters, and analyze keyword density.
Text to Binary
Convert text into its 8-bit binary representation.
Binary to Text
Decode 8-bit binary back into readable text.
Text Reverser
Reverse text by characters, words, or lines.
Remove Duplicate Lines
Delete repeated lines and keep your list unique.
Remove Empty Lines
Strip blank and whitespace-only lines from text.
Sort Lines Alphabetically
Sort lines A–Z or Z–A, case-sensitive or not.