Est. 1988 Intermediate

IRC

Internet Relay Chat, a text-based client/server protocol from 1988 for real-time group and one-to-one messaging organized around channels.

Created by Jarkko Oikarinen

Paradigm Communication protocol (line-oriented, text-based client/server)
Typing Untyped (line-oriented plain-text wire protocol)
First Appeared 1988
Latest Version RFCs 2810–2813 (2000); IRCv3 extension specifications (ongoing)

IRC, short for Internet Relay Chat, is one of the oldest text-based real-time communication protocols still in everyday use. Created in 1988, it defines how clients and servers exchange short lines of plain text to support group conversations in named channels as well as private one-to-one messages. Although it is a network protocol rather than a programming language, IRC occupies a place in computing history comparable to the early languages of its era: it established conventions—channels prefixed with #, nicknames, operators, bots, and a federated server model—that shaped how an entire generation of programmers collaborated online.

History & Origins

IRC was written by Jarkko Oikarinen in the summer of 1988 while he was working at the Department of Information Processing Science at the University of Oulu in Finland. He administered a Sun Unix machine that ran a public-access bulletin board system called OuluBox, and he set out to improve its existing multi-user chat program, MultiUser Talk (MUT). Oikarinen drew inspiration from Bitnet Relay Chat and from Jyrki Kuoppala’s rmsg program, and aimed to add real-time discussion features alongside the BBS. He called the result IRC and first put it into use at the end of August 1988.

The protocol spread quickly. It moved across the Finnish university network (FUNET) and then beyond Scandinavia as Oikarinen obtained accounts elsewhere and handed the software to colleagues, who passed it on to universities in the United States. Transatlantic links connected the growing North American and European servers into a single network, and the count of servers and users climbed steadily.

IRC reached a much wider audience during major news events of the early 1990s. Most famously, during the 1991 Gulf War, people around the world logged on to share live updates as conventional broadcast coverage was interrupted—an early demonstration that a simple text protocol could function as a global, real-time newswire.

Design Philosophy

IRC was built to be simple, federated, and text-based. A handful of design choices give it its character:

  • Everything is a short line of text. Clients and servers communicate by exchanging newline-terminated messages, each beginning with an optional prefix, a command, and parameters. This makes the protocol easy to implement and trivial to inspect or script.
  • Channels are the organizing unit. Conversations happen in named channels (conventionally beginning with #), which any user can join, leave, or create on the fly. Channels are ephemeral by default and exist only while occupied.
  • The network is a tree of servers. IRC servers link together and relay messages so that users connected to different servers share the same channels. This federation is core to the architecture rather than an afterthought.
  • Operators and modes govern behavior. Channel operators (@) and a system of user and channel modes provide moderation, access control, and topic management without a central authority.

This minimalism is both IRC’s greatest strength and its most cited limitation: it is easy to build on, but features taken for granted today—persistent history, reliable identity, rich media—were never part of the original design.

Key Concepts

The Line Protocol

Every IRC message is a single line. A client might send:

NICK archaeologist
USER archaeologist 0 * :Code Archaeologist
JOIN #retrocomputing
PRIVMSG #retrocomputing :Hello, World!

And the server responds with similarly structured lines, for example a numeric reply or a relayed message:

:welcome.example.net 001 archaeologist :Welcome to the network
:friend!user@host PRIVMSG #retrocomputing :Hi there!

This human-readable framing is why a working IRC client or bot can be written in only a few dozen lines using nothing more than a TCP socket.

Channels, Nicknames, and Operators

Users identify themselves with a nickname, join one or more channels, and may hold privileges such as channel operator status. Because nicknames in the base protocol are not owned, networks layered on services (such as NickServ and ChanServ) to let users register names and channels.

CTCP and DCC

The base protocol carries only text and provides no file transfer. To work around this, clients adopted two conventions built on top of ordinary messages:

  • CTCP (Client-To-Client Protocol) embeds structured queries inside normal messages—used for things like VERSION, PING, and ACTION (the familiar /me emote).
  • DCC (Direct Client-to-Client) uses CTCP to negotiate a direct TCP connection between two clients, bypassing the server entirely for private chats and file transfers.

Bots

Because participating in IRC requires nothing more than sending and receiving text over a socket, automated clients—bots—became ubiquitous. They moderate channels, guard against abuse, answer questions from a knowledge base, and relay notifications from version control, issue trackers, and continuous-integration systems.

Standardization

IRC grew as running code before it was ever formally documented. The first specification, RFC 1459, was published in May 1993 and described the protocol roughly as it then existed. In April 2000 the specification was expanded and reorganized into four documents:

RFCTitle
RFC 2810Internet Relay Chat: Architecture
RFC 2811Internet Relay Chat: Channel Management
RFC 2812Internet Relay Chat: Client Protocol
RFC 2813Internet Relay Chat: Server Protocol

In practice these RFCs are best understood as descriptions and updates rather than a single authoritative standard, and real-world server implementations diverged in many details. The modern IRCv3 working group addresses this fragmentation by defining backward-compatible extensions—message tags, better authentication (SASL), server-time and message history, and more—so that contemporary networks can offer features users expect while remaining compatible with classic clients.

Networks and the Splits

IRC has never been a single network. As it grew, disagreements over policy, routing, and abuse handling repeatedly caused networks to fork:

  • Undernet split from the original network (later known as EFnet) in 1992, introducing timestamp-based channel synchronization and registration services.
  • DALnet branched off in 1994, prioritizing stability and persistent nickname/channel ownership.
  • The “Great Split” of July 1996 divided EFnet itself, with European servers forming IRCnet while North American servers retained the EFnet name.
  • Freenode rose to prominence as the home of free-software communities, but a disputed change of control in 2021 prompted a mass exodus to Libera.Chat, founded by former Freenode staff.

These splits illustrate a recurring theme: with no central owner, IRC’s communities govern themselves, and when governance breaks down they vote with their feet by moving to a new network.

Current Relevance

IRC is no longer the default place where the internet gathers to chat—that role passed to web and mobile platforms like Slack, Discord, and Matrix, several of which borrowed liberally from IRC’s vocabulary of channels, nicknames, and bots. Slack even shipped an IRC gateway in its early years, and Matrix positions itself as a federated, IRC-like successor with bridges back to IRC networks.

Yet IRC remains very much alive. Networks such as Libera.Chat host thousands of channels for open source projects, and IRC continues to be valued precisely for what it has always been: an open, lightweight, vendor-neutral protocol that anyone can implement, self-host, and automate. For technical communities that prize openness and longevity over polish, it endures.

Why It Matters

IRC matters because it defined the grammar of real-time online collaboration. The conventions it popularized—joining a #channel, picking a nickname, granting operator status, running a bot, sending a /me—became the mental model that later chat systems inherited, often without acknowledging the source. It proved that a deliberately simple, federated, text-only protocol could scale to a global community and survive for nearly four decades. For students of protocol design, IRC is a compact, readable case study; for the open source world, it was the town square where much of modern software was discussed, debugged, and built.


Sources: Wikipedia – Internet Relay Chat, Daniel Stenberg – History of IRC, LivingInternet – IRC History, RFC 1459, and RFC 2810.

Timeline

1988
Jarkko Oikarinen creates IRC at the University of Oulu, Finland, to replace the MultiUser Talk (MUT) program on the OuluBox BBS; first deployed at the end of August
1988
IRC spreads from the Finnish network (FUNET) to other Finnish universities, then onward as Oikarinen recruits the first users outside Scandinavia
1991
Usage spikes worldwide as people log on for live updates during the Gulf War, after broadcast media coverage was interrupted, demonstrating IRC as a real-time news channel
1992
Undernet splits off from the original network (later called EFnet), introducing timestamp-based channel handling and registration services
1993
RFC 1459, Internet Relay Chat Protocol, is published in May, documenting the de facto protocol that had evolved since 1988
1994
DALnet forms (splitting from Undernet), emphasizing stability plus nickname and channel registration services
1996
The 'Great Split' in July divides EFnet, with European servers forming IRCnet while North American servers continue as EFnet
2000
RFCs 2810–2813 are published in April, splitting the specification into Architecture, Channel Management, Client Protocol, and Server Protocol documents
2021
A disputed change of control at Freenode in May prompts staff resignations and a mass migration of free-software projects to the newly founded Libera.Chat network

Notable Uses & Legacy

Free and Open Source Software Communities

For decades IRC was the default real-time meeting place for FOSS projects; the Linux kernel, Debian, Arch Linux, and countless others have maintained channels for support, coordination, and development discussion.

Libera.Chat

A volunteer-run network founded in 2021 by former Freenode staff, focused on free and open source projects and supporting modern IRCv3 features such as improved authentication and message history playback.

IRC Bots and Automation

Because the protocol is plain text over a socket, projects build bots for moderation, notifications, issue tracking, factoid lookup, and build/CI reporting using lightweight client libraries.

DCC File Transfer and Sharing

IRC itself defines no file transfer, so clients added Direct Client-to-Client (DCC) connections—negotiated via CTCP—to send files and hold direct one-to-one chats outside the server.

Live Event and Crisis Coverage

IRC has historically been used to relay real-time information during major news events, most famously the 1991 Gulf War, when users gathered to share updates as conventional coverage was disrupted.

Language Influence

Influenced By

Bitnet Relay Chat MUT (MultiUser Talk) rmsg

Influenced

Slack Discord Matrix

Running Today

Run examples using the official Docker image:

docker pull
Last updated: