Leet-speak Translator

Turn normal text into leet-speak, or decode leet-speak back to plain text.

Translates in both directions with the classic 1337 character set.

Updated August 22, 2026
Frank Zhao - Creator
CreatorFrank Zhao
Loading calculator…

Introduction / overview

Leet-speak — also written 1337, l33t, or leetspeak — is a playful way of writing that swaps letters for numbers and symbols that look similar. The e\mathrm{e} in a word becomes 3\texttt{3}, the o\mathrm{o} becomes 0\texttt{0}, and so on. It grew out of early internet culture in the 1980s, where it was used by hackers and gamers to look elite — which is exactly where the name comes from. Read more about leet and its history on Wikipedia.

Two directions, one box: type normal text and it turns into leet-speak, or paste leet-speak and it decodes back into plain text. The result updates as you type.

People reach for a leet-speak translator when they are crafting a gamer tag, adding a retro hacker vibe to a social post, or trying to decode a message someone wrote in 1337. The calculator uses a classic basic leet character set with 16 letter substitutions, so the output stays readable instead of turning into an unreadable jumble.

How to use / quick start

Step-by-step

  1. Choose the direction: From normal text to leet (the default) or From leet to normal text.
  2. Type or paste your text into the Write your text field.
  3. Read the translated result below — it updates automatically as you type.

Worked example: “Hello”

With the default direction, typing Hello\text{Hello} replaces each letter with its leet equivalent:

H#\mathrm{H} \to \#e3\mathrm{e} \to 3l1\mathrm{l} \to 1l1\mathrm{l} \to 1o0\mathrm{o} \to 0

The result reads #3110. Switch the direction to From leet to normal text and paste #3110\texttt{\#3110} back in — the calculator returns hello, mapping each leet character to its lowercase letter.

Calculation method

Translation is a simple per-character substitution. In the normal → leet direction, each character is uppercased and then replaced when it has a leet equivalent; every other character — digits, punctuation, and spaces — passes through exactly as typed.

leet(c)=map(c)\mathrm{leet}(c) = \mathrm{map}(c),,map(A)=4\mathrm{map}(\mathrm{A})=\texttt{4},,map(B)=8\mathrm{map}(\mathrm{B})=\texttt{8},, \dots

In the leet → normal direction, each leet character is mapped back to its lowercase letter. One special case: a standalone !\texttt{!} becomes the letter I\mathrm{I} rather than a lowercase i\mathrm{i}.

plain(c)=rev(c)\mathrm{plain}(c) = \mathrm{rev}(c),,rev(4)=a\mathrm{rev}(\texttt{4})=\mathrm{a},,rev(8)=b\mathrm{rev}(\texttt{8})=\mathrm{b},, \dots

The 16 letter substitutions

These are the exact mappings the calculator uses. Letters without an entry are left unchanged.

LetterLeetLetterLeet
A4O0
B8RЯ
C©S5
E3T7
G6Wω
H#X×
I!Y¥
L1Z2

Notice the substitutions are chosen for how the characters look, not how they sound —R\mathrm{R} becomes the Cyrillic Я\text{Я}, and W\mathrm{W} becomes the Greek ω\omega.

The number-versus-letter ambiguity

Because leet reuses digits, the calculator cannot tell whether a 3\texttt{3} was meant as the number 3 or the letter E\mathrm{E}. In the leet → normal direction it always reads it as the letter, so decoding is best-effort — a message that mixes real numbers with leet letters may not come back perfectly.

Common scenarios

Gaming handles and usernames

Turn a taken or plain username into a distinctive-looking tag, like Shadow 5#4d0ω.

Decoding old messages

Someone sent you 1337 5p34k\texttt{1337 5p34k}? Switch to the leet → normal direction to read it as leet speak\text{leet speak}.

Social media flair

Add a retro hacker vibe to a bio or post without making it unreadable — the basic leet set keeps most words recognizable.

Tips & best practices

Case never matters on input

Hello\text{Hello} and hELLo\text{hELLo} both become #3110\texttt{\#3110} — every letter is uppercased before it is matched.

Only 16 letters change

Letters without a leet equivalent — like D\mathrm{D}, F\mathrm{F}, or P\mathrm{P} — stay exactly as typed.

Digits and punctuation pass through

Numbers, spaces, and punctuation are preserved in both directions, so sentences keep their structure.

A lone “!” decodes as “I”

In the leet → normal direction, a standalone !\texttt{!} becomes the capital letter I\mathrm{I}, matching how it is used in leet-speak.

Want your leet text in a consistent case — all caps or all lowercase? Run it through the uppercase to lowercase converter after translating.

Frequently asked questions

What does 1337 mean?

It is leet-speak for leet, which itself comes from elite. The calculator encodes the word leet\text{leet} as 1337\texttt{1337} l1\mathrm{l} \to 1, e3\mathrm{e} \to 3, e3\mathrm{e} \to 3, t7\mathrm{t} \to 7.

Why does “3” sometimes stay as a number?

In the normal → leet direction, the digit 3\texttt{3} is not a letter, so it stays as it is. In the leet → normal direction, every 3\texttt{3} is read as the letter E\mathrm{E}. The calculator cannot tell whether a digit was meant as a number or a letter.

Can I translate any language?

The calculator works on any text, but only Latin letters A–Z have leet equivalents. Non-Latin scripts and most punctuation pass through unchanged, so a sentence in another alphabet will keep its letters but lose nothing else.

Limitations

This calculator uses one classic basic leet character set, but leet-speak is not standardized — there are many dialects with far more substitutions. Only 16 letters are mapped, so words made mostly of unmapped letters change very little. In the leet → normal direction, the calculator cannot distinguish a digit used as a number from a digit used as a letter, so decoding mixed messages is best-effort. Leet is a fun, informal way to write — it is not a cipher for secure communication.

Leet-speak Translator - Convert Text to Leet and Back