Home › Text Tools › Unicode Normalizer

Unicode Normalizer

Paste text to convert it to any of the four Unicode normalization forms and see exactly which characters changed, with their code points before and after. Use NFC for storage and comparison, or NFKC to fold look-alike compatibility characters such as fi, ① and full-width Hello.

Last updated:

Compare all four forms

Changed characters

Advertisement
Advertisement

How to use the Unicode Normalizer

  1. Paste your text into the input box, or load the example to see typical cases.
  2. Choose a form: NFC (most common), NFD, NFKC or NFKD.
  3. Tick extra options if you also want to remove accents, invisible characters or special spaces.
  4. Review the changes table to see which code points changed and why.
  5. Copy or download the normalized text, or copy it as escaped \u sequences for code.

How the four forms treat common characters

InputCode pointsNFCNFDNFKCNFKD
é (precomposed)U+00E9ée + U+0301ée + U+0301
e + ◌́ (combining)U+0065 U+0301é (U+00E9)unchangedé (U+00E9)unchanged
Å Angstrom signU+212BÅ (U+00C5)A + U+030AÅ (U+00C5)A + U+030A
Ω Ohm signU+2126Ω (U+03A9)Ω (U+03A9)Ω (U+03A9)Ω (U+03A9)
fi ligatureU+FB01unchangedunchangedfifi
Full-width AU+FF21unchangedunchangedAA
Superscript ²U+00B2unchangedunchanged22
Circled ①U+2460unchangedunchanged11
½ vulgar fractionU+00BDunchangedunchanged1⁄2 (with U+2044)1⁄2
™ trade markU+2122unchangedunchangedTMTM
No-break spaceU+00A0unchangedunchangedspace U+0020space U+0020
각 Hangul syllableU+AC01각3 jamo U+1100 U+1161 U+11A8각3 jamo

NFC and NFD only make canonical changes: the text means exactly the same thing. NFKC and NFKD also apply compatibility mappings, which can change appearance and lose information.

When normalization matters

  • String comparison and deduplication: "Café" typed on a Mac and "Café" pasted from a PDF may differ byte for byte. Normalize both to NFC before comparing or hashing.
  • Search: normalize the index and the query the same way. NFKC plus case folding makes full-width, ligature and styled letters findable.
  • File names: some file systems store names decomposed (close to NFD) while others keep what you typed, which can create apparent duplicates when files are synced.
  • Usernames and identifiers: NFKC folds many look-alike characters, which reduces spoofing. It does not catch all confusables (Cyrillic а vs Latin a stay different).
  • Databases and APIs: normalize at the boundary (when data arrives) so everything stored is in one form.

Normalization in code

LanguageNFC example
JavaScriptstr.normalize('NFC')
Pythonunicodedata.normalize('NFC', s)
JavaNormalizer.normalize(s, Normalizer.Form.NFC)
C# / .NETs.Normalize(NormalizationForm.FormC)
PHP (intl)Normalizer::normalize($s, Normalizer::FORM_C)
Gonorm.NFC.String(s) (golang.org/x/text/unicode/norm)

Frequently asked questions

What is Unicode normalization?

Unicode often has more than one way to write the same visible text. For example é can be one code point (U+00E9) or an e followed by a combining acute accent (U+0065 U+0301). Normalization converts text to one agreed form so that strings which look the same also compare as equal, sort consistently and can be searched reliably.

What is the difference between NFC, NFD, NFKC and NFKD?

NFD decomposes characters into base letters plus combining marks; NFC decomposes and then recomposes them into precomposed characters where possible. Both only make canonical changes that never alter meaning. NFKD and NFKC additionally apply compatibility mappings, which fold formatting variants into plain characters: the ligature fi becomes f + i, ① becomes 1, x² becomes x2 and full-width H becomes H.

Which normalization form should I use?

NFC is the usual choice for storing and exchanging text and is recommended by the W3C for the web; most text is already in NFC. Use NFD when you need to work with accents separately, for example to strip them. Use NFKC for search, usernames and identifiers, where you want look-alike variants to match, but keep the original text for display because NFKC can lose formatting meaning such as superscripts.

Is NFKC normalization reversible?

No. Compatibility normalization throws away the distinction between variants, so after NFKC you cannot tell whether a 2 was originally ² or ②. Canonical forms (NFC and NFD) are reversible with each other: converting NFC to NFD and back gives the same NFC text.

Why does my text get longer in NFD?

NFD splits precomposed letters into a base letter plus one or more combining marks, so é (1 code point, 2 UTF-8 bytes) becomes e + ◌́ (2 code points, 3 UTF-8 bytes). Korean Hangul syllables decompose into 2 or 3 jamo each. The comparison table shows the code point and byte counts for every form.

Does normalization remove accents?

No. Normalization keeps accents; NFD only separates them from the letter. To remove them, decompose to NFD and delete the combining marks, which is what the 'Also remove accents' option does. Letters that are not built from a base letter plus an accent, such as ø, ł or ß, are not changed by this.

Does normalization remove zero-width or invisible characters?

No. Zero-width spaces, zero-width joiners, soft hyphens and byte order marks survive all four forms. Use the 'Also remove invisible characters' option to delete them, but be careful with emoji: zero-width joiners hold multi-person and family emoji together.

Are all the tools on FreeToolCabin tested for quality and accuracy?

Yes! Every tool on our site undergoes automated Q/A testing in real browser environments to ensure high precision, correct output, and zero errors. If you happen to spot a bug or have a suggestion, please contact us at [email protected] and our team will review it right away.

Related tools

Unicode Character LookupFind Unicode characters by name or code point and copy them with UTF-8, HTML and code escapes.Unicode Escape / UnescapeConvert text to \uXXXX, \u{...}, \x, &#...; or CSS escapes and decode them back.Remove AccentsStrip accents and diacritics from text (é→e, ñ→n, ß→ss, ø→o) instantly, live as you type.Invisible CharacterCopy blank and invisible characters (ㅤ U+3164, U+2800, zero width space) for names and messages.Fancy Text GeneratorTurn text into cool Unicode fonts for bios.Reverse Text GeneratorWrite text backwards, reverse words or lines, mirror or flip it upside down.Upside Down Text GeneratorFlip text upside down with Unicode characters, or turn it back to normal.Emoji CounterCount every emoji in your text, including flags, skin tones and ZWJ sequences.Small Text GeneratorTurn text into tiny superscript, subscript and small caps letters you can copy and paste.Zalgo Text GeneratorMake creepy glitch text with separate up, middle and down sliders, or clean zalgo back to normal.Emoji PickerSearch 1,900+ emoji by name, pick skin tones and copy and paste them with one click.Special CharactersCopy and paste 1,500+ symbols: arrows, math, currency, stars, checkmarks, © ® ™ and more.Word UnscramblerUnscramble letters into every possible word, with blank tiles, length filters and Scrabble scores.Braille TranslatorTranslate English text to Grade 1 Unicode braille and back, with dot numbers and printing.ASCII Art GeneratorTurn text into big ASCII banners or convert any image into ASCII art you can copy.Bold Text GeneratorConvert text to bold Unicode letters you can copy and paste anywhere.Italic Text GeneratorConvert text to italic Unicode letters you can copy and paste anywhere.Cursive Text GeneratorConvert text to cursive Unicode letters you can copy and paste anywhere.Strikethrough Text GeneratorConvert text to strikethrough Unicode letters you can copy and paste anywhere.Underline Text GeneratorConvert text to underlined Unicode letters you can copy and paste anywhere.Bubble Text GeneratorConvert text to bubble Unicode letters you can copy and paste anywhere.Wide Text GeneratorConvert text to wide Unicode letters you can copy and paste anywhere.Old English Text GeneratorConvert text to Old English Unicode letters you can copy and paste anywhere.Superscript GeneratorConvert text to superscript Unicode letters you can copy and paste anywhere.Subscript GeneratorConvert text to subscript Unicode letters you can copy and paste anywhere.Remove Special CharactersStrip symbols, emoji and odd characters, keeping only letters, numbers, spaces and what you allow.Emoji TranslatorTranslate text to emoji: words like love, pizza and dog become ❤️ 🍕 🐶, with a density slider.Monospace Text GeneratorTurn text into 𝚖𝚘𝚗𝚘𝚜𝚙𝚊𝚌𝚎 typewriter-style Unicode letters to copy and paste.Aesthetic Text GeneratorMake aesthetic text with vaporwave letters, sparkles, hearts and frames to copy.Emoji Letters GeneratorTurn words into 🇭 🇪 🇱 🇱 🇴 regional indicator, 🅰️ block and keycap 1️⃣ emoji letters.Discord Colored Text GeneratorColor, bold and underline text for Discord with ANSI code blocks and a live preview.Discord Font GeneratorFancy fonts for Discord names and bios, plus ready-made Discord markdown formatting.Remove Emojis from TextStrip every emoji, flag, skin tone and ZWJ sequence from text, with a count of what was removed.Fill in the Blank GeneratorTurn any text into a printable fill-in-the-blank worksheet with word bank and answer key.Instagram Font GeneratorMake bold, cursive and aesthetic fonts for your Instagram bio, name and captions.Stylish Name GeneratorDecorate your name with ꧁ ꧂, ★彡, 亗 and other symbols for games and profiles.Tattoo Font GeneratorPreview a word or name in gothic, script and other tattoo-style fonts to copy.Alt Codes ListSearchable Windows Alt code chart (Alt+0176 °, Alt+0169 ©) with Mac shortcuts and one-click copy.Fancy Text to Normal Text ConverterTurn bold, cursive, bubble, small caps, fullwidth and zalgo Unicode text back into plain text.Mail Merge Text GeneratorFill a {placeholder} template with CSV rows to create a personalized message for each person.Mirror Text GeneratorCreate mirrored and reflected text with Unicode look-alike letters (ɘ, ꓘ, Я) and copy it.Shrug EmoticonCopy ¯\_(ツ)_/¯ in one click, plus Discord, Reddit and Markdown-safe versions and 30 shrug variants.Vertical Text GeneratorTurn text into vertical columns, one character per line, to copy into posts, bios and chats.Arrow SymbolsCopy and paste 600+ arrow symbols → ⇒ ➜ ↑ ↻ by direction and style, with Alt and HTML codes.Fraction SymbolsCopy fraction symbols ½ ¼ ¾ ⅓ ⅛ or build any fraction like ¹⁵⁄₁₆ with superscript digits.Heart SymbolsCopy and paste heart symbols ♥ ❤ ♡ ❥ 💕 and decorative hearts with Alt, Unicode and HTML codes.Star SymbolsCopy and paste star symbols ★ ☆ ✦ ✩ ✪ ⭐ ✨ and asterisms with Unicode, Alt and HTML codes.Bullet Point SymbolsCopy and paste bullet symbols • ◦ ▪ ➤ ✓ ‣ for lists and resumes, plus a bulleted list maker.Copyright and Trademark SymbolsCopy © ® ™ ℠ ℗ with Alt and HTML codes, when to use each, and a copyright notice maker.Currency SymbolsCopy and paste $ € £ ¥ ₹ ₿ and 80+ world currency signs with ISO codes and Alt codes.Em Dash Copy and PasteCopy the em dash —, en dash – and every hyphen or minus sign, with when to use each.Emoji CipherTurn secret messages into emoji with a shared key, then decode them back to text.Text Border GeneratorWrap text in a copyable ASCII or Unicode box: single, double, rounded, heavy, stars and more.Text Divider GeneratorCopy aesthetic Unicode line dividers like ─── ⋆⋅☆⋅⋆ ─── or build your own symmetric divider.Text Pixel Width CalculatorMeasure how many pixels wide text renders in any font and size, and check it against a limit.Check Mark SymbolCopy and paste check marks and ballot boxes ✓ ✔ ☑ ✅ ☐ ✗ with Alt, Unicode and HTML codes.Degree SymbolCopy the degree sign ° (and °C, °F) in one click, with Alt code and how to type it anywhere.Kaomoji Copy and Paste2,000+ Japanese kaomoji text faces by emotion and animal. Search and copy with one click.LaTeX Equation EditorWrite LaTeX math with a symbol palette and live preview; export PNG, SVG or MathML for Word.Lenny Face GeneratorBuild your own ( ͡° ͜ʖ ͡°) by picking ears, eyes and mouth, or copy 60+ ready-made Lenny faces.Math Symbols Copy and PasteCopy math symbols like ∑ √ ∞ ≤ ∫ π ∈ with their Unicode, HTML entity and LaTeX command.Copy and Paste Text ArtCute one-line and multi-line text art (animals, hearts, faces, borders) to search and copy.Emoji MeaningsLook up what an emoji means: meaning, slang use, Unicode name, version and related emojis.
See all 61 Fonts, Symbols & Emoji →