Plain btoa('✓') throws in browsers because it only accepts Latin-1; encode to UTF-8 bytes first as above.
Questions
Is Base64 encryption?
No. Base64 is an encoding — anyone can decode it instantly, as this page shows. It exists to carry binary data through channels that only handle text (email, JSON, URLs, HTML). Never use it to hide secrets.
What is URL-safe Base64?
A variant (RFC 4648 §5, "base64url") that uses - and _ instead of + and / and usually drops the = padding, so the result can sit in a URL or filename without escaping. JWTs use it.
Why does decoding give garbled characters?
Either the data is binary (an image, a zip) rather than text, or it was encoded from text in a different character set. This tool encodes and decodes text as UTF-8, which handles emoji and every language.
Why is Base64 about 33% bigger?
Every 3 bytes (24 bits) become 4 characters of 6 bits each, so output is 4/3 the size of the input, plus up to two = padding characters.
Does it work with files and images?
Yes. Choose a file to get its Base64, optionally as a data: URI you can paste into CSS or an <img> tag. Paste Base64 in decode mode and use Download to save the original bytes. Files never leave your browser.