Unicode inspector

See what is really in a piece of text: every code point with its name, and the characters that hide or deceive, from zero-width spaces and Trojan Source bidirectional controls to Cyrillic letters posing as Latin. Look up any code point, find one by name, clean a text and write it as escapes in eight languages.

Kodowanie i dane
Try

Runs in your browser. Nothing you paste leaves the page.

50 code points, 50 UTF-16 units, 58 UTF-8 bytes, 1 line; 4 outside ASCII.

4 code points need a look.

Bidirectional controls left open

Line 1: U+202E U+2066 still open at the end of the line. Everything after them on that line can be displayed in an order different from the order a compiler or parser reads it, which is the Trojan Source pattern (CVE-2021-42574).

What was found

  • Bidirectional control: 4Changes the order in which the text around it is displayed. Right-to-left text needs it; in code it can make a line read differently from how it runs (UTS #55).
  • Invisible: 4Default_Ignorable_Code_Point: where it is not supported it is simply not rendered at all.

The text, with every hidden character shown

Each character that needs a look is drawn as a tag with its code point; hover or focus it for the name.

if access_level != "userU+202E U+2066// Check if adminU+2069 U+2066" {

Every code point

AtLine:ColCharCode pointNameCategoryScriptFlags
01:1iLlLatn
11:2fLlLatn
21:3␣ZsZyyy
31:4aLlLatn
41:5cLlLatn
51:6cLlLatn
61:7eLlLatn
71:8sLlLatn
81:9sLlLatn
91:10_PcZyyy
101:11lLlLatn
111:12eLlLatn
121:13vLlLatn
131:14eLlLatn
141:15lLlLatn
151:16␣ZsZyyy
161:17!PoZyyy
171:18=SmZyyy
181:19␣ZsZyyy
191:20"PoZyyy
201:21uLlLatn
211:22sLlLatn
221:23eLlLatn
231:24rLlLatn
241:25-RIGHT-TO-LEFT OVERRIDECfZyyyBidirectional control, Invisible
251:26␣ZsZyyy
261:27-LEFT-TO-RIGHT ISOLATECfZyyyBidirectional control, Invisible
271:28/PoZyyy
281:29/PoZyyy
291:30␣ZsZyyy
301:31CLuLatn
311:32hLlLatn
321:33eLlLatn
331:34cLlLatn
341:35kLlLatn
351:36␣ZsZyyy
361:37iLlLatn
371:38fLlLatn
381:39␣ZsZyyy
391:40aLlLatn
401:41dLlLatn
411:42mLlLatn
421:43iLlLatn
431:44nLlLatn
441:45-POP DIRECTIONAL ISOLATECfZyyyBidirectional control, Invisible
451:46␣ZsZyyy
461:47-LEFT-TO-RIGHT ISOLATECfZyyyBidirectional control, Invisible
471:48"PoZyyy
481:49␣ZsZyyy
491:50{PsZyyy

Cleaned copy

Choose what to change. Folding lookalikes also changes genuine words in other scripts, so it is off by default.

4 removed, 0 spaces or line breaks, 0 quotes or dashes, 0 lookalikes replaced.

if access_level != "user // Check if admin " {

Write the text as escapes

Every character outside printable ASCII as an escape, and the characters each language reserves escaped too. Each form was decoded back by its own language when this tool was built.

if access_level != \"user\u202E \u2066// Check if admin\u2069 \u2066\" {
API endpointGEThttps://ronutz.com/api/v1/unicode-inspectorDocumented, not served. Opens the specification.

Źródła

Appears in these workflows