So I was researching the history of the tilde, because D told me that her company just installed a new web proxy that denies access to any URL with a tilde in it. Presumably because the presence of a tilde indicates with remarkable accuracy a personal site, and apparently her employer believes that reading personal sites is not an appropriate use of company time. Which, to be honest, is probably accurate, given the nature of her work. But never mind that. I don’t want to talk about corporate politics. I want to talk about the tilde.
Every command-line-loving geek will tell you that ~ stands for home directory
, and cd ~ will take you to your home directory. (cd ~username will take you to someone else’s, except on Mac OS X, where it will take you to their Public file sharing directory.) It is from this heritage that we can trace the present-day practice of using tildes in URLs to denote personal pages, since one single system-wide configuration allowed individual users to have their own web sites by storing files in their own home directory. Or, more commonly now that Apache has taken over the world, in their public_html subdirectory, except on Mac OS X, where if you turn on web sharing and point your browser to http://localhost/~username/, you’re actually being served files from that user’s Sites directory within their home directory.
But I don’t want to talk about Mac OS X. I want to talk about the tilde.
As with so many other things, I find that Jukka Korpela is the expert in this field. Jukka is no doubt a member of my karass, a word which Google (old habits die hard) feels is best explained by the personal site of Eugene Wallingford, which, like Jukka’s home page, can not be referenced without a tilde.
In fact, Jukka has written a lengthy treatise on why the tilde should not be used in URLs, a treatise which, I feel obliged to point out, contains a tilde in its URL.
Clearly, the tilde is underappreciated.
Digging further, we find this post of Jukka’s from 1998, in which we learn that the tilde was not meant to be the tilde at all, but rather an odd character called the overline. Presumably to balance out the underline, if indeed those sorts of things require balance. There is balance in the universe, to be sure, but I am less sure that it eminates from my keyboard. No matter. The tilde was the tilde so that Spanish-typing types could type the ñ (now referenced in HTML as the named entity ñ), but somewhere along the line, it morphed into a general-purpose character with all sorts of geeky uses.
Digging even further, it appears that the tilde was originally an alternate for #, then an alternate for ^, and its life as an overline replacement came even later. Jukka confirms this and adds a timeline: 1963 for #, 1964 for ^, 1966 for overline. Then June 30, 1966, the watershed moment in an X3 committee meeting, when it was proposed as exclusively a tilde in USA to appease SHARE
. I can find no further reference as to what this acronym means, or what this committee meeting was about. According to Sam Ruby, SHARE is share.org, and according the Tim Bray (via email), SHARE was the original IBM users group, and quite powerful in the days when computer
meant IBM mainframe
. According to David Ross, SHARE stood for Society to Help Avoid Redundant Effort
, and was created for the free exchange of software long before anyone thought software could be copyrighted or patented. According to this history of IBM’s Advanced Computing Systems (a page which, I feel obliged to point out, contains a tilde in its URL), the NSA visited ACS in 1966 for a full presentation
. I am in no way suggesting that the invention of the tilde was a government conspiracy.
The next reference in Jukka’s history isn’t until 1991, when the tilde was officially added to ISO-646. But there’s so much to learn in between.
And now, down the rabbit hole we go. Scouring Usenet (which the kids of yesterday called Deja News
, and kids today call Google Groups
), we find a reprint of a 1991 William Safire (yes, that William Safire) article On Language, in which we learn that ~ is officially pronounced squiggle
. This is confirmed by the Jargon Dictionary to this very day. I’m not sure this is useful, but I just thought it was cool to see William Safire writing about the proper pronunciation of various ASCII characters.
As early as August 1990, tilde was included in the waka waka bang splat poem.
In July 1989, Kermit gained support for filenames containing a tilde.
In February 1988, an editor’s note to an otherwise unrelated article notes that Fidonet supported ASCII characters space through tilde.
As early as January 1987, less used the tilde to denote lines past EOF.
As early as July 1986, troff supported the tilde.
In November 1985, a mod.sources post refers to Bourne shell enhancements (history,tilde,job control).
As early as January 1984, tilde was included on the DEC keyboard and listed in the APL-11 character set.
In April 1983, tilde was causing bugs in vi (actually due to underlying bugs in csh).
In December 1982, ~ is officially pronounced tilde
, prompting this typographical pun.
And that’s the earliest reference I can find. Jim Lyon (yes, that Jim Lyon) has contacted me to point out that section 3.4.1 of the INTERCAL Programming Language Revised Reference Manual, which he co-authored in 1973 (and which, like everything else that is good and pure in this world, contains a tilde in its URL), refers to the tilde as a sqiggle
. Not a squiggle
, mind you, but a sqiggle
, a difference which Jim assures me was quite intentional and most likely original. This alternate spelling is still listed in the Jargon Dictionary, complete with pronunciation guide.
The tilde (sqiggle) was the select operator in INTERCAL, and is so incredibly heinous that I feel compelled to quote the manual at length:
The select operator takes from the first operand whichever bits correspond to 1’s in the second operand, and packs these bits to the right in the result. Both operands are automatically padded on the left with zeros to 32 bits before the selection takes place, so the variable types are unrestricted. The resulting value will have the same type as the second operand. For example, #179~#201 (binary value 10110011~11001001) selects from the first argument the 8th, 7th, 4th, and 1st from last bits, namely, 1001, which = 9. But #201~#179 selects from binary 11001001 the 8th, 6th, 5th, 2nd, and 1st from last bits, giving 10001 = 17. #179~#179 has the value 31, while #201~#201 has the value 15.
Following up on Sam Ruby’s links, we find that the tilde was not a part of ASCII-1963, the first standardized version of ASCII (standardized in 1963, hence the name), but it was part of ASCII-1965, added along with its friends, ^, _, and @. This would seem to contradict Jukka’s version, which places the tilde as a replacement for # as early as 1963. Perhaps it was, but didn’t make it into the ASCII standard. At any rate, IBM (and therefore SHARE, IBM’s users group) was, at the time, centered around their own (competing) character encoding standard, EBCDIC. Original EBCDIC (1964) did not include a tilde, but it was added in Augmented EBCDIC after the ISO included it in ISO 8859-1. Correction: Original EBCDIC did include the tilde. My mistake! … This still doesn’t explain why SHARE would be so pro-tilde in 1966 (or rather, why anyone else would be anti-tilde, since it was included in both EBCDIC and ASCII by then), but I believe we can pinpoint the birth of the tilde as its own character sometime between 1963 and 1964. And it does now appear that IBM was the father of the tilde, unless someone else can find a reference to it in a character set prior to 1964.
So where does this leave us? Unsatisfied, no doubt. There is history here, but there are gaps. What happened at that watershed meeting in 1966? How did the tilde rise to prominence in the 1980s? When did it become a synonym for home directory
? When did it migrate into the world of web servers to provide a cheap and simple way of giving individual users their own web sites? I don’t know, and the lateness of the hour prevents me from continuing my research, a failing for which I apologize profusely. Goodnight, goodnight. May you dream of tildes, stars, and whorls.
Update #1: Juri Pakaste weighs in with a partial answer to the question of when tilde migrated into web servers. To quote:
The CERN/W3C web server added support for ~username in 1994. Change notes (sorry, no direct link to the relevant version, they don’t have anchors on that page) for version 2.15beta, released 11 February 1994, say this:
User-supported directories enabling URLs starting with /~username. …NCSA’s web server is more difficult. The version history page first mention of the feature, I think, at version 1.0a4. … Grabbing the old versions from their ftp server, the feature wasn’t in 0.5 but it was in 1.1 (obviously), which was apparently released somewhere around March 25th, 1994. … I find one mention of this feature as
newishon NCSA at 1993-11-18. A bit earlier is 1993-09-30. … Guessing would place it somewhere in the summer or autumn of 1993.
Update #2: Rich Salz points me to the UUCP Implementation Description, dated October 31, 1978. UUCP was the UNIX dialup networking system, and came bundled with version7 UNIX. To quote from the UUCP manual:
The source and/or destination names may also contain a ~user prefix. This translates to the login directory on the specified system. … The command
uucp\ \ usg!~dan/*.h\ \ ~danwill set up the transfer of files whose names end with.hin dan’s login directory on systemusgto dan’s local login directory.
Rich contacted the original author of UUCP to find out why he chose the tilde for this purpose, but the author doesn’t remember. Probably the best guess is because all the good characters were taken. Rich believes that UUCP was the first to use the tilde to mean home directory
, then later the C shell copied the syntax from UUCP. And the rest, as they say, is history.

