Leet speak converter
Convert text to 1337 speak and back: three substitution levels (light, medium, heavy), an optional random-variant mode, and a decoder that turns digits and symbols back into letters.
Runs in your browserEvery computation happens in your browser — your data never leaves this device.
Input
Options
The mappings are community convention rather than a formal standard, and only single-character substitutions are used so decoding stays unambiguous. Everything runs locally.
Characters replaced at this level:0
Result
Type some text to see the conversion.
What this tool does
- Turn plain text into 1337 for game nicknames, forum signatures or chat — the light level only swaps six letters and stays readable.
- Stuck on a wall of 1337 someone posted? Switch to 1337 → Text and the digits get mapped back to letters.
- Need a "hacker" headline for a poster: generate a heavy-level string and tweak it by hand.
- Compare the same sentence at all three levels — light keeps it readable, heavy turns nearly everything into symbols.
Example
Input
leet speak (heavy level, random variants off)
Output
|337 5p34k
Switching to 1337 → Text gives leet speak back; the same sentence at the medium level is l33t 5p34k, and the light level produces l33t 5p34k as well.
Frequently asked questions
How do the three levels differ?
Light only does the classic six substitutions (a→4, e→3, i→1, o→0, s→5, t→7). Medium adds b→8 and g→9 plus @, ! and $ variants. Heavy adds c→(, l→|, z→2 and t→+ for the densest symbol soup.
What does the random variant switch do?
It picks one of the available replacements at random, so a is sometimes 4 and sometimes @, which reads more like a human typed it. The randomness comes from the browser crypto.getRandomValues API; with it off, the first replacement is always used so results are reproducible.
Why is decoding not always exact?
Leet is lossy by nature: the digit 1 stands for i at the light level, while | stands for l at the heavy level — and your original text may already contain digits. The decoder maps every known symbol back to a lowercase letter, so something like "2 items" becomes "z items".
Does Chinese text get mangled?
No. The mapping table only contains Latin letters, so Chinese characters, punctuation, spaces and unmapped letters pass through untouched — mixed-language sentences are safe to convert.
Why single-character substitutions only?
Multi-character replacements such as m→/\/\ look fancier but have no decodable boundary, which would wreck ordinary text on the way back. Sticking to single characters is what lets heavy-level encoding round-trip through the decoder.
Keywords:leet speak1337leet converterhacker texttext to leetleet decodeleet 转换1337 speak黑客文字符号替换游戏昵称解码还原