Developer / Local utility
Base64 decoder
Decode standard Base64 into UTF-8 text without sending it away.
About this Base64 decoder
Paste any Base64 or Base64URL encoded string into the input area. The decoder validates character sets and padding (=), transforms binary 6-bit octets into 8-bit byte streams, and parses the result through a strict UTF-8 TextDecoder, outputting clean text without transmitting data.
This developer utility converts Base64 encoded strings into readable UTF-8 text while preventing the character corruption common in naive implementations. Web browser atob() functions fail when encountering UTF-8 multibyte characters or URL-safe character sets (- and _). Our decoder normalizes URL-safe variants, strips whitespace and line breaks, checks padding syntax, and flags invalid byte sequences rather than replacing them with mojibake characters.
Step by step
- 1Paste Base64 encoded payloadPaste your Base64 or Base64URL string into the source area. Multiline chunks and trailing whitespace are automatically cleaned.
- 2Validate syntax and paddingThe decoder checks for valid A-Z, a-z, 0-9, +, /, -, and _ characters, ensuring correct four-character block alignment and padding.
- 3Decode byte stream to UTF-8The 6-bit quintets are reconstructed into 8-bit bytes and passed through a fatal UTF-8 decoder to verify unicode correctness.
- 4Copy decoded text or inspect byte statsCopy the decoded text output with one click, or review decoded byte lengths, input character counts, and compression ratios.
Standard Base64 versus URL-safe Base64URL
Standard Base64 uses the plus sign (+) and forward slash (/) characters, which are reserved in URLs and query strings. Base64URL replaces them with hyphen (-) and underscore (_), often omitting trailing equals padding. Our decoder automatically recognizes and normalizes Base64URL payloads before parsing.
Strict UTF-8 validation versus mojibake replacement
Standard browser atob() treats decoded bytes as Latin-1 (ISO-8859-1), corrupting multi-byte UTF-8 sequences such as emojis, accented characters, and non-Latin scripts. Our engine passes decoded byte arrays through TextDecoder with fatal: true, ensuring genuine Unicode integrity and reporting invalid byte sequences immediately.
Security analysis of Base64 encoded payloads
Base64 is an encoding mechanism, not encryption. Encoded strings can be decoded by anyone without a secret key. In security investigations, API headers, JWT payloads, and authorization tokens are frequently inspected. Because this tool runs strictly client-side with connect-src none, sensitive credentials and authorization tokens remain strictly within your device.
Detecting data corruption and padding errors
Base64 strings must have lengths that are multiples of four. When input strings are truncated in transmission or improperly concatenated, the final block fails to decode. Our decoder inspects terminal characters, validates that padding bits are all zeros as required by RFC 4648, and provides clear diagnostic messages if an unexpected end-of-stream occurs.
Zero upload security guarantee
Every response from this site is served with a Content Security Policy whose connect-src directive is set to none. That is not a promise in marketing copy; it is an instruction to your browser, and the browser is the one enforcing it. While this page is open it cannot open a connection to anywhere — not to this site, not to anyone else — so there is no path by which your document could be uploaded, not by a bug, not by a future change, not by a script that should not be here. e2e/egress-proof.spec.ts asserts the served header and then tries to send data out by every route a page has and requires each attempt to be refused, and it runs on every build.
The second half of the guarantee is that the code has nowhere to send anything from. lib/tools/local-source-policy.test.ts reads every source file under lib/tools, workers, components and app on every test run and fails the build if any of them contains fetch, XMLHttpRequest, WebSocket, EventSource, sendBeacon or a peer connection, or even a remote address written down in a comment. A tool here cannot acquire an upload by accident, because the file that would have to contain one cannot be committed.
Client-side processing limits
Computations run directly on your own device using WebAssembly, Web Workers, and modern browser APIs including Web Crypto and TextDecoder. There are no server queues, no background telemetry, and no temporary cloud files created. Large operations remain responsive by offloading heavy parsing and conversion tasks to dedicated worker threads, ensuring the browser UI never freezes during intensive document and data processing tasks.
Questions people ask
- Does this decoder support URL-safe Base64URL strings?
- Yes. Both standard RFC 4648 Base64 (+ and /) and URL-safe Base64URL (- and _) are accepted, with or without trailing = padding characters.
- Can this decode binary files such as images or executables?
- This tool is optimized for decoding UTF-8 text. If a decoded binary stream contains non-UTF8 sequences, an alert notes that the payload contains raw binary data.
- What is the maximum string length supported?
- The decoder supports payloads up to 2,000,000 characters in memory without degrading browser interface responsiveness.
- Is sensitive decoded data (such as API keys or JWTs) safe here?
- Yes. The page is served with Content Security Policy connect-src none. Your payloads never leave your browser tab.
- How are newline characters within the Base64 input treated?
- Standard RFC 2045 MIME Base64 wraps lines every 76 characters. Our decoder strips line breaks, carriage returns, and spaces prior to decoding.