Code Beautifier

String Inspector

Count graphemes, code points, and UTF-8 bytes, and reveal bidi controls, zero-width characters, unusual spaces, and mixed-script words.

Draft saved locally.

Local workspace

Named projects in IndexedDB · Local only — never synced to our servers. Worksp

Open manager

Batch workspace

Format multiple files locally in one run.

text
json

FAQ

Why are there four different character counts?

They answer different questions. A family emoji is one grapheme on screen, five code points, eight UTF-16 units (what JavaScript's .length reports), and eighteen UTF-8 bytes (what a database column limit counts).

What are bidi control characters, and why flag them?

They reorder how text displays without changing what it contains. An override or isolate that is never closed can make code or a filename read one way and run another, which is the basis of the Trojan Source attack.

Why is a zero-width or non-breaking space a problem?

It's invisible but counts as a character, so string comparisons fail, JSON keys don't match, and a command copied from a web page won't run. They arrive most often from word processors and rich-text editors.

What does a mixed-script word mean?

The word combines letters from different alphabets, such as a Cyrillic a inside an otherwise Latin word. It looks identical but isn't the same text, which is how lookalike domains and package names are built.

Why isn't the joiner inside an emoji flagged?

A zero-width joiner is how multi-person and profession emoji are built, so it's expected inside an emoji grapheme. The same character is flagged when it appears in ordinary text.