Base36 Converter
Convert between decimal (base-10) and base-36 — digits 0–9 plus letters A–Z.
⇅ convert
Decimal
255
Base-36
73
Quick examples
About Base-36 Converter
Base-36 uses digits 0–9 and letters A–Z as its 36 symbols, giving a compact case-insensitive representation of large numbers. It is commonly used in URL shorteners, unique identifier generation, and anywhere a short alphanumeric string is needed. For example, the decimal number 46655 is ZZZ in base-36 — three characters instead of five digits. This converter handles arbitrarily large integers in both directions.
Built and maintained by Meet Shah · Last updated
What this tool is used for
- Producing a compact alphanumeric identifier from a numeric database id.
- Decoding a short code back into the number it represents.
- Shortening a large counter value for a URL without losing information.
- Reading a base-36 value from a legacy system.
- Comparing base-36 against other compact encodings for identifier length.
Frequently Asked Questions
- Why base 36 specifically?
- Because it is the largest base using only digits and unaccented letters — 0-9 plus A-Z. That makes it case-insensitive and safe in URLs, filenames and DNS labels without any escaping.
- How much shorter is it than decimal?
- Roughly 35%. A 10-digit decimal number becomes about 6 base-36 characters, which is why it is used for short URL slugs and compact identifiers where every character on screen counts.
- Is it case-sensitive?
- No — 36 symbols means uppercase and lowercase are the same value, which is exactly why it suits DNS and case-insensitive filesystems. Base62 doubles the alphabet by treating them differently and loses that property.
- Where will I encounter it?
- JavaScript's Number.toString(36) is a common quick ID generator, Reddit uses base 36 for post IDs, and many URL shorteners use it. It also appears in older serial-number schemes.
- What is the precision limit?
- In JavaScript, numbers above 2^53 lose precision before conversion even starts, so a large ID converted through Number is already wrong. BigInt is required for anything beyond that.
- Why is base 36 the maximum for this style?
- Because it uses the ten digits plus 26 letters, and there are no more single-character alphanumerics. Anything beyond it has to introduce punctuation, which is what base58, base62 and base64 do.
- Is it safe for identifiers in URLs?
- Yes — every character is alphanumeric, so nothing needs escaping. The caveat is case: base36 is conventionally case-insensitive, so it survives a system that upper- or lowercases the value.
- Why do languages have built-in support for it?
- Because `toString(36)` and `parseInt(x, 36)` fall out of the same radix machinery that handles binary, octal and hex. It is a free consequence of a general implementation rather than a deliberate feature.
Common errors and gotchas
- Assuming case matters. Base 36 is case-insensitive, which is why it is safe to read aloud and why it is less compact than base 62.
- Mixing base 36 with base 62 across systems, where the same string decodes to different numbers.
- Overlooking that sequential ids produce guessable codes, which is a privacy issue rather than an encoding one.
- Expecting a fixed length. The output grows with the value and needs padding for alignment.
- Treating it as encoding for arbitrary bytes. It converts numbers, not binary data.
Related Encoders & Decoders tools
Base64 Encoder
Encode or decode Base64 strings.
URL Encoder
Safely encode or decode URL parameters.
Base Converter
Convert numbers between binary, octal, decimal, hex, and base 2-36.
ROT13 Encoder / Decoder
Apply the reversible ROT13 letter-substitution cipher.
HTML Entity Encoder / Decoder
Escape or unescape HTML entities like & and <.
Punycode Converter
Convert internationalized domains to and from Punycode.
Text to Morse Code
Translate text into Morse code dots and dashes.
Morse Code to Text
Decode Morse code dots and dashes back into text.