URL Encode / Decode
Encode or decode URLs and query string parameters.
Why URLs Can't Just Contain Anything
A URL can only safely include a limited set of characters — letters, numbers, and a small handful of symbols. Spaces, punctuation, and non-English characters have to be converted into a "percent-encoded" safe format before they can reliably travel through a browser, a server, or an API without breaking or getting misinterpreted. A raw space in a URL, for instance, becomes %20; other symbols get their own specific codes.
What This Tool Does
Paste text in and it encodes any unsafe characters into their percent-encoded equivalents, ready to use safely inside a URL or query string. It also works in reverse — paste an encoded URL and decode it back into readable text.
Where This Actually Comes Up
Building a search query URL by hand, where the search term itself contains spaces or special characters, requires encoding those characters first or the link simply won't work as intended. Developers passing data through URL parameters — a name, an email address, a filter value — need to encode that data first, since unencoded special characters in a parameter can break the URL structure entirely or, worse, be exploited to manipulate it. Debugging why a link doesn't work as expected often starts with decoding it to see what's actually being sent, since a misencoded character is a common, easy-to-miss cause of broken links.
The Characters That Cause the Most Trouble
Spaces, ampersands, question marks, and the percent sign itself are the usual troublemakers, precisely because they already have special meaning within URL syntax (an ampersand separates parameters, a question mark starts the query string). If one of these characters appears as literal data inside a URL without being encoded, it gets misread as structure rather than content, which is a common source of subtly broken links that look fine at a glance but don't actually work.
A Related Distinction: Encoding vs. Encryption
Like Base64, URL encoding is not a security measure — it's purely a compatibility format so that special characters survive being passed around inside a URL. Anyone can decode it instantly, so it shouldn't be relied on to hide sensitive information like passwords or personal data in a link.
Encoding Once, Not Twice
A subtle mistake that trips people up is double-encoding a URL that's already been encoded once — running an already-encoded string through the encoder again turns the percent signs themselves into their own encoded form, producing a broken, garbled result that no longer decodes back correctly. If a link isn't working and you suspect an encoding issue, it's worth checking whether it's actually been encoded twice by mistake before assuming it needs encoding again from scratch.
When debugging a broken link that involves user-entered data, decoding the URL first is often the fastest way to see exactly what was actually sent, since a percent-encoded string can look confusing at a glance but reveals the actual intended text clearly once decoded back to its readable form.
Frequently Asked Questions
Why do some spaces in URLs show as %20 and others as a plus sign?
Both are valid in different contexts — %20 is the standard encoding, while + is specifically used within query strings as a shorthand for a space, a convention that dates back to older web form encoding standards.
Is URL encoding the same in every browser?
Yes, URL encoding follows a standardized specification, so encoded URLs behave consistently across browsers and servers, unlike some other web behaviors that vary by implementation.
Do I need to encode an entire URL, or just parts of it?
Only the parts containing special characters or user-provided data typically need encoding — encoding an entire URL including its structural characters (like the initial https:// and slashes) would actually break it.
Does URL encoding affect how a link functions once decoded by a server?
No, a properly encoded URL is interpreted by the receiving server exactly as the original, unencoded data was intended — the encoding is just a safe transport format.