IRC Documentation · Intermediate
IRCv3: Modern IRC extensions
IRCv3 is a set of specifications that evolve IRC without requiring all clients to change at the same time. Capabilities are negotiated separately: there is no simple 'IRCv3 compatible' button that guarantees all functions.
Dialova Team · Verified on
In this Category
- Account-tag: Identify the Account Behind a MessageDiscover account-tag: account tag added by the server, difference between nickname and account, negotiation and precautions for IRC bots.
- Batch: Group related IRC events.Understand IRCv3 BATCH batches: opening, closing, batch tag, nesting, and the difference between grouping, history, and multiline.
- Negotiate capabilities with CAP.Follow an IRCv3 CAP negotiation: LS 302, split listing, REQ, ACK, NAK, END, and changes after connection. Implementation examples and pitfalls.
- Message tags: the metadata of IRC messagesLearn to read IRCv3 tags: @ prefix, separation, escaping, client tags, TAGMSG, and limits. Examples without confusing metadata and text.
- SASL on IRC: Authenticating an accountUnderstand SASL on IRC: Difference with TLS and NickServ, PLAIN and EXTERNAL mechanisms, CAP negotiation, and authentication errors.
- Server-time: date messages with the server's timeUnderstand server-time and the time tag: UTC timestamp, negotiation, history, local display, and message order limits.
An evolution compatible with existing clients #
CAP discovers and activates extensions common to the client and server. Support depends on the versions, modules, services, and settings actually used. It is necessary to distinguish between a feature announced, a feature requested, and a feature actually accepted.
| Family | Mechanisms to know |
|---|---|
| Connection and identity | CAP, SASL, account-tag, account-notify, extended-join |
| Introduction and Tracking | server-time, echo-message, away-notify, multi-prefix |
| Metadata and Grouping | message-tags, batch, labeled-response |
| History | draft/chathistory and draft/event-playback, still under development as of verification date |
Read Status and Dependencies #
The official catalog distinguishes finalized specifications from work in progress. An extension prefixed draft/ may evolve incompatibly. The name of a capability, the name of a tag, and the type of a batch are three different identifiers: chathistory is a batch type, while the capability under development uses draft/chathistory.
The pages in this initial version detail CAP, SASL, message-tags, server-time, account-tag, and batch. The other capabilities are listed here to indicate their uses; they do not become empty pages. Consult the official specifications for their complete text.
For a client developer #
- Read CAP LS entirely, including fragmented responses and values.
- Only enable implemented capabilities and wait for ACK.
- Accept additional messages between steps of an exchange.
- Do not confuse current state with historically replayed events.
- Handle unknown tags without inventing an effect for them.
Sources & Verification
Examples use pseudonyms and fictional domains, except for explicitly documented connection points. Network-specific extensions and settings are noted in the text.
- IRCv3 — catalogue des spécifications ↗Source Specification · consulted on 2026-10-29
- IRCv3 — Client Capability Negotiation ↗Source Specification · consulted on 2026-10-29
- IRCv3 — chathistory, spécification en développement ↗Source Specification · consulted on 2026-10-29