This page lists the tags, capabilities, commands, batches and metadata keys that have been defined by the IRCv3 Working Group, are described by our specifications, or that we otherwise recommend using. Draft-status names are listed without the draft/, as this primarily catalogues reserved names.


Numerics 🔗

Numeric Name Specs Description
005 RPL_ISUPPORT Lists features supported by the server; sent as connection registration is completed. (1) (2) (3)
335 RPL_WHOISBOT Bot Mode Indicates that the client being WHOIS‘d is a bot
354 RPL_WHOSPCRPL WHOX Not defined by IRCv3 but extended to allow servers to send more information.
670 RPL_STARTTLS starttls [deprecated] Indicates that the client may begin their TLS handshake
691 ERR_STARTTLS starttls [deprecated] Indicates that STARTTLS failed because of an unspecified error
730 RPL_MONONLINE Monitor Indicates to a client that either a target has just become online, or that a target they have added to their monitor list is online
731 RPL_MONOFFLINE Monitor Indicates to a client that either a target has just left the irc network, or that a target they have added to their monitor list is offline
732 RPL_MONLIST Monitor Returns the list of targets that the client has in their monitor list
733 RPL_ENDOFMONLIST Monitor Indicates the end of a monitor list
734 ERR_MONLISTFULL Monitor Indicates to a client that their monitor list is full
760 RPL_WHOISKEYVALUE Metadata [draft] Provides user metadata within a WHOIS response
761 RPL_KEYVALUE Metadata [draft] Provides user metadata as a response to a METADATA command, or to notify a user’s metadata changed
766 RPL_KEYNOTSET Metadata [draft] Indicates lack of te requested kind of user metadata as a response to a METADATA command, or a notification it was deleted
770 RPL_METADATASUBOK Metadata [draft] Indicates success of the METADATA SUB command
771 RPL_METADATAUNSUBOK Metadata [draft] Indicates success of the METADATA UNSUB command
772 RPL_METADATASUBS Metadata [draft] Lists metadata keys a client is currently subscribed to, as a response to METADATA SUBS
774 RPL_METADATASYNCLATER Metadata [draft] Indicates that metadata cannot currently be sent, as a reply to a JOIN or METADATA SYNC command. The client should request METADATA SYNC later
900 RPL_LOGGEDIN SASL v3.1, SASL v3.2 Indicates that the client is logged in
901 RPL_LOGGEDOUT SASL v3.1, SASL v3.2 Indicates that the client has been logged out
902 ERR_NICKLOCKED SASL v3.1, SASL v3.2 Indicates that SASL auth failed because the account is currently locked out, held, or otherwise administratively made unavailable
903 RPL_SASLSUCCESS SASL v3.1, SASL v3.2 Indicates that SASL auth finished successfully
904 ERR_SASLFAIL SASL v3.1, SASL v3.2 Indicates that SASL auth failed because of invalid credentials or other errors not explicitly mentioned by other numerics
905 ERR_SASLTOOLONG SASL v3.1, SASL v3.2 Indicates that SASL auth failed because the client-sent AUTHENTICATE command was too long (i.e. the parameter was longer than 400 bytes)
906 ERR_SASLABORTED SASL v3.1, SASL v3.2 Indicates that SASL auth has been aborted because the client sent an AUTHENTICATE command with * as the parameter
907 ERR_SASLALREADY SASL v3.1, SASL v3.2 Indicates that SASL auth failed because the client has already authenticated and the server doesn’t support re-authenticating
908 RPL_SASLMECHS SASL v3.1, SASL v3.2 Sends the SASL mechanisms supported by the server, in response to an incorrectly-sent AUTHENTICATE message

Capabilities 🔗

Name Specs Description
account-notify account-notify Notifies clients when other clients in common channels authenticate with or deauthenticate from their account (e.g. NickServ, SASL).
account-registration account-registration [draft] Indicates support for the REGISTER/VERIFY commands, a standardised way for clients to register accounts.
account-tag account-tag Attaches a tag containing the user’s account to every message they send.
away-notify away-notify Notifies clients when other clients in common channels go away or come back.
batch batch Lets the server bundle common messages together, which lets clients be more intelligent about displaying them.
cap-notify Notifies clients when client capabilities become available or are no longer available.
channel-rename channel-rename [draft] Enables renaming a channel without closing it down and redirecting to a new one.
chathistory chathistory [draft] Lets clients request chat history from servers or bouncers.
chghost chghost Enables the CHGHOST message, which lets servers notify clients when another client’s username and/or hostname changes.
echo-message echo-message Notifies clients when their PRIVMSG and NOTICEs are correctly received by the server.
event-playback chathistory [draft] Lets clients request JOIN/MODE/etc messages as part of history.
extended-join extended-join Extends the JOIN message to include the account name of the joining client.
extended-monitor extended-monitor Extends the MONITOR spec to apply to more events.
invite-notify invite-notify Notifies clients when other clients are invited to common channels.
labeled-response Allows clients to correlate requests with server responses
message-redaction message-redaction [draft] Allows clients to remove messages from chat history.
message-tags message-tags Allows clients and servers to use tags more broadly
metadata-2 Metadata [draft] Lets clients store metadata about themselves with the server, for other clients to request, retrieve, and be notified later later.
monitor Monitor Lets users request notifications for when clients become online / offline.
multi-prefix multi-prefix Makes the server send all prefixes in NAMES and WHO output, in order of rank from highest to lowest.
multiline multiline [draft] Allows clients and servers to use send messages that can exceed the usual byte length limit and that can contain line breaks.
no-implicit-names no-implicit-names [draft] Disables implicit NAMES responses on JOIN.
pre-away pre-away [draft] Allows clients to send AWAY commands during connection registration.
read-marker read-marker [draft] Allows clients of the same user to synchronize read markers.
sasl SASL v3.1, SASL v3.2 Indicates support for SASL auth, a standardised way for clients to identify for an account.
server-time server-time Lets clients show the actual time messages were received by the server.
setname setname Lets clients change their realname after connecting to the server.
standard-replies standard-replies Allows servers to use standard replies more broadly
tls starttls [deprecated] Indicates support for the STARTTLS command, which lets clients upgrade their connection to use TLS encryption.
userhost-in-names userhost-in-names Extends the RPL_NAMREPLY message to contain the full nickmask (nick!user@host) of every user, rather than just the nickname.

Tags 🔗

Name Specs Description
account account-tag Contains the account name of the user that sent the attached message to the client.
batch batch Contains the ID of the batch the attached message is a part of.
bot Bot Mode Indicates this message was sent by a bot.
label Allows clients to correlate requests with server responses
msgid msgid Provides a server supplied unique message ID
multiline-concat multiline [draft] Indicates that a message is to be concatenated directly (without a line break) with the previous message in a multiline message batch.
time server-time Contains the time that the given message should be treated as happening at.
+react +react [draft] Sends a reaction to a specific sent message.
+reply +reply [draft] Marks that a given message is intended as a reply to a specific sent message.
+typing +typing Allows users to see when other users are typing.
+channel-context +channel-context [draft] Indicates the channel a private message should be displayed in.

Batches 🔗

Name Specs Description
chathistory Indicates that the given messages represent history playback from this channel.
labeled-response Allows clients to correlate requests with server responses
multiline multiline [draft] Indicates that the given messages are part of a multiline message.
netjoin Indicates that the given clients are joining as the result of a netjoin (two split servers reconnecting).
netsplit Indicates that the given clients are quitting as the result of a netsplit (two servers disconnecting).

Messages 🔗

Name Specs Description
AUTHENTICATE SASL v3.1, SASL v3.2 Used to login to a client account when SASL authentication is negotiated.
ACCOUNT account-notify Notifies clients of new logins by friends.
AWAY pre-away [draft] Not defined by IRCv3 but extended to work before connection registration, and take a special * parameter
CAP Lets clients negotiate client capabilities with servers.
CHATHISTORY chathistory [draft] Lets clients request chat history from servers or bouncers.
CHGHOST chghost Notifies clients of changed usernames and hostnames of friends
INVITE invite-notify Not defined by IRCv3 but extended to alert other clients that someone’s been invited to one of their channels.
JOIN extended-join Not defined by IRCv3 but extended to include usernames and hostnames.
METADATA Metadata [draft] Lets clients store metadata about themselves with the server, for other clients to request and retrieve later.
MONITOR Monitor Existing command which allows clients to see when specific nicknames enter or leave the network.
NAMES userhost-in-names Not defined by IRCv3 but extended to include account names.
MARKREAD read-marker [draft] Fetches or stores a read marker.
REDACT message-redaction [draft] Removes a message from the chat history.
REGISTER account-registration [draft] Lets clients register user accounts.
RENAME channel-rename [draft] Enables renaming a channel without closing it down and redirecting to a new one.
STARTTLS starttls [deprecated] Allows clients to upgrade their plaintext connections to use TLS encryption.
TAGMSG message-tags Lets clients send messages with tags but no text content.
VERIFY account-registration [draft] Lets clients verify their newly-registered accounts.
WEBIRC WebIRC Existing command which provides the real IP address of clients to the server when connecting through a gateway.
WHO WHOX Not defined by IRCv3 but extended to allow clients to request more information.

RPL_ISUPPORT 🔗

Name Specs Description
ACCOUNTEXTBAN account-extban [draft] Indicates the extended ban prefix(es) name(s) to refer to user accounts in ban/exception/invite lists.
BOT Bot Mode Indicates that clients can mark themselves as bots by setting a mode on themselves.
CLIENTTAGDENY message-tags Indicates client-only tags that are blocked or allowed by a server.
MONITOR Monitor Indicates the server supports the MONITOR command.
MSGREFTYPES chathistory [draft]
UTF8ONLY UTF8ONLY Indicates the server only accepts UTF-8 encoded messages.
WHOX WHOX Indicates the server supports the extended WHO syntax

Channel Metadata 🔗

Key Format Description
avatar URL with an optional {size} substitution denoting the size to load in pixels
https://example.com/avatar/16/asdf.jpg
Avatar that graphical clients can show alongside the channel’s name
display-name Any string
IRCv3 HQ
General Support Channel
Alternative name to use instead of a channel for display purposes. Useful for gateways to chat services that allow spaces and other characters in nicks. A channel name is required for standard protocol level stuff but can be less prominent in the UI. May contain emoji.

User Metadata 🔗

Key Format Description
avatar URL with an optional {size} substitution denoting the size to load in pixels
https://example.com/avatar/16/asdf.jpg
Avatar that graphical clients can show alongside the user’s name
bot Any string
PacketBot v1.2
JitiBot
melo3
Lets bot runners provide the name of their bot software. Setting this key identifies the client as a bot.
color HTML-style 6 hexadecimal digits
#800040
#0a00ff
A color to associate with a user. Client designers may decide which UI elements use this color (for example avatar placeholders, nicknames or whole messages).
display-name Any string
James Wheare
Posiden
ダニエル
Борис
Alternative name to use instead of a nick for display purposes. Useful for gateways to chat services that allow spaces and other characters in nicks. A nick is required for standard protocol level stuff but can be less prominent in the UI. May contain emoji.
homepage Valid URL
https://example.com/bot-info.html
URL of a webpage that contains more information about the user/bot themselves, or bot software in use.
status Any string
Working from home
Status text that can be shown for users without making them ‘away’

FAIL codes [spec] 🔗

Command Code Specs Description
ACCOUNT_REQUIRED account-registration [draft] Indicates that the client’s connection cannot proceed for lack of SASL authentication
INVALID_UTF8 UTF8ONLY Indicates that the client’s message was dropped because it contained non-UTF-8 bytes
BATCH MULTILINE_MAX_BYTES multiline [draft] Indicates that the max-bytes multiline limit is exceeded
BATCH MULTILINE_MAX_LINES multiline [draft] Indicates that the max-lines multiline limit is exceeded
BATCH MULTILINE_INVALID_TARGET multiline [draft] Indicates a mismatched PRIVMSG target within a multiline batch
BATCH MULTILINE_INVALID multiline [draft] Any other multiline error
CHATHISTORY INVALID_PARAMS chathistory [draft] Indicates that the client sent invalid parameters with their CHATHISTORY command
CHATHISTORY INVALID_TARGET chathistory [draft] Indicates that the client attempted to request CHATHISTORY from a channel or conversation that does not exist, or that they are not authorized to view
CHATHISTORY MESSAGE_ERROR chathistory [draft] Indicates that CHATHISTORY content could not be retrieved due to a server error
CHATHISTORY NEED_MORE_PARAMS chathistory [draft] Indicates that the client sent insufficient parameters with their CHATHISTORY command
CHATHISTORY UNKNOWN_COMMAND chathistory [draft] Indicates that the client sent an invalid subcommand of CHATHISTORY
JOIN CHANNEL_RENAMED channel-rename [draft] Indicates a joined channel has been renamed
NICK NICKNAME_RESERVED Indicates that the desired nickname cannot be claimed because it is reserved, either by another account or by the system
REDACT INVALID_TARGET message-redaction [draft] The client tried to remove messages from a channel they do not have access to, or does not exist
METADATA INVALID_TARGET Metadata [draft] The client requested metadata about a non-existent user
METADATA KEY_INVALID Metadata [draft] The client tried to get or set an invalid kind of metadata
METADATA KEY_NO_PERMISSION Metadata [draft] The client tried to get or set a kind of metadata it is not allowed to
METADATA KEY_NOT_SET Metadata [draft] The client tried to remove a metadata key that already does not exist
METADATA LIMIT_REACHED Metadata [draft] The client tried to set too many metadata items in a time period
METADATA RATE_LIMITED Metadata [draft] The client tried to set too many metadata items in a time period, and should retry in the given number of seconds
METADATA SUBCOMMAND_INVALID Metadata [draft] The client sent a METADATA command that was not understood
METADATA TOO_MANY_SUBS Metadata [draft] The client tried to subscribe to updates to too many kinds of metadata
METADATA VALUE_INVALID Metadata [draft] The client tried to set a metadata item to an invalid value
REDACT REDACT_FORBIDDEN message-redaction [draft] The client tried to remove messages from a channel they are not authorised to remove messages from
REDACT REDACT_WINDOW_EXPIRED message-redaction [draft] The client tried to remove a message that cannot be removed anymore
REDACT UNKNOWN_MSGID message-redaction [draft] The client tried to remove a message that does not exist, or is not available anymore
REGISTER ACCOUNT_EXISTS account-registration [draft] Indicates that the desired account name (the user’s nick) has already been registered.
REGISTER ACCOUNT_NAME_MUST_BE_NICK account-registration [draft] Indicates that the desired account name does not match the user’s current nick, when it must match.
REGISTER ALREADY_AUTHENTICATED account-registration [draft] Indicates that the client is already authenticated.
REGISTER BAD_ACCOUNT_NAME account-registration [draft] Indicates that the desired account name is invalid or otherwise restricted/disallowed.
REGISTER COMPLETE_CONNECTION_REQUIRED account-registration [draft] Indicates that the client can only use REGISTER once they are fully connected.
REGISTER INVALID_EMAIL account-registration [draft] Indicates that the server cannot send emails to the given email address.
REGISTER NEED_NICK account-registration [draft] Indicates that the REGISTER command has been sent before sending a NICK command when using the before-connect key.
REGISTER TEMPORARILY_UNAVAILABLE account-registration [draft] Indicates that the REGISTER command is temporarily unavailable.
REGISTER UNACCEPTABLE_EMAIL account-registration [draft] Indicates that the email address cannot be used for account registration.
REGISTER UNACCEPTABLE_PASSWORD account-registration [draft] Indicates that the desired password is invalid for any reason other than weakness.
REGISTER WEAK_PASSWORD account-registration [draft] Indicates that the desired password is too weak.
RENAME CHANNEL_NAME_IN_USE channel-rename [draft] Indicates that a channel name is already taken
RENAME CANNOT_RENAME channel-rename [draft] Indicates any other channel renaming failure
SETNAME CANNOT_CHANGE_REALNAME setname Indicates that the realname could not be otherwise changed
SETNAME INVALID_REALNAME setname Indicates that the new realname was invalid
VERIFY ALREADY_AUTHENTICATED account-registration [draft] Indicates that the client is already authenticated.
VERIFY INVALID_CODE account-registration [draft] Indicates that the code used by the VERIFY command is invalid or expired.
VERIFY COMPLETE_CONNECTION_REQUIRED account-registration [draft] Indicates that the client can only use VERIFY once they are fully connected.
VERIFY TEMPORARILY_UNAVAILABLE account-registration [draft] Indicates that the VERIFY command is temporarily unavailable.

WARN codes [spec] 🔗

Command Code Specs Description
INVALID_UTF8 UTF8ONLY Indicates that the client’s message was modified because it contained non-UTF-8 bytes