Channel Modes

Various modes can be set on channels. Use /mode #channel to list current channel modes.

All channel modes will be lost when a channel becomes empty. Enable PERSIST (/msg ChanServ HELP SET PERSIST) to preserve modes.

To set a mode, use /mode #channel +(mode) replacing (mode) with the letter that corresponds to the mode. To unset a mode, use /mode #channel -(mode)

Available channel modes

Mode (name) Description
Gives voice to a user and allows them to speak over +m
Gives channel halfop status to a user
Gives channel operator status to a user
(channel ban)
Prevent users from joining or speaking. Sending /mode #channel +b alone will return the current ban list. While on the channel, banned users will be unable to send to the channel or change nick.
The most common form for a ban is +b nick!user@host. The wildcards * and ? are allowed, matching zero-or-more and exactly-one characters, respectively. Bans set on IP addresses will apply even if the affected user joins with a resolved or cloaked hostname. CIDR notation is supported in bans.
The second form can be used for bans based on user data. You can append $#channel to any ban to redirect banned users to another channel.
(invite only)
Users are unable to join invite-only channels unless they are invited or match a +I entry.
(invite exemption)
Takes a ban parameter. Extbans are supported and common, e.g. for setting an exemption for a specific registered user. Matching clients do not need to be invited to join the channel when it is invite-only (+i). Only channel operators can see +I changes or see the list with /mode #channel +I.
(color block)
Blocks messages that contain color/formatting codes.
(block CTCPs)
Blocks CTCP commands (other than /me actions).
(ban exemption)
Takes one parameter, just like ban (above). Wildcards and extbans can be used, like ban. Ban exemption matches override +b and +q bans for all clients it matches, allowing the exempted user to join/speak as if they were not banned or quieted. This can be useful if it is necessary to ban an entire ISP due to persistent abuse, but some users from that ISP should still be allowed in. For example: /mode #channel +bee *!*@* *!* $a:JohnDoe would block all users from, while still allowing someuser from host3 and JohnDoe to join.
(delayed messages)
When set, users who are not voiced or higher will have to wait a certain number of seconds after joiing to speak. For example, /mode #channel +d 5 would require users to wait 5 seconds.
When set, users who are not voiced or higher will be kicked if they exceed the flood limit. If * is set, users will also be banned. Takes the format of /mode #channel +f [*]<lines>:<sec>
(channel filter)
Blocks messages matching the given glob mask. Used like /mode #channel +g *poop*.
(topic lock)
Prevents users without +h or +o from changing the topic.
Makes normal users only see themselves and channel operators while channel operators can see all users. Useful during a join flood.
Blocks users not using TLS from joining the channel.
(free invite)
Anybody in the channel may invite others (using the /invite command) to the channel.
(block caps)
Blocks messages with too many capital letters.
(delayed join)
Delays join messages from users until they speak.
(block repeats)
Allows filtering similar messages. If ~ is set, the messages will be blocked, if * is set, the user will be banned. Takes the format of /mode #channel +E [~|*]<lines>:<sec>[:<difference>][:<backlog>]
(block nick flood)
Blocks nick changes when they exceed the specified rate. Takes the format of /mode #channel +N <changes>:<sec>
(channel history)
Displays the last of lines of chat to joining users. is the maximum time to keep the history. Takes the format of /mode #channel +F <changes>:<sec>
(block rejoin)
Prevents users from rejoining a channel shortly after they are kicked. Takes the format of /mode #channel +J <seconds>.
(no knock)
Blocks /knock on the channel.
Forwards users to another channel when the user limit (set by +l) is reached.
(quiet unregistered)
Prevents unregistered users from speaking in the channel.
(no nick changes)
Prevents users from changing nicks while on the channel.
(block unregistered)
Prevents unregistered users from joining the channel.
(no notices)
Blocks /notices to the channel.
(restriction exemption)
Makes users of or higher exempt to the specified restriction. For example, /mode #channel +X flood:h would make halfops and higher immune to flood restrictions.
(join throttle)
This mode takes one parameter of the form n:t, where n and t are positive integers. Only n users may join in each period of t seconds, so with e.g. 3:10 only 3 users could join within 10 seconds. Invited users can join regardless of +j, but are counted as normal. You can use this mode to prevent bot attacks. Observe the average join rate of your channel and pick a good value for +j.
To enter the channel, you must specify the password on your /join command. Keep in mind that modes locked with ChanServ's MLOCK command can be seen by anyone recreating the channel; this includes keys. Also keep in mind that users being on the channel when +k is set will see the key as well.
(join limit)
Takes a positive integer parameter. Limits the number of users who can be in the channel at the same time.
Only opped and voiced users can send to the channel. This mode does not prevent users from changing nicks.
(prevent external send)
Users outside the channel may not send messages to it. Keep in mind that bans and quiets will not apply to external users.
Users will not be shown the channel in whois output unless they share the channel with the requestor.
This channel will not appear on channel lists or WHO or WHOIS output unless you are on it.
This channel mode will automatically op anyone based on mask. Takes the format of /mode #channel +w <mode>:<mask>. You can also specify the format of /mode #channel +w o:R:freenode to autoop anyone logged into the account freenode.

Restricted channel modes

The following channel modes can only be added by freenode staff.

Mode (Name) Description
P (Permanent) Channel does not disappear when empty.