Why? This is normally done when transmitting data in html forms. For example, the # character has a special purpose in html (as an html anchor) and so is converted to make it clear that it is part of that data, not part of the html document where it is to be displayed.

Another (related) use is for prevention of XSS attacks. If your web page allows a user to enter text (for example, a comments box on a blog), it would be very easy for a motivated user to enter malicious text that will be interpreted as a script.

What does Url Eocnding look like? Each reserved character has a percent-encoding equivalent. For example, / (forward slash) becomes %2F and : (colon) becomes %3A. For more, see here.

So, the url https://www.shaunabram.com would become https%3A%2F%2Fwww.shaunabram.com

A real world example would be if on the aforementioned blog, instead of entering a banal comment such as “Great post!”, the user instead enters

<scripttype='text/javascript'>alert('xss');</script>”

Instead of displaying this text, a browser may well interpret it as code and run it. So, such user entered text is encoded to ensure that it is transmitted and displayed as data, not interpreted and run as part of the page. It would end up being transported as something like