charset.txt — 6 tools ● LIVE
Input · raw 0 CHARS
NETWORK PAYLOAD: 0 BYTES · PROCESSING: LOCAL
Output · converted 0 CHARS
READ-ONLY · UPDATES ON EVERY KEYSTROKE
Characters in0RAW TEXT
Characters out0CONVERTED
Escapes written0\uXXXX GROUPS
Non-ASCII chars0FULL UNICODE

Developer Tools · Group 10 of 19

Character Encoding.

Three encoding families, six directions. Turn text into \uXXXX Unicode escapes, HTML entities (named, numeric or hex) or ASCII codes — and turn each one back, losslessly. Surrogate pairs rejoin into emoji, the full HTML5 entity set decodes, and anything out of range is counted rather than corrupted. Live on every keystroke, entirely in your tab — nothing is uploaded, nothing is stored.

  • Tools06
  • Families03
  • Unicodefull
  • Backendnone
  • Costfree
In order, 01 → 06

Three families, six directions, zero servers.

( 01 )

Writes every character as a \uXXXX escape — the syntax JavaScript, JSON and many source files use to carry non-ASCII safely through ASCII-only channels. Characters above U+FFFF become surrogate pairs (👋 → \ud83d\udc4b), exactly as UTF-16 stores them. By default only non-ASCII is escaped, keeping the output readable; flip ∀ escape ASCII too to encode every single character.

Example

سلام Hello 世界 👋

\u0633\u0644\u0627\u0645 Hello \u4e16\u754c \ud83d\udc4b Persian, CJK and an emoji — ASCII stays readable.

Use it for source codeJSON payloadsi18n filessafe literals

The trip home. Reads both the classic \uXXXX form and the modern \u{…} brace form, and rejoins adjacent surrogate pairs back into single emoji and astral characters. Anything malformed is left exactly as written and counted in the Left as-is stat, so a partially-corrupted dump still decodes as far as it can.

Example

\u0633\u0644\u0627\u0645 \u4e16\u754c \ud83d\udc4b \u{1F52D}

سلام 世界 👋 🔭 surrogate pair rejoined · brace form honored.

Use it for escaped dumpsde-obfuscationdebugging JSONreading logs

Makes text safe to drop into HTML. The five dangerous characters — & < > " ' — are always escaped, because they're the ones that break markup or open XSS holes. Non-ASCII is then rendered in the style you pick from the deck: named (&eacute;) for readability, numeric (&#233;) or hex (&#xe9;) for full coverage — anything without a common name falls back to numeric even in named mode.

Example · named style

<p>Save & sync — "now" © café</p>

&lt;p&gt;Save &amp; sync &mdash; &quot;now&quot; &copy; caf&eacute;&lt;/p&gt; markup neutralized, accents kept readable.

Use it for embedding markupXSS-safe outputemail HTMLCMS content

Turns entities back into characters — and because it leans on the browser's own parser, it understands the entire HTML5 named-entity set (all two thousand-plus), plus every numeric and hex form. Unknown or malformed entities are left untouched and counted, so you always know exactly how much of the input didn't decode.

Example

&lt;b&gt;Caf&eacute;&lt;/b&gt; &amp; bar &mdash; &hearts; &#10024;

<b>Café</b> & bar — ♥ ✨ named, hex-free named, and numeric all in one pass.

Use it for encoded HTMLCMS exportsscraped textemail source

Maps each character to its decimal ASCII code, space-separated — the lowest-common-denominator view of your text. Anything beyond code 127 has no ASCII representation, so it's marked with ? and tallied in the Out of range stat rather than silently mangled. Newlines, tabs and every control character get their real codes.

Example

ABC Hi!

65 66 67 10 72 105 33 the 10 is the newline — nothing is lost.

Use it for protocol debuggingteachingserial datalow-level inspection

Reads a run of numbers and turns them back into text. Accepts spaces, commas, semicolons or newlines as separators, so a dump from any tool can be pasted straight in. Tokens that aren't valid ASCII codes (too big, not a number) are skipped and counted in the Invalid tokens stat instead of stopping the run.

Example

72 101 108 108 111 44 32 87 111 114 108 100 33

Hello, World! 13 codes in, 13 characters out.

Use it for reading dumpswire tracespuzzle inputsdata recovery

Encoding rules · all six tools are UTF-8 and UTF-16 aware — Persian, CJK and emoji survive every round trip · Unicode encoding writes \uXXXX per UTF-16 unit, so astral characters appear as surrogate pairs; the decoder rejoins them and also reads the \u{…} brace form · HTML entity encoding always escapes & < > " ' and renders other non-ASCII as named, numeric or hex per the deck · HTML entity decoding understands the full HTML5 named set plus numeric and hex, and counts anything it can't recognize · ASCII covers codes 0–127; out-of-range characters are marked and counted, never dropped silently · round trips are lossless in every family · ⇄ Output → Input feeds any result straight back for the return trip

The privacy promise

Encode anything. We couldn't read it even if we wanted to.

This page has no backend and no database. Every escape written, every entity matched and every code mapped just now was computed by JavaScript inside your own browser tab — your text never traveled a single centimeter of cable. Close the page and it's gone for good.

✕ SERVER · DATABASE · LOGS · ANALYTICS
  • Databasenull
  • Backendnone
  • Text uploads0
  • Session logs0
Questions

Asked often, answered plainly.

( 02 )
What's the difference between Unicode escapes and HTML entities?

They solve the same problem in different contexts. \uXXXX is the escape syntax of JavaScript, JSON and many source files — the language runtime interprets it. &…; is the escape syntax of HTML and XML — the markup parser interprets it. A \u00e9 inside an HTML page is just literal text on screen; you'd need &eacute; (or &#233;) there instead. Pick the family that matches where the text will be parsed.

Why does my emoji become two \uXXXX groups?

Because JavaScript strings are UTF-16, and characters above U+FFFF — emoji, many CJK ideographs, historic scripts — don't fit in a single 16-bit unit. They're stored as a surrogate pair, so the encoder writes both halves: 👋 becomes \ud83d\udc4b. The decoder rejoins them automatically, and the \u{1F44B} brace form expresses the same character as one code point if you prefer that style.

Named, numeric or hex entities — which should I use?

All three decode to the same character, so it's a readability-versus-coverage trade-off. Named entities (&eacute;) are the most readable but only exist for a subset of characters. Numeric (&#233;) and hex (&#xe9;) cover every Unicode code point with no ambiguity. The encoder lets you pick; anything without a common name falls back to numeric even in named mode, so you never lose a character.

Why do some characters become ? in the ASCII output?

Because ASCII only defines codes 0–127 — English letters, digits, punctuation and control characters. Anything beyond that — é, س, ★, emoji — has no ASCII code, so the encoder marks it with ? and counts it in the Out of range stat rather than pretending. Use the Unicode tools if those characters need to survive the trip.

Is my data saved anywhere?

No. IrisTool has no backend and no database. Encoding happens inside your browser tab and the text disappears the moment you close or refresh the page. There is nothing to leak, because nothing is ever collected.