Why Unicode Text Can Look Equal but Compare Differently
Unicode can represent the same visible text with different code point sequences. NFC and NFD address canonical composition, while NFKC and NFKD also fold compatibility forms such as full-width letters, ligatures, and circled numbers. Separately, characters from Cyrillic, Greek, and other scripts can resemble Latin identifiers. This browser-only inspector exposes both normalization behavior and security-relevant code points without pretending that visual similarity alone proves malicious intent.
How to Inspect Unicode Normalization and Lookalikes
- 1Paste the hostname, account name, source-code identifier, filename, or text whose exact code points matter.
- 2Optionally enter trusted comparison text to check exact, NFC, NFKC, and common-confusable skeleton matches.
- 3Review high-severity mixed-script and bidirectional-control findings before informational normalization differences.
- 4Compare all four normalization outputs and copy the form required by your database, protocol, search index, or application.
- 5Inspect each code point, script, UTF-8 byte sequence, visibility flag, and mapped lookalike before accepting an identifier.
Practical Unicode Inspection Tasks
Investigate a lookalike domain or account
Compare an untrusted label against its expected spelling and reveal Cyrillic or Greek letters mixed into Latin text.
Debug inconsistent string equality
See whether composed and decomposed accents become equal under NFC even though their original code point sequences differ.
Find invisible source or filename characters
Expose zero-width and bidirectional controls that can make code, paths, or review diffs display in a misleading order.
Choose storage normalization
Preview canonical and compatibility forms before defining identifier, search, deduplication, or database normalization rules.
Frequently asked questions
Should I always use NFKC instead of NFC?
No. NFKC intentionally removes compatibility distinctions, so it can change full-width characters, ligatures, styled letters, circled numbers, and other presentation forms. It is often useful for controlled identifiers and search, while NFC is safer when compatibility distinctions must remain.
Does a matching confusable skeleton prove spoofing?
No. The skeleton is a warning signal for review, not proof of intent or identity. This tool uses a documented common-character heuristic rather than the complete Unicode UTS #39 confusables data set, and fonts can introduce additional visual similarities.
Why are emoji joiners marked invisible?
Emoji sequences can legitimately contain a zero-width joiner. The inspector exposes it because the same code point is invisible and meaningful in other contexts; interpret findings according to whether the input is natural text, emoji, source code, or an identifier.
Is my text sent to a server?
No. JavaScript normalization, script classification, skeleton generation, and UTF-8 inspection run locally in the browser.