// Base36 - Alphanumeric encoding using digits 0-9 and letters A-Z
Uses only letters A-Z and digits 0-9, safe for any system.
More compact than decimal, less than hex for large numbers.
No special characters, perfect for URLs and identifiers.
Base36 encoding uses 36 distinct characters (0-9 and A-Z) to represent data. It's commonly used for generating short, alphanumeric identifiers from large numbers. Each digit position represents a power of 36, making it more compact than decimal but still human-readable. Case-insensitive by default, making it ideal for systems where case sensitivity might be an issue.
Numbers to Base36:
123 → 3F
1000 → RS
999999 → LFLR
Text to Base36 (via bytes):
Hi → 1Q5
ABC → 3O0AF
Common Uses:
- YouTube video IDs
- Short URL identifiers
- Session tokens
- Product codes
- License keys
Base36 is a positional numeral system that uses 36 distinct symbols: the digits 0-9 and letters A-Z. It provides a compact way to represent numbers using alphanumeric characters only.
Base36 is widely used for generating short identifiers like YouTube video IDs, URL shorteners, session tokens, and product codes. It's popular because it creates human-readable, URL-safe strings without special characters.
Base36 is typically case-insensitive, using either uppercase (A-Z) or lowercase (a-z) letters. This makes it robust for systems where case might be normalized or ignored.
Base36 is more compact than decimal (base10) but less compact than hexadecimal (base16) or base64. It strikes a balance between compactness and readability, using only alphanumeric characters which makes it universally compatible.
Paste your Base36 string (0-9 and A-Z) into the input above and press [FROM BASE36]. The tool converts it back into a decimal number — or, when you paste multiple tokens, into the original text via the bytes-of-the-number interpretation. A Base36 online decoder like this one runs entirely client-side, so you can safely decode session IDs, short URLs, or internal identifiers without uploading anything.
Every major language has Base36 built in — no library needed:
JavaScript: (123).toString(36) → "3f"; parseInt("3f", 36) → 123.
Python: format(123, 'x') is hex — for Base36 use int(s, 36) to decode and a short helper to encode, since Python's stdlib has no to_base36.
Java: Long.toString(123, 36) and Long.parseLong("3f", 36).
Go: strconv.FormatInt(123, 36) / strconv.ParseInt("3f", 36, 64).
Very short, URL-safe identifiers are almost always produced by converting a big integer (a row ID in the database, or a hash) to a higher base. Base36 (0-9, A-Z, case-insensitive) fits the RFC 3986 unreserved set and survives case-preserving systems like email clients. Base62 (0-9, A-Z, a-z) is ~17% shorter but case-sensitive. YouTube IDs are 11-character Base64url (A-Z, a-z, 0-9, -, _) — a 64-symbol variant. The underlying math is always the same: n.toString(base). See /base62/ for the case-sensitive variant.
No — base-36, base 36, base36, and Base36 all refer to the same radix-36 positional system using digits 0-9 and letters A-Z. You will see all spellings in RFCs, documentation, and StackOverflow answers. This tool accepts any of them and applies case-insensitive decoding by default.
Base36 在线解码:把 0-9 和 A-Z 组成的字符串贴入左侧输入框,点击 [FROM BASE36],工具会把它还原为十进制数字。
Base36 在线编码:输入数字或文本,点击 [TO BASE36],得到仅包含 36 个字符的紧凑串。
这种编码广泛用于 短链生成、YouTube-style 短 ID、发票号/订单号 等需要 URL 安全又易读的场景。整个过程在浏览器本地完成,ID 与密钥不会外传。
There is no theoretical maximum — Base36 is just a positional notation. In practice, you are bounded by your language's integer type. In JavaScript, Number.MAX_SAFE_INTEGER (2⁵³−1) fits in 11 Base36 characters. For larger values use BigInt in JS, int (arbitrary precision) in Python, or BigInteger in Java — all of which still support toString(36) style conversion. A UUID (128 bits) renders as 25 Base36 characters, a SHA-256 as 50.