Convert text between URL-encoded, URL-decoded, Base64-encoded, and Base64-decoded forms. Pick a mode at the top, type or paste into the input box on the left, and the output appears on the right. Unicode characters and emoji are preserved.
Type or paste any text. Special characters are converted to %XX escapes.
Encoded result appears below.
It converts text between four forms: URL-encoded (percent escapes), URL-decoded, Base64-encoded, and Base64-decoded. The conversion uses the browser's built-in encoders for each format.
No. The page is served from a host, but the encoding and decoding both run in the browser. Nothing typed into the input box is uploaded or logged.
URL encoding escapes individual characters that are not safe in URLs by replacing them with percent-hex sequences (for example, a space becomes %20). Base64 encodes the whole string as a sequence of A–Z, a–z, 0–9, + and / characters, using a fixed mapping defined by RFC 4648. URL encoding stays mostly readable; Base64 produces a continuous block of letters and digits.
Yes. URL encoding uses UTF-8 byte sequences for any non-ASCII character. Base64 encoding first converts the text to UTF-8 bytes and then encodes the bytes, so emoji and non-Latin scripts round-trip without loss.
hello+world decode to hello+world and not hello world?The URL decoder follows the URI component rule (RFC 3986), where + is a literal plus sign and a space is written as %20. The other convention, used in HTML form submissions and query strings (application/x-www-form-urlencoded), treats + as a space. If your input came from a form submission and you want the form-style result, replace + with a space before decoding.
Standard Base64 uses the characters + and /, which both have special meanings in URLs. URL-safe Base64 replaces them with - and _, and usually omits the trailing = padding. It is the form used inside JSON Web Tokens (JWT). Toggle the option on the Base64 encode or Base64 decode modes to switch between the two variants.
Common reasons: characters outside the Base64 alphabet (anything other than A–Z, a–z, 0–9, +, /, and = for standard Base64); wrong padding (such as a single = where two are expected, or extra trailing characters); or a mix of URL-safe and standard characters in the same string. The decoder is lenient about missing trailing = padding (this is allowed by RFC 4648 §3.2 and is the normal form for URL-safe Base64). The error message shows what the parser saw.
There is no fixed limit set by this tool. Practical limits come from browser memory. Inputs of a few megabytes work quickly on a modern device. Very long inputs slow down the live update because the result is recomputed on every keystroke.
URL encoding and Base64 encoding are reversible: encoding then decoding returns the exact original text, including Unicode characters and whitespace. The only normalisation happens when decoding a URL string where the input was already partly encoded — in that case decoding turns the percent escapes back into their original characters, which is the intended behaviour.