HandyTools Hub

Leet Speak Converter

Convert text to and from 1337 speak

100% client-side processing

What the Converter Does

Leet speak, often written 1337 from “elite”, swaps letters for look-alike digits and symbols. This page translates plain text into leet at three intensity levels and translates leet back into readable text. It runs in two directions, and the level selector applies only when you are encoding.

The style grew out of the bulletin board systems of the 1980s, where users on “elite” boards swapped letters for similar-looking characters. Part of the appeal was practical: modified spellings slipped past keyword filters and text searches that looked for plain words, and a shared style signalled membership in a subculture. The habit spread through hacker, demo-scene, and gaming circles, leaving behind words such as n00b, pwn, and w00t that are now common internet vocabulary. There has never been one official alphabet, which is why two people can encode the same sentence differently and why this page offers three levels rather than a single mapping.

The Three Encoding Levels

Each level is a superset of the one before it, so higher levels replace more letters and produce denser output.

LevelLetters replacedExamples
BasicA, E, I, O, S, TA→4, E→3, I→1, O→0, S→5, T→7
Intermediateadds B, G, L, ZB→8, G→9, L→1, Z→2
Advancedadds C, D, H, K, M, N, P, R, U, V, W, XH→|-|, M→|\/|, P→|>, W→\/\/

Uppercase source letters are returned as the uppercase of the replacement, but most leet symbols have no case, so casing visibly changes only where a replacement is itself a letter. Encoded digits and symbols pass through untouched.

Worked Examples

Take the word “hello”. Basic turns it into “h3ll0” (H is not in the Basic map, so it stays; E becomes 3, O becomes 0). Intermediate turns it into “h3110” because L now maps to 1. Advanced turns it into ”|-|3110” because H becomes the four-character symbol.

Take “elite”. Basic gives “3l1t3”, since only E, I, and T are replaced. Advanced gives “31173”, converting every letter. Notice the output is shorter and harder to read back.

Decoding runs a separate operation. The input “1337” decodes to “leet”, because the reverse table reads 1 as L, 3 as E, and 7 as T. The input “h3ll0” decodes cleanly to “hello”.

The converter never adds or removes characters beyond the substitutions themselves, so the length of the output depends on the level. Basic and Intermediate mappings are one character to one character, which keeps spacing and word count intact. Advanced forms occupy two or more characters each, so “M” alone becomes five characters in |\/|, and a heavily encoded sentence can roughly double in width. If you are fitting text into a fixed-width display, prefer Basic or Intermediate and check the character count afterward.

Why Decoding Is Ambiguous

The decoder is not the exact inverse of the encoder. It builds one reverse table from the Advanced map and matches the longest symbol first, so it can only guess an original letter. Where several letters share a symbol, the table keeps just one. Because L is written after I when the map is built, “1” always comes back as L. Because the decoder has no case information for digits, “3” comes back as lower-case E even if you typed an upper-case one.

That is why round-tripping is not guaranteed. Encoding “ill” at Intermediate gives “111”; decoding returns “lll”, not “ill”. Encoding is useful for styling or obfuscation, while decoding is a best-effort reading of someone else’s text.

Using the Converter Well

Encoding is best for presentation: usernames, clan tags, puzzle clues, or a bit of retro flavour in a message. Decoding is best for reading something you did not write, and its limits are worth keeping in mind. Adjust the level until the output looks the way you want, since a lower level stays readable while the advanced level trades legibility for density. If you plan to paste the result into a form that may treat symbols literally, check that special characters such as backslashes, pipes, and brackets survive the trip; some systems escape or reject them. When reversing someone else’s text, expect to fix casing by hand, and remember that unusual ad-hoc symbols will pass straight through untouched.

Common Mistakes

  • Expecting a reversible cipher. Leet is a lossy substitution intended for style; do not use it to protect information.
  • Decoding with the level still set to a specific value. The level control is ignored in From Leet mode, so there is nothing to tune.
  • Assuming every leet dialect is covered. Real posts use ad-hoc symbols the Advanced map does not list, and those characters stay as-is.
  • Forgetting that decoded output is case-insensitive. Plan to fix capitalisation by hand.
  • Reading “l” and “1” as the same character at a glance. When copying encoded text into a form, verify at a larger font size.

Frequently Asked Questions

If I convert text to leet and straight back, do I get my original text?

Not reliably. Encoding is one-way for several letters, so 'ill' becomes '111' and decodes to 'lll', while 'i' and 'l' both map to '1'. Treat the two directions as separate tools rather than a reversible cipher.

Why did my capital letters come back in lower case?

Decoding only restores a capital when every character in the matched symbol is upper case. A digit such as 3 has no upper and lower form, so there is no way to know whether it stood for E or e, and the decoder returns the lower-case letter.

How do the Basic, Intermediate, and Advanced levels differ?

Basic replaces six letters (A, E, I, O, S, T) with look-alike digits. Intermediate adds B, G, L, and Z. Advanced adds multi-character forms such as |-| for H, |\/| for M, and |> for P, producing much denser output.

Why does decoding a 1 give me an L instead of an I?

The decoder builds its reverse table from the Advanced map, where both I and L map to 1 and the later entry wins. That makes 1 decode as L. The same kind of collision happens with any symbol that several letters share.

Is leet speak a safe way to disguise a password?

No. Substitutions like a to 4, e to 3, and o to 0 are catalogued in every cracking wordlist, so p@ssw0rd is guessed almost as fast as the plain word. Use the password generator and a password manager instead.

Does the converter change spaces, punctuation, or accented characters?

It only replaces the letters listed in the active level's map. Spaces, digits, punctuation, emoji, and accented letters pass through unchanged, and the decoder likewise leaves anything it cannot match alone.

Reviewed by the HandyTools Hub team · Last updated