Base32 Encoder / Decoder
Convert text to Base32 encoding and decode Base32 strings back to text. RFC 4648 compliant with optional padding support.
⇌
Text Input
Quick Examples:
Base32 Output
Base32 encoded text will appear here...
About Base32 Encoding
Base32 is a binary-to-text encoding scheme that represents binary data using 32 ASCII characters (A-Z and 2-7). It's more human-readable than Base64 and case-insensitive, making it ideal for scenarios where users need to manually enter encoded data.
Key Features:
- • Uses only uppercase letters and numbers 2-7
- • Case-insensitive (easier to read/type)
- • No confusing characters (0, 1, 8, 9)
- • RFC 4648 standard compliance
- • Optional padding with '=' characters
Base32 Alphabet
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
2
3
4
5
6
7
32 characters: A-Z (26 letters) + 2,3,4,5,6,7 (6 numbers)
Base32 vs Base64 Comparison
| Feature | Base32 | Base64 |
|---|---|---|
| Alphabet Size | 32 characters | 64 characters |
| Case Sensitive | No (case-insensitive) | Yes (case-sensitive) |
| Efficiency | 62.5% (5 bits per char) | 75% (6 bits per char) |
| Human Readable | Excellent (no confusing chars) | Good (includes +, /, =) |
| URL Safe | Yes (always) | Needs URL-safe variant |
| Best Use Cases | User input, URLs, QR codes | Email, web protocols, files |
Common Use Cases
✅ When to Use Base32
- •Two-Factor Authentication (2FA): TOTP secrets for Google Authenticator
- •User-Entered Codes: License keys, activation codes
- •QR Codes: Better error correction with fewer characters
- •URL Parameters: Always URL-safe without escaping
- •Case-Insensitive Systems: When case doesn't matter
❌ When NOT to Use Base32
- •Storage Efficiency Critical: Base64 is 20% more efficient
- •Email Protocols: Base64 is the standard
- •Binary File Encoding: Base64 handles binary data better
- •JSON/XML Data: Base64 is more widely supported
Security and Best Practices
🔒 Security Considerations
- •Encoding ≠ Encryption: Base32 is not secure, just encoding
- •Data Visibility: Encoded data is easily readable if decoded
- •No Data Validation: This tool doesn't store or transmit data
- •Client-Side Processing: All encoding happens in your browser
⚡ Best Practices
- •Padding: Include padding for strict RFC 4648 compliance
- •Validation: Always validate Base32 input before decoding
- •Error Handling: Handle invalid characters gracefully
- •Testing: Test with various input lengths and edge cases
Base32 in Practice - Real World Examples
🌐 DNS and Networking
DNS TXT Records:
google-site-verification=MFXQY2LNORSW...
Base32 ensures case-insensitive DNS compatibility
Tor Hidden Services:
facebookcorewwwi.onion
Onion addresses use Base32 for public key encoding
Domain Fronting:
cdn-GEZDGNBVGY3TQ.example.com
Subdomain generation for load balancing
🔐 Authentication Systems
Google Authenticator Seeds:
JBSWY3DPEHPK3PXP
TOTP secret keys use Base32 for manual entry
Recovery Codes:
ABC23-DEF45-GHI67
Backup codes avoid confusing characters
OAuth State Parameters:
?state=MFRGG2LTMVQWG
URL-safe random state for CSRF protection
📁 File Systems
Git Alternative Refs:
refs/heads/MFRGG2LTMVQWG
Case-insensitive filesystem compatibility
Backup Filenames:
backup-2024-GEZDGNBVGY3TQ.tar.gz
Unique filenames that work across platforms
Temporary Files:
/tmp/cache-NFXGO2LJNN2WG.tmp
Collision-resistant temporary file naming
📱 QR Codes and Mobile
Wi-Fi QR Codes:
WIFI:S:Network;T:WPA;P:ABC234DEF;
Alphanumeric mode improves QR efficiency
App Activation Codes:
ABCD-EFGH-2345-6789
User-friendly codes for mobile app activation
Contact Sharing:
vCard with Base32 IDs
QR-friendly contact information encoding
💡 Implementation Tips
For Developers
- • Use RFC 4648 compliant libraries
- • Test case-insensitive decoding
- • Handle padding edge cases
- • Validate input character set
- • Consider chunking for long data
For Users
- • Avoid similar-looking characters (0,O)
- • Case doesn't matter: "abc" = "ABC"
- • Padding = signs may be optional
- • Great for typing by hand
- • Works well in QR codes
Common Pitfalls
- • Mixing Base32 with Base64
- • Forgetting to handle padding
- • Assuming case sensitivity
- • Not validating alphabet
- • Length calculation errors