Crypto Codec

Encode text as a stream of dictionary words or a 2D glyph grid. A fresh random mapping is built for every message, so identical input never produces the same output twice — decode it with a matching dictionary (and passphrase, if one was used) to get the original text back.

Dictionary

{{dictionaryError}}

Custom dictionary loaded: {{customDictionaryCount}} entries.

Encode

Presets:
{{encodeInput.length}} chars {{encodeByteLength}} bytes

{{encodeError}}

Glyph library

{{glyphLibraryError}}

{{glyphLibraryNotice}}

Draw your own custom 256-glyph libraries in the Glyph Matrix Editor, then import them directly here in 1 click or upload as JSON.

Visual Theme

Encode

Presets:
{{glyphEncodeInput.length}} chars {{glyphEncodeByteLength}} bytes

{{glyphEncodeError}}

Result
{{encodeResult.stats.sourceBytes}} B → {{encodeResult.stats.compressedBytes}} B{{encodeResult.stats.compressed ? ' (compressed)' : ' (raw)'}} · {{encodeResult.stats.tokenCount}} tokens
{{encodeResult.tokenText}}
Decode (token stream → text)
{{decodeTokenCount}} tokens
{{decodeResult.error ? '✕' : '✓'}} {{decodeResult.error ? 'Could not decode' : 'Decoded successfully'}} {{decodeResult.error || decodeMetaLine}}
Typo detected in "{{decodeResult.unknownToken}}". Did you mean
Result (2D Glyph Grid)
{{glyphEncodeResult.stats.sourceBytes}} B → {{glyphEncodeResult.stats.compressedBytes}} B{{glyphEncodeResult.stats.compressed ? ' (compressed)' : ' (raw)'}} · {{glyphEncodeResult.stats.cols}}×{{glyphEncodeResult.stats.rows}} grid, {{glyphEncodeResult.stats.cellCount}} cells
Cell #{{hoveredCell.index}} {{hoveredCell.typeName}} Glyph ID: #{{hoveredCell.glyphId}} Byte value: {{hoveredCell.byteHex}}
Hover over any cell to inspect its frame structure (Preamble, Payload, ECC, Filler)
Decode (image → text)
Choose an image or drop it here

A PNG exported by this tool's Encode panel above, or a photo of hand-written glyphs on ruled paper — decoded entirely in your browser.

{{glyphDecodeResult.error ? '✕' : '✓'}} {{glyphDecodeResult.error ? 'Could not decode' : 'Decoded successfully'}} {{glyphVerdictDetail}}
Recovered {{glyphDecodeResult.stats.correctedCells}} misrecognized or damaged cell(s) via Reed-Solomon error correction.

Average cell recognition confidence: {{(glyphDecodeResult.stats.avgConfidence*100).toFixed(0)}}%

Detected grid
Perspective-corrected

{{glyphPhotoDiagnostics.cols}}×{{glyphPhotoDiagnostics.rows}} cells · grid confidence {{(glyphPhotoDiagnostics.confidence*100).toFixed(0)}}%

About this toolbytes as words & glyphs

How it works

Text is encoded as UTF-8, passed through adaptive compression when that makes it smaller, and optionally encrypted with AES-256-GCM using a PBKDF2-stretched passphrase. A fresh random mapping from byte values to dictionary words is built for every message, so the same text never produces the same token stream twice — the mapping travels inside the encoded stream itself, so no separate key exchange is needed to decode an unencrypted message.

Not encryption on its own

Without a passphrase, this is an encoding, not secrecy: anyone who knows the algorithm can decode the message from the token stream alone. Turning on the passphrase adds real AES-256-GCM authenticated encryption on top — a wrong passphrase, or a tampered token stream, is rejected rather than silently decoded into garbage.

Bring your own dictionary & glyph libraries

Choose from multiple built-in dictionaries (Russian, English, BIP-39 mnemonic sets, conlang syllables, runes, emoji) or upload your own 256-entry JSON dictionary. In the Glyphs tab, you can import custom 256-glyph libraries directly from the Glyph Matrix Editor with one click or upload custom JSON sets to persist them in your browser storage.

About the Glyphs tab & Reed-Solomon ECC

The same byte-level codec also has a visual face: instead of words, each byte becomes a glyph image arranged in a grid, one glyph per cell. With Reed-Solomon error correction enabled, 8 parity bytes are attached, allowing the decoder to automatically correct up to 4 damaged or misrecognized cells when photographing hand-drawn glyphs on ruled paper.