Unicode Normalization

← All tools

Convert a string to NFC, NFD, NFKC, or NFKD and list the code points before and after. The conversion uses String.prototype.normalize.

The string never leaves the browser. Nothing is uploaded. The form is stored in the URL. The string is not.

Open file…

Form

NFC is the default, so the URL omits it. The other forms use form=nfd, form=nfkc, or form=nfkd. Files up to 1 MB open in the page. The table shows the first 300 code points.

Not converted

Result

Copy and Download use the normalized string. The summary stays on the page.

Normalized string

Call

Before

Code pointCharacterUTF-8

After

Code pointCharacterUTF-8

The table stops at 300 code points. The summary and the copy include the rest of the count, or the full list when it is 40 code points or fewer.

About this tool

The four forms are the Unicode normalization forms. NFC and NFD are canonical. NFKC and NFKD are compatibility forms. This page callsString.prototype.normalize with the form you pick. The sample is cafe written as e plus the combining acute U+0301. NFC turns that pair into U+00E9. NFD of the composed character splits it back apart.

Each row is one code point: the hex, the character, and its UTF-8 bytes. A combining mark is drawn after a dotted circle so you can see it. A lone surrogate stays where it is. Normalization leaves it in place, and it has no UTF-8 bytes, so that cell says none. The page stops at 500,000 UTF-16 code units.

Compatibility normalization can replace a character. The ligature at U+FB01 becomes the two letters f and i under NFKC, and that change does not round-trip. NFC leaves the ligature as one code point. The page adds that note only when the compatibility result differs from the matching canonical form.

Read more

Free books, courses, and software

Get my programming books, course editions, and complete software.

Get the download library →