Settings Documentation

Irssi 0.8.10 settings notes. Gathered through much effort by Rocco Caputo rcaputo at cpan dot org (aka dngor). Includes original work by Nei, and advice and guidance from #irssi.

This is not an attempt to document Irssi completely. It should be used along with the documents at Documentation for more complete understanding of how irssi works. For example, the startup HOWTO and tips/tricks show sample uses for these settings, including some very useful stuff.

We respect the work of others. Parts of this document have been collected from other locations. Wherever possible, we have made every effort to locate and attribute the original authors. Please let us know if we’ve overlooked you.

We ask the same respect in return. The Copyright and license notices are at the end.

2008-Apr-20: (dngor)

Added a FAQ.

2005-Dec-08: (dngor)

Switched to Creative Commons’ ShareAlike license. We’d like to thank Coekie [email protected] for pointing out out that the previous license was weak, and that he could just alter it and redistribute our work without attribution.

Minor revisions throughout a major portion of the document.

2005-Dec-07: (Nei)

Set example values to default values where appropriate. Add new settings from 0.8.10. Sorted settings according to my local /set output.

(dngor) Marked the 0.8.10 settings as coming from that version.

2005-Dec-01: (Nei)

Updated some links. Renamed term_type.

2005-06-05: (dngor)

Tweaked an example to use the same command the surrounding text said it was.

2005-05-04: (dngor)

Not terribly significant. All edits happened in the introduction.


completion_strict = OFF

When on, nicknames are matched strictly. That is, the partial nickname you enter must be at the beginning of a nickname in one of irssi’s lists.

When off, irssi will first try a strict match. If a strict match can’t be found, irssi will look for nicknames that match when their leading non-alphanumeric characters are removed. For example:

vis: hello

With strict completion on, it will only match nicknames beginning with vis. With strict completion off, it may match visitors or visitors or [visitors], and so on.

completion_keep_privates = 10

Irssi keeps a list of nicknames from private messages to search during nick completion. This setting determines how many nicknames are held.

TODO - Is this list maintained by people who privately message you, who you privately message, or both?

completion_char = :

The text that irssi puts after a tab-completed nickname, or that it uses to detect nicknames when you have completion_auto turned on. Some people alter this to colorize the completion character, creating the oft-dreaded bold colon.

completion_auto = OFF

Tell irssi to detect incomplete nicknames in your input and look up their completions automatically. Incomplete nicknames are detected when you input text that matches /^(\S+)${completion_character}/. For example:

vis: hello

will be expanded to

visitors: hello

when you press enter. So will:


This will eventually bite you.

completion_nicks_lowercase = OFF

When enabled, irssi forces completed nicknames to lowercase. Manually typed nicknames retain their case.

completion_keep_publics = 50

Irssi keeps a list of nicknames from public messages to search during nick completion. This setting determines how many nicknames are held.

TODO - Is this list maintained by watching who you speak to, who speak to you, or both?


dcc_autorename = OFF

Turn on this setting to automatically rename received files so they don’t overwrite existing files.

I think this setting may thwart dcc_autoresume, since the auto-resume feature looks for existing filenames when resuming. Auto-renaming downloads makes sure that filenames never conflict, so resuming is not possible.

dcc_autoresume = OFF

When on, dcc_autoresume will cause irssi to look for existing files with the same name as a new DCC transfer. If a file already exists by that name, irssi will try to resume the transfer by appending any new data to the existing file.

I think this option clashes with dcc_autorename. See dcc_autorename for more information.

Dcc_autoresume is ignored if dcc_autoget is off.

dcc_timeout = 5min

How long to keep track of pending DCC requests. Requests that do not receive responses within this time will be automatically canceled.

dcc_autoget = OFF

Turn DCC auto-get on or off. When on, irssi will attempt to auto-get files sent to you.

This feature can be abused, so it is usually off by default. If you enable it, consider also setting dcc_autoget_masks and dcc_autoget_max_size to make this feature more secure.

dcc_upload_path = ~

The path where you keep public files available to send via DCC.

dcc_autoget_masks =

Set dcc_autoget_masks with user masks to automatically accept files sent to you via DCC. When unset, irssi’s auto-get settings will work for everyone who attempts to send you files.

This setting is only significant if dcc_autoget is ON.

dcc_autoget_max_size = 0k

Set to nonzero to limit the size of files that irssi will auto-get.

Note: Because of the way DCC works, someone may advertise a file at once size but try to send you something larger. According to src/irc/dcc/dcc-autoget.c, this only filters the request based on the advertised size.

This setting is only significant if dcc_autoget is ON.

dcc_send_replace_space_with_underscore = OFF

When enabled, irssi will replace spaces with underscores in the names of files you send. It should only be necessary when sending files to clients that don’t support quoted filenames, or if you hate spaces in filenames.

dcc_own_ip =

Set dcc_own_ip to force irssi to always send DCC requests from a particular virtual host (vhost). Irssi will always bind sockets to this address when answering DCC requests. Otherwise irssi will determine your IP address on its own.

dcc_download_path = ~

The path to a directory where irssi will store DCC downloads.

dcc_file_create_mode = 644

The mode in which new files are created.

644 is read/write by you, and readable by everybody else.  600
is read/write by you, nobody else can read or write.

dcc_port = 0

The smallest port number that irssi will use when initiating DCC requests. Irssi picks a port at random when this is set to zero.

dcc_port can be two ports, separated by a space. In that case, irssi will pick a port between the two numbers, inclusively. For example:

/set dcc_port 10000 20000

dcc_autochat_masks =

Set dcc_autochat_masks with user masks to auto-accept chat requests from. When unset, irssi’s auto-accept settings work for everyone who tries to DCC chat you. The drawbacks can range from annoying through downright dangerous. Use auto-accept with care.

dcc_mirc_ctcp = OFF

Tells irssi to send CTCP messages that are compatible with mIRC clients. This lets you use /me actions in DCC chats with mIRC users, among other things.

dcc_autoaccept_lowports = OFF

When this setting is OFF, irssi will not auto-accept DCC requests from privileged ports (those below 1024) even when auto-accept is otherwise on.


autoignore_time = 5min

Irssi can auto-ignore people who are flooding. autoignore_time sets the amount of time to keep someone ignored. Irssi will automatically unignore them after this period of time has elapsed.

autoignore_level =

The type or types of messages that will trigger auto-ignore.

flood_max_msgs = 4

flood_timecheck = 8

Irssi will treat text as flooding if more than flood_max_msgs messages are received during flood_timecheck seconds. In the case above, five or more messages matching autoignore_level over the course of eight seconds will trigger flood protection. See autoignore_time to set the amount of time someone will remain ignored if it’s determined that they’re flooding.

cmds_max_at_once = 5

How many commands you can send immediately before server-side flood protection starts.

IRC servers also perform flood checking, and they will gleefully disconnect you if you are abusing them. The cmds_max_at_once setting lets irssi know how many rapid messages it can get away with while remaining under the IRC server’s radar.

cmd_queue_speed = 2200msec

The time to wait between sending commands to an IRC server. Used to prevent irssi from flooding you off if you must auto-kick/ban lots of people at once.

max_ctcp_queue = 5

The maximum number of pending CTCP requests to keep. Requests beyond max_ctcp_queue will be discarded.


scrollback_save_formats = OFF

Turn on to save formats in the scrollback buffer, so that old messages are not changed by new themes. Turn off so the current theme applies to your entire scrollback buffer.

Setting this to OFF doesn’t seem to do anything, however.

scroll_page_count = /2

How many pages to scroll the scrollback buffer when pressing page-up or page-down. Expressed as a number of lines, or as a fraction of the screen:

/2  = Scroll half a page.
.33 = Scroll about a third of a page.
4   = Scroll four lines.

window_history = OFF

When turned ON, command history will be kept per-window. When off, irssi uses a single command history for all windows.

max_command_history = 100

The number of lines of your own input to keep for recall.

scrollback_time = 1day

Keep at least scrollback_time worth of messages in the scrollback buffer, even if it means having more than scrollback_lines lines in the buffer.

rawlog_lines = 200

Irssi’s raw log is a buffer of raw IRC messages. It’s used for debugging irssi and maybe some other things. This setting tells irssi how many raw messages to keep around.

scrollback_lines = 500

The maximum number of messages to keep in your scrollback history. Set to 0 if you don’t want to limit scrollback by a line count. The scrollback_time setting will be used even if scrollback_lines is zero.

Setting scrollback_lines to zero also seems to thwart the scrollback_burst_remove optimization.

scrollback_burst_remove = 10

This is a speed optimization: Don’t bother removing messages from the scrollback buffer until the line limit has been exceeded by scrollback_burst_remove lines. This lets irssi do its memory management in chunks rather than one line at a time.

TODO - Is this right?


log_close_string = --- Log closed %a %b %d %H:%M:%S %Y

The message to log when logs are closed.

See Appendix C for the meanings of Irssi’s time format codes.

log_timestamp = %H:%M

The time format for log timestamps.

See Appendix C for the meanings of Irssi’s time format codes.

autolog_colors = OFF

Whether to save colors in autologs. Colors make logs harder to parse and grep, but they may be vital for channels that deal heavily in ANSI art, or something.

autolog_level = all -crap -clientcrap -ctcps

The types of messages to auto-log. See the autolog setting.

awaylog_colors = ON

Whether to store color information in /away logs.

log_day_changed = --- Day changed %a %b %d %Y

The message to log when a new day begins.

See Appendix C for the meanings of Irssi’s time format codes.

autolog = OFF

Automatically log everything, or at least the types of messages defined by autolog_level.

autolog_path = ~/irclogs/$tag/$0.log

The path where autolog saves logs.

See Appendix B for Irssi’s special variables. Irssi’s special variables can be used to do fancy things like daily log rotations.

awaylog_level = msgs hilight

The types of messages to log to awaylog_file while you’re away.

awaylog_file = ~/.irssi/away.log

Where to log messages while you’re away.

I assume irssi’s special variables also work here. See Appendix B for more information about them.

log_theme =

Logs can have a different theme than what you see on the screen. This can be used to create machine-parseable versions of logs, for example.

log_create_mode = 600

The permissions to use when creating log files.

600 is read/write by you, but nobody else can see them. A sensible default mode. It can also be set to 644 if you want the rest of the world to read your logs.

log_open_string = --- Log opened %a %b %d %H:%M:%S %Y

The message to log when a log is opened.

See Appendix C for the meanings of Irssi’s time format codes.


show_names_on_join = ON

Display the list of names in a channel when you join that channel. It’s generally recommended, but you can disable it for pathologically huge channels or in case you just don’t care.

window_check_level_first = OFF

window_default_level = NONE

From irssi’s ChangeLog:

Added /SET window_check_level_first and /SET window_default_level. This allows you to keep all messages with specific level in it’s own window, even if it was supposed to be printed in channel window. patch by [email protected]

Try to choose better the window where we print when matching by level and multiple windows have a match. Should fix problems with query windows with a default msgs window + /SET window_check_level_first ON.

Wouter Coekaerts has made a nice explanation about this, see «»

emphasis = ON

Enable or disable real underlining and bolding when someone says bold or underlined.

autocreate_split_windows = OFF

Automatically created windows will be created as split windows with this setting on.

Split windows are the kind where multiple windows are on one screen.

beep_msg_level =

Beep when messages match this level mask.

actlist_moves = OFF

When on, irssi rearranges the activity list so windows with more recent activity appear first. Otherwise windows are listed in numeric order.

hilight_nick_matches = ON

Tell irssi whether it should automatically highlight text that matches your nickname.

emphasis_multiword = OFF

Turn on to allow more than one word bold and multiple underlined words. Used in conjunction with the emphasis setting.

hide_colors = OFF

Hide mIRC and ANSI colors when turned on. This can be used to eliminate angry fruit salad syndrome in some channels.

names_max_width = 0

Maximum number of columns to consume with a /names listing. Overrides names_max_columns if non-zero. Set to 0 for as many as fit in your terminal.

Some terminals interpret bright background colors as blinking text. mIRC doesn’t support blinking at all. This fixes the blinky terminals by replacing high colors with their low equivalents.

From irssi’s ChangeLog:

/SET mirc_blink_fix - if ON, the bright/blink bit is stripped
from MIRC colors. Set this to ON, if your terminal shows bright
background colors as blinking.

autoclose_windows = ON

Automatically close windows when nobody is in them. This keeps your window list tidy, but it means that query windows may rearrange as people log off then privately message you later.

bell_beeps = OFF

Tell irssi whether bell characters (chr 7, ^G) should actually cause beeps.

According to Nei, bell_beeps seems to cover the case where a beep is caused by a printed message/format. It’s unrelated to activity beeps.

hide_server_tags = OFF

Server tags are prefixes to some messages (server messages?) that let you know which server the message came from. They’re often considered noisy, so this option lets you hide them.

show_nickmode = ON

Prefix nicknames with their channel status:

voiced + half-op % op @

theme = default

Irssi supports themes that can change most of the client’s look and feel. This setting lets you name the theme you wish to use.

timestamps = ON

Turn timestamps on or off. When off, not even timestamp_level will trigger them.

indent = 10

How many columns to indent subsequent lines of a wrapped message.

Attention: This can be overwritten by themes.

timestamp_format = %H:%M

How to format the time used in timestamps.

See Appendix C for the meanings of Irssi’s time format codes.

activity_msg_level = PUBLIC

Flag a channel as active when messages of this type are displayed there.

Always print the channel with the nickname (like nick:channel) even if the message is from the channel you currently have active.

autoclose_query = 0

Automatically close query windows after autoclose_query seconds of inactivity. Setting autoclose_query to zero will keep them open until you decide to close them yourself.

activity_hide_targets =

Sometimes you don’t care at all about a channel’s activity. This can be set to a list of channels that will never appear to be active.

use_msgs_window = OFF

Use a single window for all private messages. This setting only makes sense if automatic query windows is turned off.

timestamp_timeout = 0

The amount of time to leave timestamps on after a timestamp_level message triggered timestamping. Useful for people who think timestamps are noisy but would like timestamps for important conversations.

use_status_window = ON

Create a separate window for all server status messages, so they don’t clutter up your channels.

windows_auto_renumber = ON

Closing windows can create gaps in the window list. When windows_auto_renumber is turned on, however, windows are shifted to lower numbers in the list to fill those gaps.

show_nickmode_empty = ON

If a person has no channel modes, prefix their nickname with a blank space. This keeps nicknames of normal people aligned with those of voiced, half-opped, and opped people.

beep_when_away = ON

Should beeps be noisy when you’re /away? Great for people who sleep near their terminals or keep irssi running at work. :)

timestamp_level = ALL

Types of messages to prefix a timestamp to. Useful for explicit or automatic timestamps.

Once timestamping is temporarily turned on, it may stay on for timestamp_timeout seconds.

indent_always = OFF

Should we indent the long words that are forcibly wrapped to the next line? This can break long words such as URLs by inserting spaces in the middle of them.

Turn off if you would like to copy/paste or otherwise use URLs from your terminal.

hilight_color = %Y

The default color for /hilight.

See Appendix D for Irssi’s color codes.

emphasis_replace = OFF

If emphasis is turned on, the * or _ characters indicating emphasis will be removed when the word is made bold or underlined. Some people find this looks cleaner.

See the emphasis setting for more information.

hilight_level = PUBLIC DCCMSGS

The types of messages that can be highlighted.

hilight_act_color = %M

The color to use to highlight window activity in the status bar. That’s the section that shows [Act: …].

See Appendix D for Irssi’s color codes.

expand_escapes = OFF

Detect escapes in input, and expand them to the characters they describe. For example


Is literally ‘’ and ‘t’ when expand_escapes is off, but it’s the tab character (chr 9) when expand_escapes is on.

autocreate_windows = ON

When on, create new windows for certain operations, such as /join. When off, everything is just dumped into one window.

autocreate_query_level = MSGS DCCMSGS

Automatically create query windows when receiving these types of messages.

term_auto_detach = OFF

Automatically detach from the terminal when it disappears.

This doesn’t actually work. Or if it does, there’s currently no way to re-attach to the terminal. It may be useful for setting up daemons where you don’t want to run nohup or screen, however.

hide_text_style = OFF

Hide bold, blink, underline, and reverse attributes.

whois_hide_safe_channel_id = ON

Introduced in 0.8.10.

Hides the unique id of !channels in /whois output (IRCNet/irc2 networks only).

E.g. shows !channel instead of !12345channel

names_max_columns = 6

Maximum number of columns to use for /names listing. Also shown on channel join. Set to 0 for as many as fit in your terminal.

chanmode_expando_strip = OFF

When on, $M will not return mode parameters.

This means for example that the channel limit and channel key won’t be shown in your statusbar (a common place where $M is used) (but also not in all other places that refer to $M for whatever reason).

show_quit_once = OFF

When turned on, a quit message will only be shown once. Otherwise it will be displayed in every window you share with the quitter.

show_away_once = ON

When on, only show /away messages in the window that’s currently open. Otherwise the message will appear in every window you share with the away person.

autocreate_own_query = ON

Turn on to automatically create query windows when you /msg someone.

term_charset = US-ASCII

Sets your native terminal character set. Irssi will take this into consideration when it needs to delete multibyte characters, for example.

A common value is utf-8 for Unicode/UTF-8 enabled terminals.

TODO - Does this still support Chinese terminal emulators? (Used to be term_type = big5 in old Irssi.)

activity_hilight_level = MSGS DCCMSGS

There are times when you want to highlight channel activity in a window. Like when someone sends you a private message, or a DCC message. Activity_highlight_level sets the kind of messages you think are extra important.

autostick_split_windows = ON

TODO - What is this?

Nei says: Setting split windows to stick means that their content won’t change. Best thing to come up with a viable description might be if you tried it.

f0rked has written an excellent guide to irssi’s split windows: «»

query_track_nick_changes = ON

Query windows will track nick changes when this is on. That is, it looks for a matching [email protected] if a message comes in with an unknown nick.

TODO - Really?

scroll = ON

Set scroll ON to have irssi scroll your screen when it fills up. Set it OFF to require manual scrolling.

Warning: If set to OFF, this will stop scrolling in all windows and not reenable scrolling even if you set it back to ON. (You need to manually scroll to the bottom in each window first.)

window_auto_change = OFF

Turn this on to automatically switch to newly-created windows. This may cause you to misdirect messages, so be careful.

beep_when_window_active = ON

Should beeps be noisy in a window you’re watching? Perhaps not, since you are theoretically watching that window. You ARE watching it, aren’t you?

activity_hide_level =

Message levels that don’t count towards channel activity. That is, channels won’t be marked as active if messages of these types appear.

show_own_nickchange_once = OFF

Squash your own nick-change messages so they appear only once, not once in every window you have on that network.

reuse_unused_windows = OFF

When set on, irssi will reuse unused windows when looking for a new window to put something in. Otherwise unused windows are ignored, and new ones are always created.

colors = ON

Enable or disable colors.

term_force_colors = OFF

Always display colors, even when the terminal type says colors aren’t supported. Useful for working around really dumb terminals.

autofocus_new_items = ON

Switch the focus to a new item when it’s created. This may be disturbing at first when combined with query window auto-creation, and it may be downright dangerous if it causes you to accidentally misdirect messages.


opermode =

When set, irssi will set your modes to match opermode when you /oper up. For example, you might

/set opermode +s 1048575

channel_max_who_sync = 1000

Introduced in 0.8.10.

The maximum number of users that may be in a channel for Irssi to issue a

/who #channel

in order to obtain the hostmasks of every participant.

If this is set too high, IRC servers might kick you for Sendq exceeded.

recode_autodetect_utf8 = ON

Introduced in 0.8.10.

Irssi’s recode system is broken. This tries to cover up for it by leaving messages intact that seem to decode fine as Unicode UTF-8.

lag_check_time = 1min

How long to wait between active lag checks. Irssi will passively check for lag when you’re active, but sometimes it’s necessary to actively check. This is the minimum amount of time between active checks.

quit_message = leaving

Default message to send when /quit’ting.

paste_detect_time = 5msecs

Irssi will detect pastes when your input has less than this much time between lines.

notify_check_time = 1min

How often to check for someone online when /notify is on.

help_path = /usr/local/share/irssi/help

One or more paths where irssi will look for its help database. Multiple paths are separated by :. It’s very important that this is correct.

ctcp_userinfo_reply = $Y

The reply to send when someone queries your user information. By default, it’s $Y, which is defined by the real_name setting.

See «» for more special variables you can use.

override_coredump_limit = ON

Allow really really big coredumps if this is set on.

join_auto_chans_on_invite = ON

Automatically join a channel when invited to it.

TODO - Does this only work with channels on the /channel add -auto list?

netjoin_max_nicks = 10

When non-zero, limits the number of nicknames to display during netjoins.

TODO - Is this correct?

paste_join_multiline = ON

Introduced in 0.8.10.

Irssi will try to concatenate multiple lines into a single lined message when these lines have the same indentation level and look like they were copied out of Irssi.

It’s useful for quoting e-mail or other large-text messages, but it will probably bite you if you try to pasted indented text, such as code listings. Irssi will join multiple lines of code, destroying any structure you wanted to preserve.

channel_sync = ON

Set whether irssi should synchronize a channel on join. When enabled, irssi will gather extra information about a channel: modes, who list, ban list, ban exceptions, and invite list.

paste_detect_keycount = 5

Introduced in 0.8.10.

TODO - What’s this?

recode_fallback = CP1252

Introduced in 0.8.10.

If you have Irssi compiled with recode support and Irssi believes that a message you received did not recode properly in your terminal default character set (or the specified one), it will recode the message using this character set.

(CP1252, the irssi default, is the Microsoft(R) Windows default character set for Western Europe.)

Also see /help recode for more details about recoding.

notify_idle_time = 1hour

Irssi will notify you when someone you’re watching becomes idle for this long.

massjoin_max_joins = 3

If nonzero, detect mass joins. A mass join is when someone joins more than massjoin_max_joins per massjoin_max_wait seconds.

TODO - Or is this when more than massjoin_max_joins people join per massjoin_max_wait seconds, regardless of the user mask?

write_buffer_size = 0

Amount of text (logs, etc) to buffer in memory before writing to disk. Useful for minimizing disk access.

write_buffer_timeout = 0

Amount of time to keep text in memory. A buffer is flushed to disk if the text in it is this old, even if the buffer isn’t full.

Useful in conjunction with really large write_buffer_size values, to prevent a lot of text from being lost if irssi crashes or is killed.


TODO - What’s this?

recode = ON

Introduced in 0.8.10.

This setting allows you to disable irssi’s recode functionality, if you prefer your messages not being messed with.

ban_type = normal

The default ban type to use: normal, user, host, domain, custom? See /help ban for a description of ban types.

lag_max_before_disconnect = 5min

Irssi detects your lag and will reconnect you automatically if your lag exceeds this value.

part_message =

Default message to send when parting a channel.

auto_whowas = ON

Automatically try /whowas if you /whois someone who isn’t online.

paste_verify_line_count = 5

Ask you whether you meant to paste something if it’s longer than this many lines.

max_wildcard_modes = 6

When set nonzero, don’t mass op/deop/kick more than this many people. Commands that let you do things to other nicks can take wildcards. For example

/kick floodbot* flooding

would kick everybody whose nickname began with floodbot. Unless there were more than max_wildcard_modes of them.

This setting prevents you from embarassment like:

/kick *

You can specify -yes if you really want to do it:

/kick -yes *

hide_netsplit_quits = ON

Don’t display quit messages if they’re the product of a netsplit. Some people find this helpful, while others find it creepy.

knockout_time = 5min

Knockouts are temporary kickbans. Knockout_time is the default amount of time before each temporary ban is lifted.

See /help knockout

massjoin_max_wait = 5000

The amount of time to watch for mass-joins.

I’m not sure which unit of time is used to measure massjoin_max_wait.

lag_min_show = 1sec

Lag is a part of life on IRC. Don’t bother displaying lag that’s below this threshold, presumably because you consider it to be insignificant.

wall_format = [Wall/$0] $1-

Format for wall messages.

netsplit_nicks_hide_threshold = 15

Limit the number of nicks to display during netsplits to this many. Or don’t limit them at all, if this is set to 0.

settings_autosave = ON

Automatically save your settings when you quit irssi, or once per hour, rather than waiting for you to /save them yourself.

translation =

Set the translation table to use. See Appendix E.

TODO - Does this still work even?

group_multi_mode = ON

Consolidate multiple consecutive channel modes into a single message. This will delay the display of channel modes for a short period of time while it waits to see if multiple modes are occurring.

recode_out_default_charset =

Introduced in 0.8.10.

The outgoing character set you want your messags to be recoded into, if different from your term_charset.

cmdchars = /

Prefix characters that tell irssi that your input is a command rather than chat text.

notify_whois_time = 5min

How often to check /whois on a user who’s online, to see if their /away or idle status changes.

kick_first_on_kickban = OFF

Kickban will normally ban first, then kick. Turn this option on to reverse the situation, which can create a race condition if the user rejoins between your kick and the subsequent ban.

recode_transliterate = ON

Introduced in 0.8.10.

If enabled, irssi tells iconv to try and replace characters that don’t recode well with similar looking ones that exist in the target character set.

If disabled, irssi replaces the character it could not recode with a ? instead.

usermode = +i

Default modes to set yourself once you’ve connected to a server.

ignore_signals =

Operating system signals to ignore. May be zero or more of: int, quit, term, alrm, usr1, and usr2.

netsplit_max_nicks = 10

When non-zero, limits the number of nicknames to display during netsplits.

TODO - Is this correct?

ctcp_version_reply = irssi v$J - running on $sysname $sysarch

What to tell someone when they query your client’s version.

Some people consider announcing your client and operating system type and version to be a security hole. Those people change this setting.


perl_use_lib = /usr/local/perl-582/i386-freebsd

Which perl library to use, in case you have many to choose from.


use_proxy = OFF

Tell irssi whether it should connect through a proxy server.

proxy_string = CONNECT %s %d

How to tell your proxy to initiate a connection.

I haven’t found documentation for the codes used in proxy_string.

TODO - How do you tell irssi to connect through a proxy that requires authentication?

proxy_string_after =

Text to send after setting NICK and USER through a proxy.

proxy_address =

proxy_port = 6667

The address and port of your IRC proxy.

proxy_password =

The password to use if the proxy requires authentication.


server_connect_timeout = 5min

How long to wait for a connection to be established.

Be careful using very short timeouts. Servers may recognize the activity as abuse.

resolve_reverse_lookup = OFF

When connecting, resolve the server’s IP address back into its hostname. Probably useful for figuring out exactly which server you’re on after resolving a round-robin host.

ssl_cacert =

ssl_cafile =

ssl_cert =

ssl_pkey =

ssl_verify = OFF

use_ssl = OFF

SSL options. Set the certificates and keys, and stuff you’ll use to connect to a secure server.

TODO - Does verify work? If so, how?

hostname =

Your source hostname. Useful when you’re on a multi-host system, and you want to look like you’re connecting from a particular host.

This setting tells irssi which IP to bind to.

user_name = $IRCUSER

Set your system user name. This is used in times when you don’t have working ident.

resolve_prefer_ipv6 = OFF

Turn this option on to prefer using an ipv6 address when a host has both ipv4 and ipv6 addresses.

nick = $IRCNICK

Your main, preferred nick.

alternate_nick =

An alternate nickname to use if your preferred one is already taken.

real_name = $IRCNAME

Your real name.

skip_motd = OFF

Turn this on to avoid displaying the server’s message of the day. Messages of the day are often noisy, and few people actually read them, but they contain important information amongst the ASCII art and song lyrics. :)

server_reconnect_time = 5min

How long to wait between reconnects to the same server. Some servers will k-line you if you reconnect too quickly, so be careful setting this value lower.


channels_rejoin_unavailable = ON

Attempt to rejoin a channel if it’s temporarily unavailable. Channels may be unavailable during netsplits.

Appendix A: Levels

Levels are categories of messages that can be ignored or otherwise matched. Categories may be combined. For example, you may want to ignore only private messages (MSG) from someone, or you might really hate them and ignore MSGS and PUBLIC. Or even ALL.

See /help levels for a better, probably more current explanation of the different kinds of levels irssi supports. Meanwhile:

CRAP          - ?
MSGS          - Match messages privately sent to you.
PUBLIC        - Match messages sent to public channels.
NOTICES       - Match NOTICE messages.
SNOTES        - Match server notices.
CTCPS         - Match CTCP messages.
ACTIONS       - Match CTCP actions.
JOINS         - Match join messages.
PARTS         - Match part messages.
QUITS         - Match quit messages.
KICKS         - Match kick messages.
MODES         - Match mode changes.
TOPICS        - Match topic changes.
WALLOPS       - Match wallops.
INVITES       - Match invite requests.
NICKS         - Match nickname changes.
DCC           - DCC related messages.
DCCMSGS       - Match DCC chat messages.
CLIENTNOTICE  - Irssi's notices.
CLIENTCRAP    - Miscellaneous irssi messages.
CLIENTERROR   - Irssi's error messages.

ALL           - All previous message levels combined.

HILIGHT       - Match highlighted messages.
NOHILIGHT     - Don't check a message's highlighting.
NO_ACT        - Don't trigger channel activity.
NEVER         - Never ignore, never log.
LASTLOG       - Never ignore, never log.

Appendix B: Special Variables and Expandos

Several settings allow special variables. These variables will be replaced by the text they represent at the time they’re used. Not at the time you set the setting!

They are mostly used for formatting text in themes.


NOTE: This is just a slightly modified file taken from EPIC's help.

Special Variables and Expandos

Irssi supports a number of reserved, dynamic variables, sometimes
referred to as expandos.  They are special in that the client is
constantly updating their values automatically.  There are also
numerous variable modifiers available.

   Modifier          Description
   $variable         A normal variable, expanding to the first match
                     | of:
                     |  1) an internal SET variable
                     |  2) an environment variable
   $[num]variable    Expands to the variables value, with 'num' width.
                     | If the number is negative, the value is
                     | right-aligned.
                     | The value is padded to meet the width with the
                     | character given after number (default is
                     | space).
                     | The value is truncated to specified width
                     | unless '!' character precedes the number. If
                     | '.' character precedes the number the value
                     | isn't padded, just truncated.
   $#variable        Expands to the number of words in $variable. If
                     | $variable is omitted, it assumes $*
   [email protected]        Expands to the number of characters in $variable.
                     | if $variable is omitted, it assumes $*
   $($subvariable)   This is somewhat similar to a pointer, in that
                     | the value of $subvar is taken as the name of
                     | the variable to expand to.  Nesting is allowed.
   ${expression}     Permits the value to be embedded in another
                     | string unambiguously.
   $!history!        Expands to a matching entry in the client's
                     | command history, wildcards allowed.

Whenever an alias is called, these expandos are set to the arguments
passed to it.  If none of these expandos are used in the alias, or
the $() form shown above, any arguments passed will automatically be
appended to the last command in the alias.

   Expando   Description
   $*        expands to all arguments passed to an alias
   $n        expands to argument 'n' passed to an alias (counting from
   $n-m      expands to arguments 'n' through 'm' passed to an alias
   $n-       expands to all arguments from 'n' on passed to an alias
   $-m       expands to all arguments up to 'm' passed to an alias
   $~        expands to the last argument passed to an alias

These variables are set and updated dynamically by the client.  The
case of $A .. $Z is important.

   Variable   Description
   $,         last person who sent you a MSG
   $.         last person to whom you sent a MSG
   $:         last person to join a channel you are on
   $;         last person to send a public message to a channel you
              are on
   $A         text of your AWAY message, if any
   $B         body of last MSG you sent
   $C         current channel
   $D         last person that NOTIFY detected a signon for
   $E         idle time
   $F         time client was started, $time() format
   $H         current server numeric being processed
   $I         channel you were last INVITEd to
   $J         client version text string
   $K         current value of CMDCHARS
   $k         first character in CMDCHARS
   $L         current contents of the input line
   $M         modes of current channel, if any
   $N         current nickname
   $O         value of STATUS_OPER if you are an irc operator
   $P         if you are a channel operator in $C, expands to a '@'

   $Q         nickname of whomever you are QUERYing
   $R         version of current server
   $S         current server name
   $T         target of current input (channel or nick of query)
   $U         value of cutbuffer
   $V         client release date (format YYYYMMDD)
   $W         current working directory
   $X         your /userhost $N address ([email protected])
   $Y         value of REALNAME
   $Z         time of day (hh:mm, can be changed with /SET
   $$         a literal '$'

   $versiontime         prints time of the irssi version in HHMM
   $sysname             system name (eg. Linux)
   $sysrelease          system release (eg. 2.2.18)
   $sysarch             system architecture (eg. i686)
   $topic               channel topic
   $usermode            user mode
   $cumode              own channel user mode
   $cumode_space        like $cumode, but gives space if there's no
   $tag                 server tag
   $chatnet             chat network of server
   $winref              window reference number
   $winname             window name
   $itemname            like $T, but use item's visible_name which may
                        be different (eg. $T = !12345chan, $itemname =

For example, assume you have the following alias:

   alias blah msg $D Hi there!

If /blah is passed any arguments, they will automatically be appended
to the MSG text.  For example:

   /blah oops                      /* command as entered */
   Hi there! oops                /* text sent to $D */

Another useful form is ${}.  In general, variables can be embedded
inside strings without problems, assuming the surrounding text could
not be misinterpreted as part of the variable name.  This form
guarantees that surrounding text will not affect the expression's
return value.

   /eval echo foo$Nfoo             /* breaks, looks for $nfoo */
   /eval echo foo${N}foo           /* ${N} returns current nickname */
   fooYourNickfoo                  /* returned by above command */

Appendix C: Time Formats

Messages that describe times are formatted according to the strftime() function in C. According to FreeBSD’s strftime() man page, parts of the format represented with % and a letter code are expanded in the following ways.

%A    is replaced by national representation of the full weekday name.

%a    is replaced by national representation of the abbreviated
       weekday name.

%B    is replaced by national representation of the full month name.

%b    is replaced by national representation of the abbreviated month

%C    is replaced by (year / 100) as decimal number; single digits are
       preceded by a zero.

%c    is replaced by national representation of time and date.

%D    is equivalent to ``%m/%d/%y''.

%d    is replaced by the day of the month as a decimal number (01-31).

%E* %O*
       POSIX locale extensions.  The sequences %Ec %EC %Ex %EX %Ey %EY
       %Od %Oe %OH %OI %Om %OM %OS %Ou %OU %OV %Ow %OW %Oy are
       supposed to provide alternate representations.

       Additionly %OB implemented to represent alternative months
       names (used standalone, without day mentioned).

%e    is replaced by the day of month as a decimal number (1-31);
       single digits are preceded by a blank.

%F    is equivalent to ``%Y-%m-%d''.

%G    is replaced by a year as a decimal number with century.  This
       year is the one that contains the greater part of the week
       (Monday as the first day of the week).

%g    is replaced by the same year as in ``%G'', but as a decimal
       number without century (00-99).

%H    is replaced by the hour (24-hour clock) as a decimal number

%h    the same as %b.

%I    is replaced by the hour (12-hour clock) as a decimal number

%j    is replaced by the day of the year as a decimal number

%k    is replaced by the hour (24-hour clock) as a decimal number
       (0-23); single digits are preceded by a blank.

%l    is replaced by the hour (12-hour clock) as a decimal number
       (1-12); single digits are preceded by a blank.

%M    is replaced by the minute as a decimal number (00-59).

%m    is replaced by the month as a decimal number (01-12).

%n    is replaced by a newline.

%O*   the same as %E*.

%p    is replaced by national representation of either ante meridiem
       or post meridiem as appropriate.

%R    is equivalent to ``%H:%M''.

%r    is equivalent to ``%I:%M:%S %p''.

%S    is replaced by the second as a decimal number (00-60).

%s    is replaced by the number of seconds since the Epoch, UTC (see

%T    is equivalent to ``%H:%M:%S''.

%t    is replaced by a tab.

%U    is replaced by the week number of the year (Sunday as the first
       day of the week) as a decimal number (00-53).

%u    is replaced by the weekday (Monday as the first day of the week)
       as a decimal number (1-7).

%V    is replaced by the week number of the year (Monday as the first
       day of the week) as a decimal number (01-53).  If the week
       containing January 1 has four or more days in the new year,
       then it is week 1; otherwise it is the last week of the
       previous year, and the next week is week 1.

%v    is equivalent to ``%e-%b-%Y''.

%W    is replaced by the week number of the year (Monday as the first
       day of the week) as a decimal number (00-53).

%w    is replaced by the weekday (Sunday as the first day of the week)
       as a decimal number (0-6).

%X    is replaced by national representation of the time.

%x    is replaced by national representation of the date.

%Y    is replaced by the year with century as a decimal number.

%y    is replaced by the year without century as a decimal number

%Z    is replaced by the time zone name.

%z    is replaced by the time zone offset from UTC; a leading plus
       sign stands for east of UTC, a minus sign for west of UTC,
       hours and minutes follow with two digits each and no delimiter
       between them (common form for RFC 822 date headers).

%+    is replaced by national representation of the date and time (the
       format is similar to that produced by date(1)).

%%    is replaced by `%'.

Appendix D: Color Codes

Irssi defines codes to represent colors. They work like the strftime() codes in Appendix C.


Irssi's colors that you can use in text formats, hilights, etc. :

                        text            text            background
%k      %K      %0      black           dark grey       black
%r      %R      %1      red             bold red        red
%g      %G      %2      green           bold green      green
%y      %Y      %3      yellow          bold yellow     yellow
%b      %B      %4      blue            bold blue       blue
%m      %M      %5      magenta         bold magenta    magenta
%p      %P              magenta (think: purple)
%c      %C      %6      cyan            bold cyan       cyan
%w      %W      %7      white           bold white      white
%n      %N              Changes the color to default color, removing
                        all other coloring and formatting. %N is
                        always the terminal's default color. %n is
                        usually too, except in themes it changes to
                        previous color, ie. hello = %Rhello%n and
                        %G{hello} world would print hello in red,
                        and %n would turn back into %G making world
%F                      Blinking on/off (think: flash)
%U                      Underline on/off
%8                      Reverse on/off
%9      %_              Bold on/off
%:                      Insert newline
%|                      Marks the indentation position
%#                      Monospace font on/off (useful with lists and
%%                      A single %
%XAB            %xAB    Color from extended plane (A=1-7, B=0-Z)
%ZAABBCC    %zAABBCC    HTML color (in hex notation)

In .theme files %n works a bit differently. See default.theme for more

Appendix E comes directly from

Usage: SET TRANSLATION character translation table

The TRANSLATION variable defines a character translation table.  By
default, ircII assumes that all text processed over the network is
in the ISO 8859/1 map, also known as Latin-1.  This is identical to
standard ASCII, except that it is extended with additional
characters in the range 128-255.  Many environments by default use
the Latin-1 map, such as X Windows, MS Windows, AmigaDOS, and modern
ANSI terminals including Digital VT200, VT300, VT400 series and
MS-Kermit.  However, many older environments use non-standard
extensions to ASCII, and yet others use 7-bit national replacement

Some available settings for the TRANSLATION variable:

8-bit sets:
  CP437               Old IBM PC, compatibles and Atari ST.
  CP850               New IBM PC compatibles and IBM PS/2.
  DEC_MCS             DEC Multinational Character Set.
                      VAX/VMS.  VT320's and other 8-bit
                      Digital terminals use this set by
                      default, but I recommend changing to
                      Latin-1 in the terminal Set-Up.
  DG_MCS              Data General Multinational Character Set.
  HP_MCS              Hewlett Packard Extended Roman 8.
  LATIN_1             ISO 8859/1.  Default.
  MACINTOSH           Apple Macintosh computers and boat
  NEXT                NeXT.

7-bit sets:
  ASCII               ANSI ASCII, ISO Reg. 006.  For American
                      terminals in 7-bit environments.  Use
                      this one if everything else fails.
  DANISH              Norwegian/Danish.
  DUTCH               Dutch.
  FINNISH             Finnish.
  FRENCH              ISO French, ISO Reg. 025.
  FRENCH_CANADIAN     French in Canada.
  GERMAN              ISO German, ISO Reg. 021.
  IRV                 International Reference Version, ISO
                      Reg. 002.  For use pedantic in ISO 646
  ITALIAN             ISO Italian, ISO Reg. 015.
  JIS                 JIS ASCII, ISO Reg. 014.  Japanese
                      ASCII hybrid.
  NORWEGIAN_1         ISO Norwegian, Version 1, ISO Reg. 060.
  NORWEGIAN_2         ISO Norwegian, Version 2, ISO Reg. 061.
  PORTUGUESE          ISO Portuguese, ISO Reg. 016.
  PORTUGUESE_COM      Portuguese on Digital terminals.
  RUSSIAN             Russian
  RUSSIAN_ALT         Alternative Russian.
  SPANISH             ISO Spanish, ISO Reg. 017.
  SWEDISH             ISO Swedish, ISO Reg. 010.
  SWEDISH_NAMES       ISO Swedish for Names, ISO Reg. 011.
  SWEDISH_NAMES_COM   Swedish.  Digital, Hewlett Packard.
  SWISS               Swiss.
  UNITED_KINGDOM      ISO United Kingdom, ISO Reg. 004.
  UNITED_KINGDOM_COM  United Kingdom on DEC and HP terminals.

Please forward any extra translation tables to the ircII development
team by using the ircbug utility that comes with the package, or,
failing that, sending mail to [email protected] directly.

Appendix F is for FAQ.

Q: Will you relicense this document under YOUR_FAVORITE_LICENSE?

A: The Creative Commons Attribution-ShareAlike license best embodies the author’s wishes for use and redistribution of his work. It is strictly a license and does not promulgate a political or ideological agenda. YOUR_FAVORITE_LICENSE will be considered if its terms are very similar (if not identical) to the current license, but it will be rejected if it’s someone’s soapbox.

The original portions of this document are Copyright 2005 by Rocco Caputo [email protected] and Nei (on #irssi). Other portions are Copyright by their respective authors or licensors.

This work is licensed under a Creative Commons Attribution-ShareAlike 2.5 License. Please see for details. Summary:

You are free:

  * to copy, distribute, display, and perform this work
  * to make derivative works
  * to make commercial use of this work

Under the following conditions:

  Attribution.  You must attribute the work in the manner specified
  by the author or licensor.

  Share Alike.  If you alter, transform, or build upon this work,
  you may distribute the resulting work only under a license
  identical to this one.

* For any reuse or distribution, you must make clear to others the
  license terms of this work.
* Any of these conditions can be waived if you get permision from
  the copyright holder.

Your fair use and other rights are in no way affected by the above.

Sorry for the heavy license crap. Coekie wanted clarification.

Quick Nav


A: Levels
B: Special Variables and Expandos
C: Time Formats
D: Color Codes
Appendix F