ConvertUnlimited

URL Encoder / Decoder

Encode and decode URLs, query strings, and text locally in your browser.

Local developer URL tool

Convert URLs and encoded strings safely.

Encode reserved characters for URLs or decode percent-encoded strings with selected inputs processed locally in your browser.

Characters: 0 ยท Bytes: 0

What this tool does

Encode reserved characters for URLs or decode percent-encoded strings with selected inputs processed locally in your browser.

Privacy behavior

Selected file contents are processed locally in your browser for supported workflows. This privacy build does not intentionally load ads, analytics, remote fonts, or third-party runtime scripts.

Supported workflow

Use the controls on this page, review the output in your browser, then copy or download the result.

When should you encode URLs?

URL encoding is useful for query strings, API calls, redirects, search parameters, and debugging links that contain spaces, Unicode, or reserved characters.

Use full URL mode when the URL structure should stay readable. Use component mode when encoding a single query value or path segment.

Percent-encoding and reserved characters

Percent-encoding, described in RFC 3986, represents a byte as a percent sign followed by two hexadecimal digits. This tool wraps two native JavaScript functions rather than implementing its own encoder: encodeURI() for Full URL mode and encodeURIComponent() for URL component mode, with matching decodeURI() and decodeURIComponent() for decoding. Both functions convert the input to UTF-8 bytes first, then percent-encode every byte outside their allowed set, which is why one non-ASCII character can expand into several %XX groups; a single emoji becomes four separate percent-encoded bytes.

The two modes differ in which characters they leave untouched. encodeURI assumes the input is already a complete, structurally valid URL, so it leaves the characters that give a URL its shape readable, such as : / ? # &. encodeURIComponent assumes the input is a single value, such as one query parameter, so it escapes those same structural characters too, since a raw & or = inside a value would otherwise be read as a new parameter.

Character classencodeURI, Full URL modeencodeURIComponent, URL component mode
Unreserved: A-Z a-z 0-9 - _ . ~Left unescapedLeft unescaped
Reserved: ; / ? : @ & = + $ , #Left unescaped, since these usually mark URL structureEscaped, since a raw one would split a single value apart
SpaceEscaped to %20Escaped to %20
! ' ( ) *Left unescapedAlso left unescaped, a long-standing JavaScript quirk, since these count as reserved sub-delimiters under RFC 3986

Worked example

The Sample URL button loads https://privacy.convertunlimited.com/search?q=hello world 👋&city=กรุงเทพ&note=café 世界. Encoding it in the two modes gives noticeably different results:

Full URL mode:
https://privacy.convertunlimited.com/search?q=hello%20world%20%F0%9F%91%8B&city=%E0%B8%81%E0%B8%A3%E0%B8%B8%E0%B8%87%E0%B9%80%E0%B8%97%E0%B8%9E¬e=caf%C3%A9%20%E4%B8%96%E7%95%8C

URL component mode:
https%3A%2F%2Fconvertunlimited.com%2Fsearch%3Fq%3Dhello%20world%20%F0%9F%91%8B%26city%3D%E0%B8%81%E0%B8%A3%E0%B8%B8%E0%B8%87%E0%B9%80%E0%B8%97%E0%B8%9E%26note%3Dcaf%C3%A9%20%E4%B8%96%E7%95%8C

In Full URL mode, the ://, ?, and & characters that give the address its structure stay readable, while the space and non-Latin text still get percent-encoded. In URL component mode, those structural characters are escaped too, so : becomes %3A, / becomes %2F, and & becomes %26. That is correct for encoding a single query value on its own, but it would break this string if treated as a complete URL, since the slashes and colon that make it a URL disappear into percent-encoded text.

Limits and gotchas

  • Mixing up the two modes breaks URLs. Pasting URL component mode output into a browser address bar will not work as a link, since the structural characters were escaped along with everything else; component mode output is meant to be inserted as one value inside a URL you build yourself, not used as a complete address.
  • Space always becomes %20, never a plus sign. Both modes wrap the native encodeURI and encodeURIComponent functions, which always use %20 for a space. A system expecting classic application/x-www-form-urlencoded formatting, where a space becomes +, needs that substitution done separately.
  • ! ' ( ) * stay unescaped in both modes. This is a JavaScript-specific gap relative to strict RFC 3986 percent-encoding. Some systems, including certain request-signing schemes, require those characters to be percent-encoded too, and this tool's output would need manual post-processing to satisfy them.
  • Malformed percent sequences fail entirely, not partially. Decoding a bare % not followed by two hex digits, or a sequence that does not form valid UTF-8 once decoded, throws an error; the tool catches it and shows a warning rather than returning a partially decoded, garbled string.
  • Full URL mode assumes the whole input is already a URL. If the goal is instead to encode a single value that happens to contain slashes or question marks, such as a file path used as a query parameter, Full URL mode leaves those characters alone, which is usually not the desired result; URL component mode is the correct choice for that case.

Frequently Asked Questions

Is this URL Encoder free?

Yes. You can encode, decode, copy, and clear text without signup.

Is my URL uploaded?

No. All URL encoding and decoding happens locally in your browser.

What is the difference between full URL and component mode?

Full URL mode keeps URL separators such as : / ? and & readable. Component mode encodes those reserved characters too.

Does it support Unicode and emojis?

Yes. UTF-8 text, emojis, accents, and non-Latin scripts are supported.

What happens with malformed percent-encoding?

The tool shows a friendly warning and keeps your original input.

Why do parentheses and exclamation marks never get encoded?

JavaScript built-in encodeURI and encodeURIComponent both leave ! ' ( ) and * unescaped, even though RFC 3986 classifies them as reserved sub-delimiters. This tool inherits that behavior directly from the native functions.

Does this use a plus sign for spaces like a web form?

No. Both modes always encode a space as %20, matching URI percent-encoding rather than the application/x-www-form-urlencoded convention that uses a plus sign.

Can I paste the component-mode output directly into a browser address bar?

No. Component mode escapes the slashes, colon, and other characters that make a string a URL, so the result only works when inserted as a single value inside a URL you assemble yourself.

Privacy

Privacy build: This build removes ads, analytics, remote fonts, runtime CDN scripts, and file-operation telemetry. Selected files are processed in the browser using local JavaScript and browser APIs.

ConvertUnlimited does not provide a server-side upload endpoint for this URL encoding and decoding flow. Text input is processed locally in your browser.

Terms of Use

ConvertUnlimited is provided as is. Review encoded or decoded output before using it in production systems.

Privacy & processing

Trust and privacy

Files are processed locally where supported. Review the Trust Center for the processing model and the Privacy Policy for public-site privacy boundaries.