Two modes, because a full URL and a parameter need different treatment
Encode query parameters and paths, or decode a URL full of %20s. Choose between encoding a component or a whole URI.
URLs only tolerate a limited character set. Everything else — spaces, ampersands, Cyrillic, emoji — has to be percent-encoded, which is why links turn into strings of %D0%BF.
The distinction that matters: encoding a full URI preserves the structural characters like : and /, while encoding a component escapes them. Getting this backwards is why a query parameter containing a URL so often breaks.
What this calculator showsThe encoded or decoded string, with length Component mode for query values and path segments Full-URI mode that leaves the structure of a link intact What to keep in mindComponent mode escapes reserved characters such as & = ? / : Malformed percent sequences are reported rather than silently repaired. FAQsWhich mode should I use? Component for anything you are inserting into a URL, such as a search term. Full URI only when encoding an entire link that already has valid structure.
Why is a space sometimes %20 and sometimes +? %20 is correct throughout a URL. The + form only applies inside form submissions using the older application/x-www-form-urlencoded rules.
Do non-Latin URLs actually work? Yes. Cyrillic paths are stored percent-encoded and browsers display them decoded, which is why a link looks readable but copies as %-codes.
Can I encode the same string twice? You can, and it is a common bug. The % itself becomes %25, so %20 turns into %2520 and the link stops working.
Worked example A search phrase in a query string
Input: a b&c
Output: a%20b%26c
Note: The ampersand becomes %26 so it cannot be mistaken for the start of the next parameter — precisely the bug you get without encoding.