A useful overview and reference to the IRC client protocol as it is implemented today.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
_includes
_layouts
css
fonts
info
js
.gitignore
Gemfile
Gemfile.lock
LICENSE
README.md
_config.yml
about.md
ctcp.md
dcc.md
formatting.md
index.md

README.md

Modern IRC Documents

This site contains documents describing the IRC protocol and related technologies. The documents hosted here are intended to be useful to software developers working with IRC.

For suggestions of other documents to create / maintain, please create an issue or send me an email!

The behaviour and constants described in these documents SHOULD converge, and/or be interoperable with the majority of IRC software. These documents should allow a client or server author to build software which can communicate with almost any other piece of IRC software it interacts with.

These documents contain existing behaviour and what we consider best-practices for new software. Where external, up-to-date and authoritative specifications exist for commands/messages/behaviours, we prefer to link to those rather than needlessly rewrite them (see the Client Protocol's CAP message for an example of this).

These documents aren't RFCs. I can see the content from them being used in RFCs in the future, but right now I'm just concerned with creating good documents that help push IRC forward. If someone is making up a proper RFC, feel free to use anything from these documents -- Just respect the authors section at the top of the document if a decent amount of text/structure is used from it.

If something written in these documents isn't correct for or interoperable with an IRC client / server / network you know of, please open an issue or send me an email. Pull requests are appreciated.


Modern IRC Client Protocol

This is an attempt to create an updated document about how the IRC client protocol works these days.

We specify commands, messages and numerics as SHOULD and MUST based on how much of the IRC software out there today uses them (as well as the guidance of the RFCs and common-sense). Someone writing a client or server based off this document SHOULD end up with an implementation that interacts nicely with most IRC software and networks out there today.

This ignores the S2S protocol. The reasons for this are discussed in the document. This document includes bits and pieces cherry-picked from the RFCs, IRCv3, Internet-Drafts, and commands/replies that have generally been accepted by the IRC community.

IRC Formatting

Describes what I consider to be the formatting characters and methods understood by basically everything. This includes colors, bold, italics, formatting reset codes, etc.

In this document, I describe what I think is the most sane way to interpret them. This includes the edge-cases that aren't normally explored in similar documents, based on what clients tend to do today.

Client-to-Client Protocol (CTCP)

Describes a subset of CTCP that is sane and lets software interoperate with most of the other IRC software out there today. Leaves out quoting mechanisms defined by earlier specifications that have not been widely implemented nor followed today, and defines the messages that most clients implementing CTCP should be aware of.