Encoder / Decoder
Encode and decode text with URL, HTML, Base64, Unicode, and other transforms.
Input
Output
⚠️
Base64
A–Z a–z 0–9 + /The 64 characters used in standard Base64=Padding character — added to make length a multiple of 4- _URL-safe variant replaces + and / to avoid URL conflicts3 bytes → 4 charsEvery 3 input bytes become 4 Base64 characters (~33% size increase)Examples — click to load
Hello, World!Basic text → Base64{"user":"alice"}JSON payload (common in JWTs)SGVsbG8sIFdvcmxkIQ==Decode → "Hello, World!"Base32 (RFC 4648)
A–Z 2–7The 32-character alphabet — case-insensitive, no 0/1/8/9=Padding to an 8-character block boundary5 bits / charEncodes 5 bytes → 8 characters (less dense than Base64)Examples — click to load
HelloText → Base32JBSWY3DPDecode → "Hello"URL Encoding
%XXPercent-encoded byte — XX is the hex value of the byteA–Z a–z 0–9 - _ . ~Unreserved characters — never encodedencodeURIComponentEncodes everything except unreserved chars — use for query param valuesencodeURILeaves reserved chars intact — use for full URLs+ vs %20Both represent a space — + is only valid in query strings (form encoding): / ? # [ ] @ ! $ & ' ( ) * + , ; =Reserved characters — encoded when used as data (not structure)Examples — click to load
hello world & moreSpaces and & encodedhttps://example.com/search?q=…Full URL as a query param valuecaf%C3%A9%20au%20laitDecode → "café au lait"HTML Entities
&& — must be escaped to avoid starting an entity<< — must be escaped to avoid opening a tag>> — should be escaped inside attribute values and CDATA"" — must be escaped inside double-quoted attributes'' — must be escaped inside single-quoted attributesExamples — click to load
<script>alert("XSS")</script>Escape for safe HTML outputPrice: £10 & taxAmpersand in text content<b>Hello & World</b>Decode entities back to charactersUnicode Escapes
\uXXXX4-hex-digit escape — covers the Basic Multilingual Plane (U+0000 to U+FFFF)\u{XXXXX}Variable-length ES6 escape — covers all Unicode code points including emojiASCII passthroughCharacters below U+0080 are left as-is — only non-ASCII gets escapedJSON stringsJSON uses \uXXXX to safely embed any character in a string literalExamples — click to load
café résuméAccented characters → \uXXXXHello 你好 мирMixed scripts\u0048\u0065\u006C\u006C\u006FDecode → "Hello"Hex
00–ffEach byte becomes two hex digits (lowercase on encode)UTF-8Text is encoded as UTF-8 first, so non-ASCII spans multiple bytes0x · spacesDecode is lenient — 0x prefixes, spaces and commas are strippedeven lengthDecode needs whole byte pairs — an odd digit count is an errorExamples — click to load
HelloText → hex bytes48 65 6c 6c 6fDecode (spaces ignored) → "Hello"Binary
8 bits / byteEach UTF-8 byte becomes an 8-digit group, space-separated0 1Only zeros and ones — any other character is rejected on decodemultiple of 8Decode groups bits into bytes, so the total must divide by 8Examples — click to load
HiText → binary01001000 01101001Decode → "Hi"ROT13
A↔N · a↔nRotates each letter 13 places — letters only, digits/punctuation untouchedself-inverseApplying ROT13 twice returns the original — encode and decode are identicalnot encryptionA classic obfuscation, not security — trivially reversibleExamples — click to load
Hello, World!Letters rotate, punctuation staysUryyb, Jbeyq!Decode → "Hello, World!"