Paste or type text in the box. The Decoded and Encoded tabs show the result as you type, and the box keeps what you entered.
Copy copies the result, and Use as input puts it in the box, to decode or encode it again.
Each format has its own example: View URL example shows a URL encoded twice, View Base64 example some JSON, View HTML example a link with named, decimal and hex references, and View JSON example JSON escaped into a log line.
URL
+ is a space: decoding turns + into a space, and encoding writes spaces as +, as in query strings and forms. Off, + stays a plus and spaces become %20.
Whole URL encodes only what isn't allowed in a URL and keeps : / ? # & = as they are. Off, the text is encoded as one value: everything but letters, digits and - _ . ! ~ * ' ( ).
Encode ! ' ( ) * encodes those too (strict RFC 3986), for values that go into HTML or JavaScript.
Codes that aren't valid UTF-8 (like %E9 from older pages) and % signs without two hex digits are left as they are.
Base64
Text is read as UTF-8, so accents and emoji come out right.
Decoding reads standard and URL-safe Base64 (- and _), with or without = padding, and data: URIs, and skips spaces and line breaks.
URL-safe encodes with - and _ and without padding, for URLs and file names.
Choose file, or drop a file on the box, to get the file's Base64. As data: URI gives a data: URI for HTML or CSS.
When the decoded bytes are a file, like an image or a PDF, Download saves it and images are previewed. Bytes that aren't text are shown as hex.
HTML
Encoding turns & < > " ' into & < > " '. With Encode non-ASCII too, letters like é become é.
Decoding reads named (é), decimal (é) and hex (é) references.
JSON
Decoding turns backslash escapes like \", \n, \\, \u00e9, \u{1F680} and \x41 back into characters, and takes the quotes off a whole quoted string: handy for JSON escaped into a log line or another string.
Encoding escapes text for a JSON or JavaScript string. With quotes adds the quotes around it, and Encode non-ASCII too writes letters like é as \u00e9.
When the decoded text is JSON, in any format, Open in JSON Path Viewer opens it there.
Values encoded more than once
A value encoded twice (like %253A) decodes to another encoded value; the result says how many layers are left. Decode all layers keeps decoding until nothing changes.
When the decoded text is a URL with parameters, Open in URL Parameter Highlighter shows them there.
Sharing
Copy share link copies a link to this page with the text, format and tab in it, after a #. Whoever opens it sees the same result. Files aren't included, and a very long text makes a link that chat apps may cut off.
Encoder / Decoder
Encode and decode text for URLs, Base64, HTML and JSON. The result updates as you type, and what you entered stays as it is.