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.