HandyBench

Leetspeak Translator

Convert text to 1337 speak, basic or advanced.

How to use the Leetspeak Translator

  1. 1 Choose Text → Leet or Leet → Text.
  2. 2 Pick a substitution level: basic (common swaps like e→3, a→4) or advanced (more aggressive symbol swaps).
  3. 3 Type your text and copy the translated result.

Two substitution tables

Leetspeak ("1337" is "elite") replaces letters with digits and symbols that look similar. The tool offers two encoding levels, both based on simple one-to-one lookups with no random choice, so the same input always gives the same output.

LevelReplacements
Basic (6 letters)a to 4, e to 3, i to 1, o to 0, s to 5, t to 7
Advanced (12 letters)All of the above, plus b to 8, c to (, g to 6, h to #, l to 1, z to 2

Lookups ignore case, but a letter that has no substitute keeps whatever case you typed, while a replaced letter becomes the digit or symbol. Everything else, including punctuation and spaces, is untouched.

Worked examples

InputBasicAdvanced
leetl3371337
hackerh4ck3r#4(k3r
Hello WorldH3ll0 W0rld#3110 W0r1d
Elite Hackers3l173 H4ck3r531173 #4(k3r5

That is why "1337" itself only appears in Advanced mode: in Basic, the letter l has no replacement.

Decoding is lossy

Leet to Text applies one reverse table, regardless of the level you chose for encoding: 4 to a, 3 to e, 1 to i, 0 to o, 5 to s, 7 to t, 8 to b, 6 to g, 2 to z, # to h and ( to c. Several problems follow from that.

  • The digit 1 always becomes i, never l. So 1337 h4x0r decodes as ieet haxor, not "leet haxor".
  • Standalone numbers are kept by default. 7h3 y34r 2024 becomes the year 2024, because a token that is only digits, optionally with . , : / - between them (2024, 3.5, 12:30), is treated as a real number. The catch is that an all-digit leet word such as 1337 is kept too; untick "Keep standalone numbers" to decode those. Digits mixed with letters, as in h4x0r, are always decoded.
  • Case is lost for every decoded character, which are all lower-case.
  • Other leet styles are not recognised. Multi-character swaps such as |< for k, /\ for A or |\| for N are left unchanged.

Practical notes

  • Leet was historically used for in-group style, and later to dodge simple word filters. Modern filters usually normalise these swaps first, so it no longer hides much.
  • It is a poor way to strengthen a password. Substitutions like p4ssw0rd are included in every cracking dictionary; check what actually makes a password strong with the password strength checker.
  • Readability falls fast at Advanced level, since # and ( stand in for letters, so keep it to short usernames and headings.

For other letter-swapping puzzles try ROT13, or restyle text with the fancy text generator.

Examples

  • ▸ "leet" becomes "l337" (basic) or "1337" (advanced).
  • ▸ "hacker" becomes "h4ck3r" (basic) or "#4(k3r" (advanced).

Frequently asked questions

What is leetspeak?

Leetspeak (1337 5p34k) replaces letters with visually similar numbers and symbols, originating in early hacker and gaming online communities as informal, stylized text.

What is the difference between basic and advanced?

Basic uses the most recognizable substitutions (a→4, e→3, i→1, o→0, s→5, t→7). Advanced adds more aggressive swaps for additional letters, producing denser, harder-to-read leet text.

Can leet text be decoded back to normal?

Only approximately. Leet → Text reverses the common substitutions, but the mapping is lossy: 1 could have been i or l, case is lost, and a number that was never leet looks the same as one that was. Standalone numbers such as 2024, 3.5 or 12:30 are left alone by default; untick "Keep standalone numbers" if your leet text uses an all-digit word such as 1337. Check the result by eye.

Is leetspeak still used today?

Mostly for fun in usernames, gaming and casual chat rather than serious writing — it is a nostalgic internet-culture style rather than a formal encoding.

Why does "leet" only become "1337" in advanced mode?

Basic mode swaps only a, e, i, o, s and t, so the letter l stays as it is and "leet" becomes "l337". Advanced mode also swaps l for 1, which gives "1337".

Does decoding depend on the level I choose?

No. Decoding always uses one reverse table, and the digit 1 always becomes "i" (never "l"). Numbers that stand alone in the text are kept, but digits inside a word are converted, so "h4x0r" becomes "haxor". Decoded output needs checking by eye.