Codebook always includes homophones; this controls whether encoding picks randomly from the pool or always uses the first code
Codebook always includes null codes; this controls whether encoding inserts them at random positions
Additive is the strongest option — with a unique random pad per message it is theoretically unbreakable. Reusing a pad across messages destroys that guarantee.
0 chars
Save the pad before sending the message! The pad — not the passphrase — is what decodes additive ciphertext. Leave this empty to fall back to a passphrase-derived stream (no longer a true OTP).
Plaintext inputprintable ASCII + newlines
Encrypted output
In0
chars
Out0
chars
–Phrases
–Words
–Trigrams
–Digrams
–Letters
–Nulls
–Ratio
Live encodingclick Run to watch each token become a code group
Encoding mapclick any token or code group to highlight its match —
click in the input or output textareas above to find the corresponding span here
Plaintext (input)
Encode or decode a message to see the breakdown.
Code groups (output)
phrasewordtrigramdigramletterspecialnull
Encoding trace
run an encode to see results
Phrases
Words
Trigrams
Digrams
Letters
Special
A→Z
Import Codebook
Paste JSON or TSV codebook data below. The imported book will replace the current one. JSON format:{"seed":"…","groupLen":5,"entries":{"code":"token",…}} TSV format: one code TAB token pair per line (first line may be a #seed:… comment).