Base64 to Hex Converter is a free, no-sign-up tool that translates the same byte sequence between canonical RFC 4648 Base64 and lowercase hexadecimal entirely inside your browser, with no account creation, no installation, no API key, and no upload of the bytes you paste. You open the page, choose a direction, paste a value, and copy the exact result; nothing leaves the tab. Conversion is locked to eight RFC 4648 test vectors — the empty sequence plus the canonical f, fo, foo, foob, fooba, and foobar cases, alongside a sequence that exercises alphabet values 62 and 63 — so a successful round trip proves the underlying bytes genuinely match rather than merely resembling each other. The decoder also re-encodes the resulting bytes to reject nonzero pad bits, which stops the second non-canonical spelling of the same data from sneaking through. Input is capped at 500,000 decoded bytes to keep the page responsive; outside that bound the conversion simply stops without silently truncating what you already produced, and the copy button returns only the converted value, never labels or explanatory text.

No Sign Up, No Install: What That Means for Encoded Bytes
Encoded strings rarely arrive in isolation. They come attached to logs, signed payloads, JWT segments, cache keys, protocol fixtures, hash digests, and binary identifiers, and they often carry session tokens, internal hostnames, test fixtures for production, or values that should never touch a third-party database. A tool that markets itself as "free" but quietly requires an email address, a phone number, or a Google login is not really free for that workload — every paste becomes a question of whether the chosen vendor will store the bytes, log them, or feed them into an analytics pipeline.
The Base64 to Hex Converter avoids that question by design. The page is a single static document, parsing and conversion run over numeric byte arrays in JavaScript rather than through any text-coercion shortcut, and the network tab shows zero outbound traffic for the input. There is no signup form, no captcha, no rate-limited anonymous tier, no email verification, and nothing to install as a browser extension. The 500,000-byte ceiling exists only to bound browser memory; it is not a paywall. That posture is what makes the tool usable for a CTF organiser copying signed tokens, a backend engineer reading a third-party API field, or a security analyst inspecting a hash without writing a one-off script.
Convert Base64 to Hex in Your Browser
The actual workflow is short and never leaves the page you opened. Follow these steps in order:
- Open the Base64 to Hex Converter in any modern desktop or mobile browser; the page loads as a single document and is ready the moment it is visible, with no install step and no sign-up form blocking the input area.
- Choose the direction that matches your source. Select "Base64 to hexadecimal" when your input is canonical padded RFC 4648 Base64, or "hexadecimal to Base64" when your input is a continuous stream of two-digit byte values.
- Paste the source string into the input area. For Base64, that means canonical padded text with no whitespace, no line wrapping, characters only from the standard alphabet (A–Z, a–z, 0–9, +, /), and the equals sign appearing only at the end as required padding. For hexadecimal, that means exactly two digits per byte, no 0x prefix, no separators, no underscores, no embedded whitespace, and an even total length.
- Run the conversion. The page checks expected byte length, validates every character against the chosen alphabet, and reports a specific error for malformed input without producing a partial result. Output is never silently truncated.
- Verify the output. Confirm the byte length matches what your protocol expects, confirm that leading zero bytes appear as 00 in hex, and only then copy the exact value to your clipboard using the dedicated copy button.
Input Rules the Strict Converter Enforces
Strict validation is what lets the page advertise "accurate to the byte" rather than "usually accurate." On the Base64 side, the input length must be a multiple of four, every character must come from the standard alphabet, required equals padding must be present, padding may appear only at the end, and whitespace is rejected rather than silently ignored. The decoder additionally re-encodes the resulting bytes and rejects any nonzero pad bits, which catches the second non-canonical spelling of the same data — the spelling that signed-data verifiers and exact-match cache keys must avoid.
On the hexadecimal side, the parser requires exactly two digits per byte, accepts either uppercase or lowercase input digits, and emits lowercase output for compact consistency. The value 0f means one byte (decimal 15), while f alone is an incomplete byte and is rejected, which is exactly the behaviour you want when reading protocol fields that include leading zeros such as 00 01 02 03. A trailing odd nibble, an embedded space, an 0x prefix, or an underscore between bytes is also refused so that byte boundaries cannot shift underneath you during a copy and paste.
| Direction | Accepted form | Commonly rejected form |
|---|---|---|
| Base64 → Hex | Length a multiple of 4; only A–Z, a–z, 0–9, +, /; required = only at end | Line wrapping, missing padding, base64url hyphen or underscore, embedded whitespace, alphabet errors |
| Hex → Base64 | Exactly two hex digits per byte; uppercase or lowercase digits; even total length | 0x prefix, colons or spaces between bytes, underscores, odd trailing nibble |
The table summarises the strictness contract documented in RFC 4648; every row reflects a rule the page applies to every conversion, not an aspirational feature.
Base64 and Hex Compared at the Byte Level
Both encodings represent the same byte sequence — neither is more "secure" or more "compact" in a semantic sense — but their practical properties differ. The table below compares the two representations exactly as RFC 4648 defines them, which is the basis for the converter's strict rules.
| Property | RFC 4648 Base64 | Base16 Hexadecimal |
|---|---|---|
| Output per input byte | About 1.33 characters on average (4 characters per 3 bytes) | Exactly 2 characters |
| Alphabet | A–Z, a–z, 0–9, +, / plus = padding | 0–9 and a–f (A–F accepted on input) |
| Padding | Required = to round the length up to a multiple of 4 | No padding; the input itself must already have an even digit count |
| Case sensitivity | Case-sensitive (A and a are different values) | Case-insensitive on input; output is lowercase |
| Byte boundaries | Computed across 3-byte groups; not visible in the text | Explicit every 2 digits |
| Overhead versus raw bytes | About 33% larger | Exactly 100% larger |
| Round trip with this converter | Yes, with required padding and zero pad bits | Yes, with lowercase canonical output |
To see those rules working on a single canonical vector, take the two-byte sequence fo — byte 0x66 followed by byte 0x6F. Reading the 16 bits as 01100110 01101111 and grouping them into 6-bit chunks gives 011001 (25 = Z), 100110 (38 = m), and 111100 with two zero pad bits (60 = 8). The two unused pad bits are zero, which is the only spelling the strict decoder accepts, so the canonical Base64 form is Zm8=. The hexadecimal form is simply 666f, with each byte taking its own two digits. A reference for both directions is collected in the Base64 to Hex Cheat Sheet: RFC 4648 Quick Reference.
Profiles the Strict Decoder Will Not Guess
Several related formats are deliberately not interchangeable, and the converter refuses to guess between them because guessing can conceal input mistakes. The standard RFC 4648 alphabet uses plus and slash and requires padding; base64url, which is what many web APIs and JWT libraries emit, replaces plus with hyphen and slash with underscore and often drops the equals signs. A string like Zm-8 looks almost right but belongs to a different profile and is rejected. If your source is base64url, convert it under its own profile first; the page does not silently swap the alphabet on your behalf.
The same logic applies to MIME-wrapped Base64, which allows line wrapping at 76 characters and may omit padding, and to command-line decoders that accept URL-safe variants. When a specification gives bytes in one representation and a downstream tool expects the other, the safest workflow is to confirm the profile, run the conversion here, and compare the resulting byte length and the first few bytes against the governing document rather than treating a successful conversion as semantic validation.
Limits and What the Page Will Not Do
The 500,000-byte cap is the only hard input bound; outside it the conversion simply refuses to start rather than truncating mid-stream. For larger payloads, the Base64 to Hex Bulk: Handle Large Inputs Locally guide explains the same constraints applied to bigger workloads. Beyond the size cap, the converter is deliberately narrow. It does not interpret the bytes as UTF-8, as JSON, as a number, as a certificate, as an image, or as a cryptographic key. It does not add MIME headers, data-URL prefixes, line wrapping, or checksum fields, and it does not attempt to recognise which application produced the input.
The page also makes no promise of secrecy. Base64 and hex are reversible encodings, not encryption, hashing, signing, compression, authentication, or access control — the output reveals exactly the same bytes as the input. Converting a credential, token, private key, or personal record through this tool does not protect it; treat the page like a magnifying glass, not a vault, and keep sensitive values out of untrusted clipboards, screenshots, shared browser sessions, and issue trackers. When the bytes matter for security, compare the final representation against the governing specification or official test vector rather than trusting a green "success" indicator on its own.