GIGIlistening…

Chapter 4 — the digital life

From code to chat: the # symbol in computing

hashtag.org7 min read

A retro green-phosphor CRT terminal showing code and an IRC channel list with #-prefixed channels

By the time the hashtag arrived, # had already spent decades as one of the busiest symbols in computing. It sat at code point 35 in ASCII, and programmers put it to work marking commands, comments, channels, and addresses. That quiet, essential career is what set the stage for what came next.

Directives and comments

In the C programming language of the 1970s, lines beginning with # told the preprocessor what to do before the real compilation started: #include to pull in a file, #define to name a constant, #ifdef to compile a section only under certain conditions. Soon after, a whole family of scripting languages adopted # to mark a comment, a note for humans that the machine ignores. Unix shell scripts, Perl, Python, Ruby, R, and PHP all read everything after a # on a line as a comment.

One special case became famous in its own right: the “shebang.” A script whose very first line starts with #! tells a Unix system which interpreter should run the file. Those two characters, # and !, quietly decide whether a file is handed to Python, to Bash, or to something else entirely.

Channels, anchors, and addresses

In 1988, a Finnish student named Jarkko Oikarinen built Internet Relay Chat, and IRC used # to name its channels. You joined #linux or #hottub by typing its name with a # in front. This is the most direct ancestor of the hashtag: a # placed before a word to mark a shared, public topic-space that anyone could enter. The leap from “#channel you join” to “#topic you tag” turned out to be a very short one.

On the web, # took on more jobs. It marks a fragment in a URL, the part after the # that jumps you to a specific section of a page. In CSS it selects an element by its id. In a stylesheet or design tool it sits in front of hex colour codes like #1DA1F2. Each of these taught another generation of people that a # means “this is a label, a place, or an address.”

Headings, sharps, and beyond

When Markdown arrived in 2004, it used # for headings, one # for a top-level heading and more for the levels beneath. Around the same time Microsoft named a new language “C#,” leaning on the visual pun with the musical sharp. So by the mid-2000s, almost anyone who had touched code, chat, the web, or a content management system had typed # to mean a command, a comment, a channel, an anchor, or a heading.

In other words, the symbol was already deeply, fluently digital. When someone finally suggested using it to tag a topic on social media, the gesture felt instantly natural, because a generation had spent years typing # to mean “this belongs to a group.”

Sources & further reading

← Back to the full history · What is a #hashtag?