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.
{{dictionaryError}}
Custom dictionary loaded: {{customDictionaryCount}} entries.
{{encodeError}}
{{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.
{{glyphEncodeError}}
{{encodeResult.tokenText}}{{decodeResult.text}}
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.text}}
Average cell recognition confidence: {{(glyphDecodeResult.stats.avgConfidence*100).toFixed(0)}}%· {{glyphDecodeResult.stats.lowConfidenceCells}} low-confidence cell{{glyphDecodeResult.stats.lowConfidenceCells===1?'':'s'}}
{{glyphPhotoDiagnostics.cols}}×{{glyphPhotoDiagnostics.rows}} cells · grid confidence {{(glyphPhotoDiagnostics.confidence*100).toFixed(0)}}%
{{ inspectorSubtitle }}
Print a ruled grid with guide marks optimized for drawing glyphs by hand and scanning with phone camera.
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.
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.
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.
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.