Base100 Encoder / Decoder
Encode UTF-8 text as the original Base100 emoji mapping or strictly decode Base100 symbols back to valid UTF-8 text.
Privacy: your files never leave your device. All processing happens locally in your browser.
How to use
- 1.Choose Text to Base100, enter UTF-8 text, and run the encoder to map each byte to one Base100 symbol.
- 2.Copy the exact symbol stream without adding spaces, line breaks, or variation selectors.
- 3.Choose Base100 to text, paste a valid unmodified stream, and decode it; invalid symbols or invalid UTF-8 bytes are rejected.
About Base100 Encoder / Decoder
Base100 Encoder and Decoder converts text bytes into a distinctive stream of emoji-range Unicode symbols and reverses a valid stream back into text. Choose an operation, enter text or Base100 symbols, run the conversion, and copy the result. The implementation uses the mapping introduced by Adam Niederer's Base100 project. All encoding and decoding happens in the browser without uploading the input.
Base100 operates on bytes, not words, meanings, or visual emoji names. Encoding first converts the input string to UTF-8. Each resulting byte from 0 through 255 maps to exactly one Unicode code point by adding the byte value to U+1F3F7. Byte zero becomes U+1F3F7, byte one becomes U+1F3F8, and byte 255 becomes U+1F4F6. There is no padding, delimiter, checksum, compression, length marker, or semantic translation.
Because the mapping is one symbol per byte, ordinary ASCII text produces one Base100 symbol per character. Non-ASCII text usually produces more symbols because one Unicode character can require several UTF-8 bytes. For example, accented letters, CJK characters, and emoji in the original input expand according to their UTF-8 representation. The output symbol count therefore measures encoded bytes, not user-perceived characters, grapheme clusters, words, or original JavaScript string length.
Decoding reads the input by Unicode code point rather than UTF-16 code unit. Every symbol must fall inside the exact inclusive range from U+1F3F7 through U+1F4F6. Its byte value is recovered by subtracting U+1F3F7. After all bytes are collected, a strict UTF-8 decoder reconstructs the text. If the bytes are not a valid UTF-8 sequence, the tool reports an error instead of silently inserting replacement characters and pretending the result is exact.
The decoder intentionally rejects spaces, line breaks, punctuation, variation selectors, and emoji outside the Base100 range. Those characters are not framing syntax in the original format. Some chat apps, editors, keyboards, or normalization pipelines can insert a variation selector or otherwise transform copied symbols. A stream that looks similar on screen can therefore be bytewise different and fail strict decoding. Preserve the exact code points when interoperability matters.
Base100 is an encoding, not encryption, hashing, signing, authentication, compression, steganography, or human-language emoji translation. Anyone with the mapping can recover the text. A changed symbol changes a byte, but there is no built-in checksum to tell whether a syntactically valid change was accidental. Do not use Base100 to protect passwords, personal data, private keys, tokens, or confidential messages. Use reviewed encryption and authenticated formats for secrecy and tamper detection.
Emoji rendering varies across operating systems, fonts, browsers, and messaging platforms. Some mapped code points can appear as colorful images, monochrome glyphs, boxes, or unexpected pictographs. Rendering does not alter the mathematical mapping inside a conforming string, but copying through a system that substitutes, strips, or decorates characters can. If the destination requires ASCII-only transport, Base64, base64url, Base32, Base58, or hexadecimal is usually more compatible.
The page limits either direction to 500,000 bytes or symbols so accidental huge pastes do not freeze the browser. Empty input is rejected, output is never silently truncated, and decoding uses fatal UTF-8 validation. Independent fixtures lock the lower and upper code points plus representative byte offsets. The original Rust project is the format source, an independent Go implementation documents the equivalent byte formula, and the WHATWG Encoding Standard defines the browser UTF-8 behavior used at the text boundary.
Methodology & sources
Encoding converts text to UTF-8 and maps every byte b to code point U+1F3F7+b. Decoding enforces the 256-code-point range, subtracts the offset, and uses fatal UTF-8 decoding without normalization or ignored separators.
Frequently asked questions
Related tools
- Base64 Encode / DecodeEncode or decode Base64 instantly with full UTF-8 support β emoji and accents work, all in your browser.
- Base32 Encode / DecodeEncode UTF-8 text to canonical RFC 4648 Base32 or decode padded and unpadded Base32 back to strict UTF-8.
- UTF-8 Encoder / DecoderConvert Unicode text to well-formed UTF-8 bytes or strictly decode byte sequences without silent replacement.
- ASCII ConverterConvert standard 7-bit ASCII text to decimal codes or decode decimal codes back to exact ASCII characters locally.
- AES Encryption OnlineEncrypt text into a portable authenticated AES-256-GCM JSON package or decrypt a package with its password entirely in your browser.
- Base58 Encode / DecodeEncode UTF-8 text with the Bitcoin Base58 alphabet or decode raw Base58 into exact hexadecimal bytes and a UTF-8 interpretation.