Unicode Normalizer
Convert text between the Unicode normalization forms NFC, NFD, NFKC and NFKD — compose or decompose accents, fold look-alikes. Free, in your browser.
Canonical compose — merges combining marks into single characters. The web default.
Code points: 0 → 0
🔒 Normalized in your browser with String.prototype.normalize — nothing is uploaded.
What Unicode normalization does
The same visible text can be stored as different sequences of code points. An accented "é" may be a single precomposed character (U+00E9) or a plain "e" followed by a combining acute accent (U+0065 U+0301) — identical on screen, yet unequal strings that quietly break comparison, deduplication, sorting, and search. Normalization rewrites text to one canonical sequence so those variants match. This tool applies the browser native normalizer and reports the code-point count under every form, so you can see at a glance which forms actually change your text.
NFC vs NFD vs NFKC vs NFKD
The two canonical forms preserve the meaning of every character: NFC composes marks into precomposed characters (the form the web and most databases expect), while NFD splits them into base letter plus combining marks. The two compatibility forms go further and fold visually distinct look-alikes to a plain equivalent — the "fi" ligature becomes "fi", "①" becomes "1", "½" becomes "1⁄2" — with NFKC composing afterward and NFKD leaving them decomposed. Use NFC for storage and interchange, NFD when you need to strip diacritics, and the NFK forms for search indexing or homoglyph and spoofing checks where look-alikes must collapse.
Frequently asked questions
What is the difference between NFC and NFD?
NFC composes combining marks into single precomposed characters — "e" plus a combining acute accent becomes "é", one code point. NFD does the reverse, splitting "é" back into "e" plus the combining accent. Both preserve the exact characters and differ only in how those characters are encoded. NFC is the usual choice for the web and databases.
When should I use NFKC or NFKD?
Use the compatibility forms when visually similar characters must be treated as the same. NFKC and NFKD fold ligatures, circled numbers, full-width letters, and fractions to their plain equivalents (fi becomes fi, ① becomes 1, ½ becomes 1⁄2). That is what you want for search indexing, username uniqueness, and homoglyph or spoofing checks. The fold is lossy, so it is not appropriate for text you plan to display back unchanged.
Is my text uploaded anywhere?
No. Normalization runs entirely in your browser through the built-in String.prototype.normalize. Your text is never sent, stored, or uploaded, so even sensitive content stays on your device.