Text & Encoding

Unicode & i18n tools

Text that looks identical on screen but fails a string comparison, a paste that turns into garbled symbols after a wrong encoding somewhere in the pipeline, or a username that looks legitimate but uses lookalike characters from another script — Unicode bugs are invisible until you have the right tool to look underneath the rendered text. This page also covers locale tags and pluralized message formatting for internationalized apps.

Unicode inspector breaks a character sequence down into code points, graphemes and raw UTF-8 bytes, which is usually where an apparent duplicate turns out to differ by normalization form. Unicode normalizer shows NFC, NFD, NFKC and NFKD side by side so you can see exactly what changes. invisible character detector reveals zero-width characters hidden in pasted text, and Unicode confusable detector flags lookalikes from other scripts that visual review alone would miss.

9 tools

Unicode & i18n tools FAQ

Why do two strings that look identical fail an equality check?

They're likely encoded with different Unicode normalization forms — an accented letter can be one combined code point or a base letter plus a separate combining mark, and both render the same but compare unequal. Unicode normalizer shows NFC, NFD, NFKC and NFKD side by side so you can see exactly which form each string uses.

How do I find hidden or invisible characters in text someone pasted to me?

invisible character detector scans pasted text for zero-width spaces, joiners and other characters that render as nothing, which are sometimes used to hide content from filters or make two strings look identical while differing underneath. It's worth checking before trusting text pasted from an untrusted source.

What causes mojibake, and can it be fixed after the fact?

Mojibake happens when text encoded in one character set — often UTF-8 — is decoded as if it were another, like Latin-1 or Windows-1252. Mojibake fixer tries the likely encoding combinations and shows repair candidates with the underlying bytes, so you can pick the one that actually reconstructs the original text.