Unicode Normalization

Normalize text to Unicode NFC, NFD, NFKC or NFKD as you type. Convert full-width letters and half-width katakana, and unify accented characters. Shows how many code points changed, so differences that look identical on screen become visible. Runs in your browser.

About this tool

What is Unicode normalization?

In Unicode, the same visible text can be stored in more than one way. é can be a single character (U+00E9) or e followed by a combining accent (U+0065 U+0301). Full-width A and half-width A, or ① and 1, are also different characters with related meanings. Normalization converts text to one consistent form so that searching, comparing and sorting work as expected. This tool applies the browser's built-in String.prototype.normalize() with the form you choose.

How to use

  1. Choose a Normalization form (NFC, NFD, NFKC or NFKD). NFKC is selected by default.
  2. Type or paste text into Input text, or drop a text file onto it.
  3. The result appears immediately in Output text. Below it you can see whether anything changed and the code point count before and after.
  4. Use the buttons in the corner of the editors to copy or download the result.

The four forms

FormWhat it doesTypical use
NFCComposes characters (e + accent → é)Standard form for storing and exchanging text on the web
NFDDecomposes characters (é → e + accent)Removing accents, or matching filenames created on macOS
NFKCReplaces compatibility characters, then composesSearch keys, user input cleanup, full-width/half-width unification
NFKDReplaces compatibility characters, then decomposesText analysis where accents are handled separately

The "K" (compatibility) forms change how some text looks, for example fi becomes fi and x² becomes x2, so use them for matching rather than for text you will display as-is.

Examples

InputNFCNFDNFKC
ABC123unchangedunchangedABC123
ガギ (half-width)unchangedunchangedガギ
① / ㍻ / ™unchangedunchanged1 / 平成 / TM
é (1 code point)é (1)é (2)é (1)

Features

  • All four normalization forms: NFC, NFD, NFKC and NFKD
  • Live conversion as you type or switch forms
  • Change indicator: "Already in … form (no changes)" or the code point count before and after
  • Text file input, plus copy and download for the input and output

FAQ

Which form should I use?

Use NFC for storing and sending text. Use NFKC when you want to treat full-width and half-width characters, circled numbers and similar variants as the same, for example to build search keys or to clean up form input.

Why does the output look the same as the input?

Many changes are invisible. A decomposed é and a composed é look identical but differ in code points. Check the code point count below Output text to see whether the text actually changed.

Does NFKC convert hiragana to katakana or uppercase to lowercase?

No. Normalization does not change kana type or letter case. Use the Hiragana / Katakana Converter or the Case Converter for that.

Is my text sent to a server?

No. Normalization runs in your browser.