StringMash.com

Leetspeak translator

Swap letters for the digits and symbols that look like them.

Conversion
12 characters
Updates as you type
Basic substitutions

Printable chart

Using the translator

Substitutions picks one of three levels. Basic, still readable swaps six letters for digits that resemble them, and the result reads at a glance: h3ll0 w0rld. Wide, barely readable adds symbol clusters like |_| for u and \/\/ for w. Heavy, all symbols replaces every letter, so hacker becomes |-|/-\(|<[-|2 and nothing plain is left.

Swap the boxes to decode. Pick the same level the text was written in, since a 7 is a t in basic leet but heavy leet uses + for t.

How the decoding stays honest

Encoding is a lookup. Decoding is harder, because the symbols overlap. In heavy leet |_ is l, |_| is u and |3 is b, so |_|3 could start with a u. But then the 3 would be left over, and nothing in the table is a lone 3. The decoder tries every way to split the text and keeps the reading that leaves nothing unexplained, using the fewest symbols, so |_|3 comes back as lb. When two readings tie, the longer symbol wins, so |_|2 is uz and not lr.

That reads back nearly everything this tool wrote. Some text has two honest readings, though: \/\/ is w, but it's also two v's, and the decoder picks w. Leetspeak written by a person is improvised and follows no fixed table, so expect to fix a letter or two.

Case survives substitution. H and L have no digit in the basic set, so HELLO comes back as H3LL0 rather than being flattened to lowercase.

BASIC SET

The six letters that change

a4
e3
i1
o0
s5
t7
HEAVY SET

The heavy alphabet

a/-\
b|3
c(
d|)
e[-
f|=
g(_+
h|-|
i!
j_|
k|<
l|_
m/\/\
n|\|
o()
p|*
q(,)
r|2
s$
t+
u|_|
v\/
w\/\/
x><
y`/
z2

Light and heavy leet

Leet was never one alphabet. Light leet swaps a few letters for digits, the kind that turns noob into n00b and still gets past a casual reader. Heavier leet builds letters out of punctuation, |-| for H, /\/\ for M, and turns a sentence into something only the initiated will bother to read. That was part of the point. It kept outsiders out, and on some boards it got words past filters looking for forbidden topics.

Some words even go into digits alone: 1057 is lost and 4150 is also. The same trick turned upside down on a calculator gives calculator words, and on 1990s numeric pagers it gave pager codes.

Port 31337

Leetspeak grew on bulletin board systems in the 1980s. One common explanation is that boards ran keyword filters on file names and message text, and a word with digits in it got past them. Either way, the habit became a marker of who had been around.

The word itself is "elite", respelled "eleet" and written 31337. That number is also a port, and it's the port Back Orifice listened on, the remote administration tool released by the Cult of the Dead Cow at DEF CON in August 1998. Seeing traffic on 31337 was a reliable sign that something had gone wrong on a network, and the joke was that the number said so.

The style is period-specific now, and anyone writing it today is making a reference to that era.

Related conversions

Pig Latin does the same social job by rearranging sounds instead of swapping characters. Upside-down text and mirror text borrow real characters from other alphabets to change how a word looks.

For text that looks corrupted rather than substituted, zalgo stacks combining marks instead.

Questions

What is leetspeak?

A writing style that replaces letters with digits and symbols they resemble, so "leet" is written 1337. It started on bulletin boards in the 1980s.

What is heavy leetspeak?

Leet where every letter is built from symbols, as in |-|[-|_|_() for hello. Pick Heavy, all symbols under Substitutions to write it.

How do I decode leetspeak?

Paste it above and swap the boxes. The decoder handles multi-character tokens correctly, though improvised leetspeak written by a person may not match any fixed table.

Why is 31337 significant?

It spells "eleet" and it's the port Back Orifice used, a remote administration tool released by the Cult of the Dead Cow in 1998. The number became shorthand for an intrusion.

Does leetspeak still get past filters?

Not against a filter built to expect it. Mapping 3 back to e and 0 back to o before matching takes a few lines of code.

Sources

Added . Last updated and reviewed . What's new