Base64 Encoder / Decoder
Encode text, files, or binary data to Base64 and decode Base64 back to text or download as binary. Free, runs in your browser.
Open toolHome › Tools › Developer Tools › URL Encoder / Decoder
Percent-encode URL components or decode %xx sequences back to plain text. Supports component encoding and full URL mode. Detects malformed sequences. Runs entirely in your browser.
URL encoding (also called percent encoding) converts characters that are not allowed in a URL into a safe form: each byte is replaced by a percent sign followed by two uppercase hex digits. A space becomes %20. A forward slash becomes %2F. An ampersand becomes %26. This encoding exists because URLs are restricted to a subset of ASCII — anything outside that set must be encoded before it can be transmitted in an HTTP request.
This tool handles both operations in the browser. Encode: paste any text and get the percent-encoded form. Decode: paste any percent-encoded string and get the plain-text form. Malformed sequences — %GG, %Z5, any pair where the two characters after % are not valid hex — are detected and flagged with their position in the input rather than silently failing or producing garbage output.
Component mode (the default) encodes a single URL component — a query-string parameter value, a path segment, or a fragment. It treats /, ?, =, &, #, @, and : as characters that must be encoded, because in the context of a parameter value these characters would break the URL structure. Equivalent to JavaScript's encodeURIComponent(). Use this when you're encoding something that will be embedded inside an existing URL.
Full URL mode encodes a complete URL while preserving its structure. It leaves /, ?, =, &, #, @, and : unencoded because they carry structural meaning in a full URL. It encodes non-ASCII characters and spaces. Equivalent to JavaScript's encodeURI(). Use this when you have a complete URL that contains international characters or spaces and needs to be made safe without breaking the URL's path, query, or fragment structure.
Double-encoding is a common bug: a string gets run through an encoder twice. The first pass turns % into %25, so a second pass turns %20 (encoded space) into %2520. You'll see %2520 in the URL where you expect %20. To detect double-encoding: paste the string into the Decode tab. If the result still contains percent sequences (%20, %2F, etc.), you've decoded one layer and there's another. A properly single-encoded URL decodes to plain text with no remaining percent sequences.
HTML forms submitted via POST use the application/x-www-form-urlencoded content type, which encodes spaces as + rather than %20. This is a different convention from RFC 3986 percent encoding. Modern REST APIs expect %20 for spaces in query strings; legacy form-processing backends may expect +. This tool outputs %20 for spaces, following RFC 3986. If you need +-encoded form data, use the browser's native form submission or a dedicated form-encoding library.
URL encoding (percent encoding per RFC 3986) converts characters that are not allowed in a URL into a safe representation. Each byte is replaced by a percent sign followed by two uppercase hex digits representing the byte value. Space (byte 0x20) becomes %20. A slash (byte 0x2F) becomes %2F. Every character outside the "unreserved" set (letters, digits, and - _ . ~) must be encoded when used as data in a URL component.
Component mode (equivalent to JavaScript's encodeURIComponent) encodes structural URL characters including /, ?, =, &, #, @, and : — because in a parameter value those characters would break URL parsing. Full URL mode (equivalent to encodeURI) leaves those structural characters unencoded so the URL's structure is preserved. Use Component mode for a single value you're embedding inside a URL; use Full URL mode for a complete URL that contains unsafe characters.
%20 is the percent-encoded form of a space (byte 0x20 in ASCII/UTF-8). The + sign also represents a space, but only in the application/x-www-form-urlencoded content type — the format used by HTML form POST requests. REST APIs and URL query strings should use %20. Some legacy PHP and Python form-processing backends expect +. When in doubt, use %20 — it's unambiguous in all contexts.
Double-encoding happens when a string is encoded twice. The first encoding turns % into %25. A second encoding then turns %20 into %2520 (because % became %25, and the 20 passed through unchanged). You'll see %2520 where you expected %20, or %252F where you expected %2F. Fix: find the code path where encodeURIComponent() or equivalent is called and remove the duplicate call.
The "unreserved characters" per RFC 3986 are always safe in any URL position: uppercase letters A–Z, lowercase a–z, digits 0–9, and the four symbols hyphen (-), underscore (_), period (.), and tilde (~). These 66 characters may appear in any URL component without encoding. Everything else — spaces, brackets, non-ASCII characters, most punctuation — must be percent-encoded.
A malformed percent sequence is a % character not followed by exactly two valid hexadecimal digits. %GG, %Z5, %2 (truncated), and %2X are all malformed. URL parsers handle these inconsistently — some pass the literal characters through, some throw an error, some silently drop the sequence. This tool flags malformed sequences with their position in the input so you know exactly where invalid sequences are before the string reaches a URL parser.
Yes. No account required, no rate limit. All encoding and decoding runs in your browser — nothing is sent to a server.
To encode: click the Encode tab. Paste your text into the input field — a query parameter value, a full URL, or any string that needs to be URL-safe.
Choose a mode: Component mode encodes everything including structural URL characters (/, ?, =, &). Full URL mode preserves those characters and encodes only unsafe characters. Component mode is the correct choice for encoding a parameter value to embed in an existing URL.
The encoded output appears immediately in the result field. Click Copy to copy it.
To decode: click the Decode tab. Paste any percent-encoded string. The decoded plain text appears immediately. Malformed sequences (e.g., %GG where GG is not valid hex) are highlighted with their position in the input.
To check for double-encoding: paste the string in the Decode tab. If the decoded output still contains percent sequences (%20, %2F, etc.), decode again — each pass removes one layer of encoding.
Keep going
Encode text, files, or binary data to Base64 and decode Base64 back to text or download as binary. Free, runs in your browser.
Open toolConvert epoch timestamps to human-readable dates or any date to epoch. Auto-detects seconds vs milliseconds. Live clock.
Open toolFormat, validate, and beautify JSON instantly. Pretty-print or minify. Error messages show line and column. Free, browser-side.
Open toolGenerate random, time-based, or sortable UUIDs instantly. UUID v4, v1, v7, and Nil. Quantity up to 100. Cryptographically secure.
Open tool