Is the URL encoder free?
Yes. It is completely free to use, with no signup, no account, and no paywall.
Do I need to install anything?
No. It runs in any modern browser on desktop or mobile, with nothing to download and nothing to configure.
Does it stay local?
Yes. The text you paste is processed entirely in your browser and never uploaded to a server.
Why did my URL get mangled into percent signs?
Because this tool encodes a component, not an entire address. encodeURIComponent is deliberately aggressive: it assumes the string you gave it is a single value that must survive being dropped into any position in a URL, so it escapes every reserved character including the colon and the slashes of the scheme. If you want to pass a URL as the value of a redirect or callback parameter, that aggressive escaping is exactly right. If you wanted a clickable link, you did not need to encode it at all.
Should spaces become %20 or a plus sign?
In a URL, %20. The plus sign only means space inside an application/x-www-form-urlencoded body, which is the format a classic HTML form POST uses. Servers that parse query strings usually accept both, but the reverse is not true: a literal plus in a URL path is a plus, not a space. When in doubt, %20 is the safer output, and this tool always produces it.
Does percent-encoding make a value safe from injection?
It makes it safe for the URL layer, and nothing else. Percent-encoding stops a value from breaking out of its slot in the query string. It does not sanitise the value for HTML (you still need HTML escaping to avoid XSS), for SQL (you still need parameterised queries), or for a shell. Encoding is per-context, and a value that has been made safe for a URL is not thereby safe anywhere else.
Why are characters like parentheses and apostrophes not encoded?
They are legal in a URI component under RFC 3986, so encodeURIComponent leaves them alone. In practice they cause trouble anyway: chat apps, markdown parsers, and email clients often stop auto-linking a URL at a parenthesis, so a link ending in one gets cut short. If your value will be pasted into a message, consider escaping them yourself as %28 and %29.
Is my input sent anywhere?
No. The encoding is a single call to a JavaScript function that runs in your browser. Nothing is transmitted, which matters if the value you are encoding is a token, a signed URL, or a customer identifier.