Base64 vs Hex-kodning: Vilken Ska Du Välja?
Quick Answer
Använd Base64 när storlek spelar roll (email-bilagor, data URLs, API-payloads). Använd Hex när läsbarhet spelar roll (debugging, hash-visning, färgkoder, minnesadresser). Base64 är mer kompakt; Hex är mer mänskligt inspicerbart.
Introduction
Base64 och Hex (hexadecimal) är båda binärt-till-text-kodningsscheman. Base64 kodar 3 bytes till 4 ASCII-tecken (33% overhead). Hex kodar 1 byte till 2 ASCII-tecken (100% overhead). Båda används för att representera binär data i text-only-kontexter, men de skiljer sig avsevärt i effektivitet och läsbarhet.
Step by Step
-
Compare encoding efficiency
Base64: 3 bytes → 4 characters = 33% overhead. Hex: 1 byte → 2 characters = 100% overhead. For 1 KB of data, Base64 produces ~1.33 KB; Hex produces 2 KB. Base64 is 50% smaller than Hex for the same binary data.
-
Compare readability
Hex uses 16 characters (0-9, A-F), each representing 4 bits. You can easily read byte values. Base64 uses 64 characters (A-Z, a-z, 0-9, +, /), representing 6 bits each. Base64 output is harder to inspect manually because bytes are split across character boundaries.
-
Compare use cases
Base64: email attachments (MIME), data URLs, JWT payloads, API binary data transfer. Hex: hash digests (MD5, SHA-256), color codes (#FF5733), memory addresses, MAC addresses, binary debugging.
-
Compare character set and safety
Base64 uses + and / which are not URL-safe. Hex uses only 0-9 and A-F/a-f — always URL-safe and filename-safe. Hex is safe in any context; Base64 may need URL-safe variant.
-
Decide based on your use case
Email, data URLs, JWT, API payloads: Base64 (size matters). Hash display, debugging, color codes, memory addresses: Hex (readability matters).
Examples
Same data in Base64 and Hex
Input: Input: 'Hello' (5 bytes)
Base64: SGVsbG8= (8 chars)
Hex: 48656c6c6f (10 chars)
Output: Base64 is 20% smaller. Hex is easier to inspect (each pair = 1 byte).
Common Problems
- Base64 is not URL-safe: standard Base64 uses + and / which break in URLs and filenames — use URL-safe Base64 (- and _) for web contexts.
- Hex has 100% size overhead: Hex doubles the data size (1 byte → 2 chars), which is wasteful for large binary transfers — use Base64 when size matters.
- Base64 padding ambiguity: Base64 appends = padding characters which some systems strip or reject — handle padding consistently on both encode and decode sides.
- Hex case inconsistency: some systems use uppercase (A-F), others lowercase (a-f) — normalize case before comparison to avoid false mismatches.
Tips
- Use Base64 for email attachments, data URLs, and API payloads where size matters — it has only 33% overhead vs Hex's 100%.
- Use Hex for hash digests, color codes, MAC addresses, and debugging where human readability matters — each byte is a visible 2-character pair.
- Use URL-safe Base64 (replace + with -, / with _, strip =) when encoding binary data in URLs, query parameters, or filenames.
- When converting between Base64 and Hex, always decode to raw binary first, then re-encode — never try to convert character-by-character.