64base64desk

Base64 encodes bytes, not letters.

A visible character can occupy several UTF-8 bytes. The letter é becomes two bytes; many emoji need four or more. A correct text conversion first creates UTF-8 bytes, then encodes those bytes as Base64.

A quick diagnostic

UTF-8 text é becomes w6k=. If an API uses a different text encoding, decoding its bytes as UTF-8 may fail or produce different text. Confirm the API’s charset instead of replacing unreadable characters.

Browser code

JavaScript’s btoa() accepts a binary string, not arbitrary Unicode text. A robust implementation uses TextEncoder first. Decoding reverses Base64 to bytes and uses a UTF-8 TextDecoder.

Base64 Desk rejects invalid UTF-8 instead of silently inserting replacement characters. A valid Base64 value can contain an image or compressed data, which this text-focused tool will not render as a file.

Reference: MDN on btoa and Unicode. Try a conversion.