Base64 represents arbitrary bytes using only 64 printable ASCII characters. It exists because plenty of systems were designed to carry text and will corrupt raw binary: email bodies, JSON string fields, HTTP headers, data URIs, YAML values, environment variables.

You will most often meet it when reading an HTTP Basic auth header, inspecting the payload segment of a token, embedding a small image directly in CSS as a data URI, or pulling a certificate or key out of a Kubernetes secret. In each case what you have is a run of letters and digits that you need to turn back into something readable.

This tool handles the full Unicode range in both directions. That matters more than it sounds: the browser's own btoa function throws on any character above U+00FF, so naive implementations break the moment your text contains an emoji, a curly quote, or any non-Latin script. Text here is converted to UTF-8 bytes before encoding and decoded back from UTF-8 afterwards, so round-tripping is lossless.

There is also a URL-safe mode, which swaps the two characters that cause trouble in a URL or filename. Standard Base64 uses plus and slash, which get mangled by URL encoding; the URL-safe alphabet uses minus and underscore instead and usually drops the trailing padding. JWTs and many API tokens use this variant, so if a normal decode gives you nothing, try it.