Encoding Suite: Base64, URL, HTML Encode
Encoding Suite encodes and decodes Base64, URL, HTML entities, binary, hex, Morse code, ROT13, and 12 more formats.
What Is Encoding Suite?
Encoding Suite is a free, browser-based text encoding and decoding tool that supports 17 formats in a single interface: Base64, URL encoding, HTML entities, binary, hexadecimal, Morse code, ROT13, Unicode escape sequences, XOR cipher, Caesar cipher, Vigenère cipher, Atbash cipher, Punycode, Quoted-Printable, UUencode, compression (GZip/Deflate/LZ-String), and hex dump. It solves the constant developer friction of switching between separate tools every time you need to encode a query string, decode a Base64 token, or check what an HTML-encoded payload actually contains. All processing is real-time and entirely client-side — no data is sent to a server.
Key Features
- 17 encoding formats accessible through labeled tabs, each with dedicated encode/decode modes.
- Real-time conversion: output updates as you type, with no submit button required for the main encoding tabs.
- Swap button: a single click exchanges the input and output, automatically switching encode/decode mode. This makes round-trip verification instant.
- Cipher support: XOR (key-based, its own inverse), Caesar (shift 1–25), Vigenère (keyword), and Atbash (its own inverse) are built in alongside modern encoding formats.
- Compression tab: compress and decompress text with GZip, Deflate, LZ-String UTF-16, or LZ-String Base64. GZip and Deflate output can be rendered as Base64 or hex, and the tool shows original size, result size, and percentage reduction.
- Hex dump tab: generate a
xxd-style hex dump from typed text or an uploaded file, with configurable column width (8, 16, or 32 bytes per row). - Batch mode: process a list of strings one per line through any standard encoding tab, with a progress display and "Copy All Results" export.
How to Use Encoding Suite
Step 1: Select a format tab
Open Encoding Suite. Seventeen tabs run across the top of the tool: Base64, URL, HTML, Binary, Hex, Morse, ROT13, Unicode, XOR, Caesar, Vigenère, Atbash, Punycode, Quoted-Print., UUencode, Compression, and Hex Dump. Click the tab for the format you need.
Step 2: Set encode or decode mode
A toggle with an arrow icon sits above the input area. The active mode is highlighted in the primary color. Click the arrow to swap modes and automatically exchange the current input and output — useful for confirming that decoding the encoded result returns the original string.
Step 3: Enter your text
Type or paste into the left textarea (labeled "Input" in encode mode, "Encoded" in decode mode). Output appears instantly in the right textarea. For cipher formats requiring a key (XOR, Vigenère), a "Cipher Key" input appears above the text areas. For Caesar, a numeric shift field (1–25, defaulting to 3) appears instead.
Example — encoding a URL parameter:
Tab: URL | Mode: Encode
Input: https://example.com/search?q=hello world&lang=en
Output: https%3A%2F%2Fexample.com%2Fsearch%3Fq%3Dhello%20world%26lang%3Den
Example — decoding a Base64 JWT payload:
Tab: Base64 | Mode: Decode
Input: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
Output: {"alg":"HS256","typ":"JWT"}
Step 4: Copy the result
Click the Copy button at the top right of the output panel to copy the result to clipboard. The tool also logs each conversion to the history panel (supporter feature) when you copy.
Step 5: Use Compression or Hex Dump for advanced tasks
The Compression tab has a distinct layout. Select your algorithm (GZip, Deflate, LZ-String UTF-16, LZ-String Base64), choose compress or decompress mode, paste your input, and click the Compress/Decompress button. For GZip and Deflate compression, select Base64 or Hex as the output format. After compressing, the tool displays the original byte count, result byte count, and the percentage size reduction.
For Hex Dump, enter text in the textarea or upload a file (the file selector shows the filename and byte count after selection). Choose 8, 16, or 32 bytes per row, then click Generate Dump. Output follows xxd format: an 8-character hex offset, space-separated hex bytes, and a pipe-delimited ASCII representation with non-printable characters replaced by ..
Practical Examples
Sanitizing HTML output in a template
You are building an email template and need to escape user-supplied content. Paste the raw string <script>alert("xss")</script> into the HTML tab in encode mode. Output: <script>alert("xss")</script>. The encoder handles &, <, >, ", and ' characters.
Decoding a Quoted-Printable email body
Many email clients encode non-ASCII characters using Quoted-Printable (=C3=A9 for é). Paste the raw QP-encoded body, switch to the Quoted-Print. tab in decode mode, and get the readable text back immediately. The decoder handles both soft line breaks (=\n) and =XX escape sequences.
Inspecting a binary file's raw bytes
Upload a small binary file to the Hex Dump tab and generate a dump with 16 bytes per row. The output shows the file's byte offsets, hex values, and ASCII representation side by side — the same view produced by xxd in a terminal — without needing any local tooling.
Tips and Best Practices
HTML decoding is not exhaustive. The HTML decoder handles ten named and numeric entities: &, <, >, ", ', ', ', /, /, and . Other named entities (like © or é) are passed through unchanged. If you need full HTML entity decoding, render the content in a <div> element instead.
ROT13 and Atbash are their own inverses. Applying either transformation twice returns the original text. There is no separate decode mode for them — the encode/decode toggle has no effect.
XOR cipher output may contain non-printable characters. XOR operates at the byte level, so the output of XOR encoding is often binary-like. If you need a printable result, run the XOR output through Base64 encode as a second step.
Binary and Hex encoding use space-separated bytes. The Binary tab produces one 8-bit binary group per character, separated by spaces (01001000 01101001). The Hex tab does the same with two-character hex pairs (48 69). When decoding, the tool splits on whitespace, so extra spaces are tolerated.
Punycode decoding uses the browser's URL parser. The tool constructs a URL object from the Punycode input to decode it. Domain labels without the xn-- prefix pass through unchanged.
Common Issues and Troubleshooting
"Invalid Base64 input" error: Base64 strings must use standard alphabet characters (A-Z, a-z, 0-9, +, /) with optional = padding. URL-safe Base64 (which uses - and _ instead of + and /) will cause this error. Replace - with + and _ with / before decoding.
"Invalid URL-encoded input" error: The URL decode function calls decodeURIComponent, which throws on malformed percent-escape sequences (like a lone % or %GG). Verify the input is valid percent-encoded text.
"Invalid UUencoded data: missing begin/end markers" error: UUencoded data must begin with a begin 644 filename line and end with a backtick line followed by end. Partial payloads without these markers will fail.
Compression/decompression failed: For GZip/Deflate decompression, the tool auto-detects Base64 vs. hex input — if the input contains spaces and matches the pattern [0-9a-fA-F ]+, it is treated as hex; otherwise it is treated as Base64. Ensure the format of your input matches what was used during compression.
Output is blank for XOR or Vigenère: Both require a non-empty cipher key. The output field stays empty until you enter a key.
Privacy and Security
Encoding Suite performs all conversions in your browser. Input text is never transmitted to any server. The compression tab dynamically imports fflate and lz-string as JavaScript modules loaded once from the page bundle — no external API calls are made at conversion time. Cipher keys for XOR and Vigenère exist only in the browser's memory for the duration of the session. The tool functions fully offline once loaded.
Frequently Asked Questions
Is Encoding Suite free? Yes. All 17 encoding formats are free with no usage limit. Supporter features (presets, history, batch mode) require a Glyph Widgets supporter subscription.
Does it work offline? Yes. After the initial page load — which fetches the compression libraries — all conversions run entirely in browser memory with no network requests.
Is my data safe? All text processing is client-side. Nothing is sent to a server. This makes Encoding Suite appropriate for decoding internal tokens, config values, and other sensitive strings.
What is the difference between Base64 encode and URL encode? Base64 converts binary data to a string of 64 printable ASCII characters using the standard alphabet, producing output roughly 33% larger than the input. URL encoding (percent-encoding) converts characters that are reserved or unsafe in URLs to %XX hexadecimal sequences. Use Base64 for encoding binary content (images, tokens, payloads); use URL encoding for query string values.
Can the tool handle Unicode text in Base64? Yes. The Base64 encoder uses encodeURIComponent followed by unescape to convert the UTF-8 byte sequence to a string before passing it to btoa. This handles multi-byte characters including emoji and CJK text. The decoder reverses this process.
What does the swap button do? Clicking the arrow button between the Encode and Decode labels swaps the current output into the input field and switches the mode. This lets you immediately verify that encoding and then decoding a value is lossless.
Which cipher formats are suitable for security purposes? None of the classical ciphers (Caesar, Vigenère, Atbash, ROT13) provide meaningful cryptographic security. XOR can be used as a one-time pad only if the key is truly random and at least as long as the plaintext. For actual encryption, use the AES Encryption tool instead.
How does the compression ratio indicator work? For GZip and Deflate compression, the tool compares the original UTF-8 byte count of the input against the byte count of the compressed binary result. The percentage shown is the reduction: (1 - compressedBytes / originalBytes) × 100. LZ-String variants compare the original byte count against the encoded string length, which may show less reduction because the output is a string, not raw bytes.
Can I batch-process through the Compression or Hex Dump tabs? No. Batch mode is available for all standard encoding tabs (Base64 through UUencode) but not for Compression or Hex Dump, which have distinct multi-field interfaces.
Does binary encoding support Unicode characters above U+00FF? The binary encoder maps each character to an 8-bit group using charCodeAt, which means characters above code point 255 will produce values that exceed 8 bits. For accurate binary representation of full Unicode text, use the Unicode escape tab instead, or inspect the UTF-8 byte encoding in the Unicode Code Point Inspector.
Related Tools
- Base64 Encoder/Decoder — Dedicated tool for Base64 with additional options including URL-safe alphabet and file-to-Base64 conversion.
- Hash Suite — Generate MD5, SHA-256, BLAKE3, and HMAC digests from text or files.
- JWT Decoder — Decode and inspect JSON Web Tokens, which are Base64url-encoded.
Try Encoding Suite now: Encoding Suite