Base64 Encode & Decode Online
Private by design — runs entirely in your browser
Encode any text or binary data to Base64, or decode a Base64 string back to its original form. Toova handles UTF-8 correctly, supports the URL-safe variant, and runs entirely in your browser — no upload, no signup, no logging.
Standard and URL-safe Base64
Plain Base64 uses + and / characters, which break when you drop the string into a URL or a filename. URL-safe Base64 substitutes - and _ instead. Toova exposes both as a single toggle, so you can pick the variant that fits — JWT and OAuth use URL-safe, while most file encoding stays with the classic alphabet. Padding with = is handled automatically.
UTF-8 done right
Naive Base64 tools mangle non-ASCII characters because they assume one byte per character. Toova encodes the input as UTF-8 first, so emoji, accented letters, CJK characters, and Arabic all survive a round trip without corruption. Decode a Base64 string that contains UTF-8 text and you get the original characters back, exactly as they were.
Local-only, zero network calls
Every encode and decode happens inside your browser. No upload, no third-party API, no logging of the input. You can verify it yourself by opening the Network tab in DevTools while you use the tool. That makes Toova safe for encoding secrets, tokens, certificates, or any sensitive payload that should not leave your machine.
Frequently Asked Questions
- What is the difference between Base64 and URL-safe Base64?
- Standard Base64 uses + and / which collide with URL syntax. URL-safe Base64 replaces them with - and _ so the output can be dropped into a query string or a filename without escaping. JWTs and many OAuth flows use the URL-safe variant.
- Does it handle UTF-8 characters?
- Yes. The tool encodes input as UTF-8 before Base64 conversion, so emoji, accented letters, and non-Latin scripts all round-trip cleanly. Decoding a Base64 string that contains UTF-8 produces the original characters.
- Can I encode files?
- Yes. Drop a file onto the input area and the tool reads it as binary, producing a Base64 string. That is useful when embedding small images as data URIs or sending binary content through systems that only accept text.
- Is my input sent anywhere?
- No. Everything runs locally in your browser. The Network tab in DevTools will stay empty during encoding and decoding.
- Why does my Base64 string end in equals signs?
- Those are padding characters. Base64 outputs are always multiples of four characters long, and = is used to pad when the input length is not a multiple of three bytes. URL-safe variants sometimes drop the padding entirely.