Why URLs need encoding
URLs can only contain a limited set of characters, so anything outside that set, spaces, accented letters, and symbols like &, ?, / and # that have special meaning in a web address, must be percent-encoded: replaced by a % followed by its character code. A space becomes %20, for example. This is what lets a search query or a filename with spaces travel safely inside a link.
Reserved versus unreserved. Some characters are "reserved" because they structure the URL: ? starts the query string, & separates parameters, / separates path segments. If those appear inside a value rather than as structure, they must be encoded or the URL is misread. Letters, digits and a few symbols are "unreserved" and never need encoding.
Where it bites. The classic bug is a query parameter containing an ampersand or a plus sign that is not encoded, which silently truncates or corrupts the value on the server. Any time you build a URL from user input or data, encode each value first. The tool above encodes and decodes both whole URLs and individual components.