Like the underscore character _, the tilde ~ is another vestige of the implementation constraints of typewriters. Its history on the Web is because a tilde is a Unix shell shorthand for a user's home directory. When the Web was nascent, before everyone had their own domain, it was much more common to see HTTP URLs like, where luser was the user name of an account on the associated Web server. So really, the tilde is a second-degree implementation constraint vestige.

Furthermore, anecdotal evidence suggests that nobody knows the word for the damn thing! When playing audience to someone speaking a URI that contains a tilde, one often hears a pause, followed by umm, I don't know, that … squiggly thing. Other characters that fall into the category of unknown-word or hard-to-say include the ampersand &, the exclamation mark !, the apostrophe ' and the asterisk *. The astute, at this point, will notice that the dollar sign $ is exempt, because people make an exception for money.

So, take care not to make URIs that are hard to say, and kindly avoid perpetuating long-obsolete implementation constraints. Be judicious.