FreeToolsLand

Unicode Normalizer

Fold styled and fullwidth characters back to plain letters, and catch the ones that only look like letters.

Free, no signup, no limits

Composed, compatibility

ResultNFKC applied

BoB wrote this in bold Unicode. Fullwidth: HELLO A ligature: find the flaw. Now log in at аpplе.cоm (that is not apple.com).

Lookalike lettersCyrillic, not Latin
5:15Cyrillic letter, looks like aU+0430
5:19Cyrillic letter, looks like eU+0435
5:22Cyrillic letter, looks like oU+043E

How to turn fancy Unicode text back into normal letters

Pick NFKC and copy the result. The bold, italic and script letters people paste into social media bios are mathematical alphanumeric characters, and the compatibility fold maps every one of them back to an ordinary letter.

The same pass flattens fullwidth characters and splits ligatures, so text copied out of a Japanese form or an old PDF comes back as plain ASCII.

What each normalisation form does

NFC recombines a letter and its accent into one character. It is the web default and what you want for storing and comparing text, because two strings that look identical should compare as equal.

NFD does the opposite, splitting an accented letter into a base letter plus a combining mark. macOS filenames use it. It is also the first step in stripping accents, since the accent has to be a separate character before it can be removed.

NFKC does what NFC does, and also folds characters that are stylistic variants of a letter rather than different letters. That covers the whole mathematical alphabet, fullwidth forms and ligatures. It changes how the text looks on purpose, which is the point.

NFKD is the compatibility fold plus decomposition. Rarely what you want on its own.

Why the same-looking text does not match

Two reasons, and they need opposite fixes.

The first is a normalisation difference. A letter with an accent can be stored as one character or as two, and both render identically. Normalise both sides to the same form and they match. This is the one that bites when comparing filenames between macOS and Linux.

The second is a homoglyph, and normalisation cannot touch it.

What a homoglyph is, and why normalising will not help

A homoglyph is a character from one alphabet drawn like a character from another. The Cyrillic small a and the Latin small a are different letters that happen to share a shape.

Normalisation exists to merge characters that are the same character written differently. These are not that. They are genuinely separate letters, so no normalisation form is permitted to merge them, and none ever will.

That gap is exactly what gets exploited. A domain spelled with a Cyrillic a reads as apple.com to a human and resolves somewhere else entirely. The same trick slips words past keyword filters. This tool lists every one it finds with a line and column, and names the script it came from.

Replacing them is off by default, because text written in Russian or Greek is not text full of mistakes.

Undoing styled text you made on purpose

If you formatted a post with the LinkedIn post formatter and want the plain version back, NFKC is the undo. The formatter swaps letters for their mathematical alphabet equivalents, and the compatibility fold maps them straight back.

Worth knowing before you style a whole post: those characters are not indexed as letters, and screen readers handle them badly.

What else to check

Normalisation only touches characters that have a fold. Zero-width spaces, non-breaking spaces and byte order marks survive every form untouched, so if text is still failing after a pass here, the invisible character detector shows what is left. The AI text cleaner removes them in one go.

Everything runs in your browser. No account, no limit, nothing uploaded.

Frequently asked questions

Something missing here?

If this tool almost does what you need, say what is missing. That is usually how the next version gets built.