Main | Look | Chat Colors | Message Colors | Usercolors | Badges | Emoticons | Fonts | Chat | Messages | Moderation | Names | Highlight | Ignore | Log to file | Window | Tabs | Notifications | Sounds | Other | Commands | Advanced | TAB Completion | History | Stream Highlights | Hotkeys

This page details some of the settings in the Settings Dialog (Main Menu - Settings). Also try hovering over settings in the settings dialog itself, sometimes you can get a tooltip with some additional information. You can open this help in the settings dialog by clicking on the "Help" link on the bottom left.

Main [back to menu]


You can select what will happen when you start Chatty:

Do nothing
Just do nothing special, can join channel manually afterwards.
Open connect dialog
Open dialog to connect.
Connect and join specified channels
Connect immediately and join the channels specified in the field below. You can define several channels by seperating them with a comma.
For more information on how channels can be specified, such as joining channels by Addressbook category, see Joining Channels.
Connect and join previously open channels
Connect immediately and join the channels you had open when you closed Chatty.
This works especially way together with the restore layout option enabled.
Connect and join favorited channels
Connect immediately and join the channels that are favorited in the Channel Favorites/History dialog.
More information: Layouts and Tabs


More information: Settings and other files

Look [back to menu]


The Look&Feel changes the overall look of the program. The "System" Look&Feel depends on the system you are on, the others are cross-platform. Some Look&Feels also allow you to additionally select a different font size, which affects most of Chatty.

Chat Colors [back to menu]

Customize colors of certain types of chat messages. For the general look of the program you can choose another Look&Feel from the "Look" settings page.

Message Colors [back to menu]

You can customize the foreground and background color of messages based on the same message matching rules and patterns that are used for the Highlight system (not all prefixes apply). Add a new item, enter what messages you want to match and select the color you want them to have.

The order of entries can matter, the first color from the top that matches is used.

Note: The default colors are set on the "Colors" settings page.

Note: This feature only changes the message color. Use the Highlight system instead if you want to highlight important messages, have them added to a separate Highlighted Messages window and maybe show a notification or play a sound for it at the same time.


Examples of how to match certain messages, so you can assign it a custom color.

Matches all messages from a known bot (FFZ, BTTV or the botNames setting).
Matches all messages from users in the vip Addressbook category.
chan:#tailsgaming start:!points
Matches all messages in channel #tailsgaming, starting with !points.
re*:(?i)(?<!practice |debug )\bROM\b(?! hack)
Matches all messages containing the word ROM, not preceded by practice  or debug , nor followed by  hack (case-insensitive).
More examples: Highlight settings help

Usercolors [back to menu]

This allows you to specify your own usercolors for either certain types of users (mod, subscriber etc.) or specific usernames. There are special items that you can use to specify that (to specify a username, just enter it without anything else):

The order of the entries in the table matters, because it is checked from the top. If you were to put the $all item at the very top, any items below wouldn't do anything, because the first item would already match all users. This e.g. allows you to specify what color a user should have when he is both a subscriber and a moderator (by either putting $mod or $sub first).

If an item is red and has "(error)" appended (e.g. "$color.Blue (error)"), this means the item is invalid. In the example this is because a point has been used instead of a colon, so "$color:Blue" would be correct. This can also happen if it doesn't recognize the given color or the item is just in an invalid format.

Badges [back to menu]

Badge Settings

Custom Badges

Add entries to the table to show additional icons (Addon-Type) or replace the default icons (all other Types).

The order of the entries can matter, they are looked at from the top:

Custom Badges Properties

A type of Addon will add an additional badge. All Addon-badges that matche the Restrictions are shown at once.
Other types replace an already shown default badge. For example adding an entry of Type Turbo allows you to define a custom icon for all Turbo badges shown in chat. Accordingly, if you selected Bits it would target all variations of the Bits badge.
The Type Other (Twitch) allows you to directly target a Twitch Badge by it's Badge ID/Version, which allows you to replace badges that are not an originally supported Type.
You can only use this when you have one of the Other types selected. This specifies the Badge ID/Version that Twitch uses to identify Badges, which allows you to target any Twitch Badge you want, including a specific variation.
For example if you wanted to replace the 100-Bits Badge, you'd want to use bits/100. If you don't specify a Version, so just bits, then it matches all versions, in this case it would match all Bits Badges.
If you are already connected to a channel, it should automatically populate the list with known ID/Version combinations. Note that some of these may only be used in some channels.
This is similiar to the Usercolors settings, where you can enter special restrictions the user has to match in order for the icon to be displayed. If you keep this empty, then no restriction is applied.
The most common restrictions would be:
Specifying a Type other than Addon carries an implicit restriction, since e.g. the default moderator icons are only displayed if the user is a moderator.
Normally you can only specify one restriction, but you can also add special restrictions:
Example: $cat:streamer $first - Matches users in the Addressbook category streamer and puts the badge in front of the default ones.
Example: lotsofs - Matches a user by the name lotsofs.
Example: $cat:vip $badge:bits - Matches users in the Addresbook category vip, but only if they also have a Bits-Badge displayed.
You can enter a channel name here, so that the icon will only be displayed in that channel. You can add an exclamation mark in front of the channel name (like !#channel) to have it displayed in all channels except the one you specified.
If you keep this empty, then it will be displayed in all channels.
This allows you to position the icon relative to the default badges. It will go through the already present badges, from the left, searching for an insertion position until it encounters a badge not in this list. It will then add the badge after that position.
You can use one or several of the following badge identifiers, separated by comma.
Presets containing several badge types or a special position: Specific badges (you may have to add presets or several of these to position it correctly):
Note: These presets may not work anymore if Twitch adds badges in those locations that aren't known to Chatty, in which case you can specify the new badge id/version yourself.
Note: The order of Addon-badges relative to eachother is determined by the order they are added to the Custom Badges table.
Image File
The image to use. Must be a .png and is recommended to be about 18x18 pixels (because that is the default size). If you specify no image, then the matching default icon is removed.
Chatty lookes for images in <working_directory>/img/ (Chatty directories help). You can click on Image Folder to show information about it and rescan to update the list.
The special image file name $default will use the default image file, that would be shown without defining Custom Badges. This can be useful if you e.g. want to replace all Badge Types, except for one, so you can define that one to use the default.
Tip: You should also be able to manually enter the full path to an image, in case you don't want to use the dedicated image folder. A filename starting with http is interpreted as URL.

Tip: Jump to entries in the table by clicking into a column and start to type. Backspace or wait to get out of the search mode.

Emoticons [back to menu]

General Emoticon Settings

Show emoticons
Turns emoticon codes into images. This needs to be enabled for any emotes to show up.
Scale (Chat)
The relative size of how emotes are displayed in chat (100% is regular size).
Maximum Height
The maximum height of emotes in chat (in pixels). Use 0 to allow any height.
Emotes Dialog
The relative size of how emotes are displayed in the Emotes Dialog (100% is regular size).
Double-click on emote closes Emote Dialog
If enabled, double-clicking on an emote in the Emote Dialog closes the Emote Dialog.
Cheers (Bits)
You can choose whether to show Cheering emotes in chat animated, as static images (like other emotes) or not at all (so they'll just show up as text).
Sending Cheers is not supported at this point.

Third-Party Emoticons

Enable BetterTTV Emotes
Shows BetterTTV emotes (Personal Emotes not supported at this time).
Allow animated emotes
Show animated emotes (BTTV GIF emotes).
Enable FrankerFaceZ (FFZ)
Downloads FrankerFaceZ emotes and Mod Icons (where available).
Requires a restart to take full effect when you change it.
Enable FFZ Mod Icon
Show the FFZ Mod Icon in place of the default Mod Icon (where available).
Enable FFZ Featured Emotes
Show special FFZ emotes available in some channels (mainly Speedrunning Events). To receive these emotes Chatty maintains a connection to the FFZ Socket Server.


Turns Emoji characters into images. You can choose between different sets of Emoji images, or choose None to turn off Emoji images altogether.
Replace Emoji codes in entered text
Emoji codes like :joy: or :mouse: get replaced with their respective Emoji character (and thus image, if a Set is chosen) when entering them into the inputbox.
Tip: Use TAB Completion to complete partially entered Emoji codes.

Ignored Emotes

Emotes added to this list will not be turned into an image, but instead are just shown as their emote code. They are also hidden from the Emote Dialog and TAB Completion, unless you choose not to for specific emotes.

The code added to the list has to be the exact code used internally to find the emote in the messages. Usually this is simply the emote code as you would type it in chat, but some emotes have a special syntax that you might not even know (e.g. :) has \:-?\) as actual code). There are more options available, see the Ignored Emotes dialog in the Settings.

It is recommended to use the emote context menu (right-click on an emote in chat) to ignore emotes. That way the correct data will automatically be added to the list and you can easily select additional options as to where to hide the emote from.

Local Emotes [back to menu]

This feature allows you to configure Twitch Emotes that will always show up as usable in messages you send, the Emotes Dialog and TAB Completion, disregarding if you actually have access to them or not. This only affects your local client, others will only see emote images in your messages when you actually have access to the emotes.

The use of Local Emotes is intended for Twitch Emotes that are not available through the Twitch API and thus do not show up in messages you send since Chatty doesn't know about them. This issue does not apply when other people receive your messages or when you receive their messages, since Twitch handles emotes parsing serverside for those.

With the removal of the old Twitch v5 API in February 2022 this problem can affect even more Emotes than before.


Add Local Emotes through the Emote Context Menu (e.g. right-click on an emote in chat) using the "Add local emote" option. For example if you have a favorite emote that you have permanent access to but that isn't available through the API (meaning it doesn't show up in the Emote Dialog or when you send a message), you can send a message with it through Webchat to the same channel you have joined in Chatty and then use the Context Menu option on it.

In the Settings Dialog in the Emoticon settings you can view and edit the list of Local Emotes.

The help on the Emote Dialog's "Highlight endangered emotes" function has been removed since the old API that it relied on has been turned off.

Fonts [back to menu]

Chat Font

Change font and font size by clicking on Select font.

Line Spacing
Space between lines in the chat window. One message can consist of several lines. Lines that contain emotes may have a larger height.
Message Spacing
Space between messages. One message can consist of several lines, but this setting is only applied per message and doesn't affect the indiviual line height.

Input/Userlist Font

Input font is restricted to two fonts by default, because other fonts cause issues due to a bug in Java. The number behind the font is the font size. You can manually change this setting via Setting Commands (as with most settings) if you really need another font, but pay attention to the note about the adverse effects it may have.

Chat [back to menu]

Chat Settings

Pause Chat

The Pause Chat feature stops Chatty from scrolling down when you move the mouse over chat. This can be useful if you want to click specific stuff in a fast moving chat, for example if you are moderating or just want to click on an emote to see what it is.

Please note: This will not work properly until the chat window is filled with text, because only then will Chatty actively scroll down. Also, this only stops Chatty from actively scrolling down, so if e.g. a big message is being timed out and thus shortened, stuff may still move around accordingly (which in that case couldn't really be prevented anyway).

Chat is paused as long as you move the mouse over chat or if you hold Ctrl (and initiated pausing by moving the mouse). A little popup in the top-right will indicate that the chat is paused.

Holding Ctrl basicially acts as if you moved the mouse continuously.

Messages [back to menu]

Deleted Messages (Timeouts/Bans)

Tip: Click on a username in chat to open the User Info Dialog, which also shows the timeouts/bans and the original messages.


Whether to show a timestamp in front of chat messages and what format it should have. If you want a different format from the ones provided here, you can use the command /set timestamp <format>. The format can be anything specified by the Java SimpleDateFormat class.
Show mod/unmod messages
Whether to show the MOD/UNMOD messages as they come in from Twitch Chat. These messages are send not only when someone was modded/unmodded but also when a mod joins or leaves the chat. This is not very reliable, since Twitch Chat sometimes sends a lot of MOD/UNMOD events, even if the mod never left the channel. See the Userlist help on more about that.
Show joins/parts
Show joins/parts, which are always kind of delayed, so don't take them too seriously (only works when Advanced - Correct Userlist is enabled). See the Userlist help on more about that.
Show stream status in chat
Outputs the stream status (title and game) in the chat window on join and when it changes (when the stream goes offline or online or changes the title or game).
/me messages colored
Show action messages in the color of the user like in webchat.
Filter combining characters
Replaces certain ranges of Unicode characters. Those characters are used in some languages to combine characters, but can apparently cause errors in some cases. The filter applies to the main chat window and the recent messages in the User Info Dialog (but not e.g. the chatlog written to file).
Do nothing
Replaces at least 3 characters in a row with stars (****), which preserves some legitimate use
Replaces any number of characters in a row with stars (****), use this if you have performance problems when someone posts these kind of characters

Moderation [back to menu]

Moderator-only Information

Show Moderator Actions in chat
Show commands that moderators execute directly in chat. You can also view the same messages under Extra - Moderation Log. Only works if you are a moderator yourself.
Hide if associated action already visible in chat (e.g. ban)
Example: If a mod turns on Subscriber-Only mode, everyone will get an info message about it, which means (if enabled, for mods) @Mod will be appended to that info message. Due to this, no separate Mod Action message will be shown.
On the other hand, if a mod unbans someone, there is no associated message in chat, so (if enabled) a separate Mod Action message will always be shown.
In addition, if a mod bans someone, but no message of that user is currently visible in chat, then a separate Mod Action message might be shown.
Append which @Mod caused an Action (e.g. ban)
Append the name of the moderator to actions in chat, for example behind a deleted message or an info message such as [Info] This room is now in subscribers-only mode. (@tduva).
Note that the association of Mod Action and existing message in chat may not always be perfect, especially if different mods perform the same or similiar action at the same time.
Show messages rejected by AutoMod
Show messages that have to be approved directly in chat. To approve messages you have to open Extra - AutoMod, where you can also view those messages even if this setting is disabled.

User Dialog

Clear message history of users inactive for
Remove the messages visible in the User Dialog for each user if a new message hasn't been added for a while. This is mostly for saving memory when Chatty is running continuously for a long time.

Repeated Chat Message Detection

This feature uses the user's message history (based on what is visible in the User Dialog when clicking on a user) to determine if the user has sent the same (or similar) message before. If a repeated message has been detected (depending on the settings) the number of repeated messages is added behind the message in chat, e.g. "(x4)".

In addition, the config:repeatedmsg Matching prefix can be used in e.g. the Highlight list, Message Colors list or to restrict a Notification to trigger only on repeated messages.

Restricting detection uses Highlight Matching, for example !status:M to exclude mods or mystatus:M to restrict to channels you are a mod in or even matching on the message text.

Note that this feature may affect performance in very busy chats, since each received message has to be compared against multiple messages (depending on the user's available history and these settings).

Names [back to menu]

Names / Localized Names

Users can customize the capitalization of their name, or set a localized name for some locales, like Japanese.

Chat messages and the Userlist can be configured separately with the following options:

Username Only
Always show the non-capitalized username for all users.
Capitalized Only
Show the capitalized name, if available (but never localized names).
Localized Only
Show the localized name, if set by the user, or the capitalized name otherwise.
If the user has a localized name set, show both the localized name and the original username in parentheses, or the capitalized name otherwise.

If you have a Custom Name set for a user, then only that Custom Name will be shown.

Other related settings:

Capitalize First Letter if no display name available
If there is no capitalized/localized name for a user available then capitalize the first letter. This especially applies to names in the userlist of people who haven't said anything in chat yet.

Custom Names

More information: Custom Names

Highlight [back to menu]

General settings


Add items to the list to make a message highlighted if any one of them match the message. The Users to never highlight and Highlight Blacklist settings can be used to prevent some of those Highlights.

Note: Highlight-style matching can be used in various other settings as well, although not all prefixes are always available.

There is a video tutorial that explains how this works.

There are various prefixes that affect matching and Highlighting behaviour:

Also see:

By default only regular chat messages are matched, however with the config:info prefix info messages (e.g. subs, chat status) can be matched instead.

Text Matching Prefixes

By default, matching is performed case-insensitive and anywhere in the message. However, you can add one of the following prefixes in front of the search text to modify the matching behaviour: [text-prefix:]<search text>

All Text Matching Prefixes can be inverted (matches when it doesn't find the search text) by prepending an exclamation mark, for example: !start:!bet all. See the blacklist: Prefix description for further information on the differences between blacklisting and negated matches.

Additionally, several Text Matching Prefixes can be specified by prepending a plus sign. In this case the value cannot contain spaces or must be quoted. Example: +!start:"!bet all" regi:Regular search text

Only the main search text (no prefix or using any of the non-modified Text Matching Prefixes) will mark Highlight matches in chat.

Meta Prefixes (Matching)

The following prefixes don't match on the text itself, but define other things that should or should not trigger a Highlight. You can place one or several of these prefixes before the search text (separated by spaces): [meta-prefix:value] [..] [text-prefix:]<search text>


Possible matching prefixes:

Meta Prefixes (Behaviour)

The following prefixes don't change what is highlighted, but rather change what a Highlight does. You can place one or several of these prefixes before the search text (separated by spaces): [meta-prefix:value] [..] [text-prefix:]<search text>

See Meta Prefixes (Matching) notes for quoting special characters.

Note: If you're using the color: or bgcolor: prefix to merely change the message color, but are not interested in actually Highlighting it - which includes a Notification and adding the message to the Highlighted Messages window - then consider using Custom Message Colors instead.


There are different ways that allow you to build Highlight items (or settings using the same format) from pre-defined parts or apply functions instead of writing it all manually:

The "Presets" list can be accessed through the Highlights settings page. Presets can be used from any setting that uses the Highlights format, even though in this help it only refers to the Highlights list.

The "preset:" prefix inserts an entry from the "Presets" list. It could for example contain an entry with the name "m" that contains some meta prefixes:

m chanChat:mod config:!notify  ("Presets" list)

This could then be inserted into a Highlight list entry like this:

preset:m reg:<some regex>

Prior to further parsing this would be expanded to:

chanCat:mod config:!notify reg:<some regex>

You can also add an optional parameter, for example preset:m|",silent", which will be appended directly to the end if the inserted text: chanCat:mod config:!notify,silent reg:<some regex>. If the name of the preset begins with an underscore the parameter will instead be provided to the preset in the $1- replacement.

The "cc:" prefix (short for "Custom Command") causes all following text to be interpreted in the Custom Command syntax, which means:

For example there could be a preset with the name "_t", that replaces spaces in all of the given text $1- with underscores:

_t $replace($1-, ,_)  ("Presets" list)

This could then be used in a Highlight item:

cc:reg:\\w $(_t,abc test)  (note the escaped \ and the abc test parameter)

Prior to further parsing this would be modified to (due to being handled like a Custom Command):

reg:\w abc_test

The "cc2:" prefix does the same, except that you must also specify a custom escaping (and optionally a replacement) character. For example the following sets ~ as escape character (instead of \) and § as replacement character (instead of $). Anything after | is then interpreted in Custom Command syntax as above:

cc2:~§|reg:\w §(_t,abc test)

The result is the same as the cc: example, but the \w does not need the additional \ in front, since \ is not a special Custom Command character anymore.

The "ccf:" prefix (short for "Custom Command Function") applies a "Presets" list entry (whose name should begin with _ to be able to use Custom Command replacements) to the entire following text, as if you wrapped the entire text in a replacement. Example:

ccf:_t|reg:\w abc test

This is equivalent to:

cc:$(_t,reg:\\w abc test)

Both of these would give the entire text to _t (which is $replace($1-, ,_) as seen above) and then use the return value, so it changes to:


Using ccf: has the advantage that you don't have to worry about potentially having to escape special characters, since simply everything after the | is provided to _t as a parameter without being interpreted in any special way.

You can chain several prefixes, for example:

ccf:_test|preset:m reg:<some regex>

This would first apply the _test function to everything after it, then insert the m preset (assuming the _test function did not change the preset:m), then continue parsing the result as a Highlight item.

Order of Highlight items

When using prefixes that change the behaviour (like setting a color) the order of Highlight items may be important, since the settings of the first matching item (from the top of the list) will be used. Contrary to that, if the choice is merely whether or not to highlight, then the order matter less (it can still matter for which matches in the message are emphasized).

Example: If you have one item bgcolor:yellow user:joshimuz that makes all messages of "Joshimuz" have a yellow background and another item start:!bet that highlights all messages starting with "!bet", then messages from "Joshimuz" that also happen to be starting with "!bet" will either have a yellow background or not, depending on the order of the two items in the list, so which one comes first.

Note: If you have the "Highlight own name" setting enabled, then it creates a Highlight item containing your name that will always be checked first. So if you want to e.g. change the color of messages containing your name as well, then you should disable that option and manually add an appropriate entry to the list (e.g. w:<yourname>), so that you can control it's position in the list in relation to other items yourself.


word1 word2
Matches e.g. word1 word2, Word1 word2 anywhere in the message
Does NOT match only word1 or only word2 anywhere in the message
(Each item represents one word or phrase to match as a whole)
Matches e.g. Anna?, Anna :D, Anna,
Does NOT match Wanna?, Hannah, annah
(Match on word boundaries to prevent undesired matches)
user:joshimuz cs:Hello
Matches Hello anywhere in the message, if the message was sent by the user named joshimuz
Does NOT match hello
(Combine a Meta Prefix (user-specific highlighting) and a Text Matching Prefix (case-sensitive))
cs:Hello user:joshimuz
Matches Hello user:joshimuz anywhere in the message
Does NOT match Hello, does NOT matter who send the message
(Anything after a Text Matching Prefix is interpreted as text to match, Meta Prefixes must be placed in front of the text)
cs:abc re:\w+
Matches abc re:\w+ anywhere in the message
Does NOT match abc test, but also NOT Abc re:\w+
(Can't combine Text Matching Prefixes)
re:abc \w+
Matches e.g. abc test
Does NOT match aabc test
(All Text Matching prefixes can also be replaced by regex)
re:.*abc \w+.*
Matches e.g. abc test anywhere in the message
(Regex has to match the whole message, so you need to add wildcards to match anywhere in the message)
color:yellow wcs:S
Matches e.g. S:, Hello S! and makes the message display in yellow color
Does NOT match s:, Hello s!, SSSS, ssss
(Define a custom color for this item and match case-sensitive on word boundaries)
chan:lotsofs,joshimuz cs:Hello
Highlight messages that contain Hello, but only if in the channel #lotsofs or #joshimuz
(Restrict matching to one or more channels)
status:s chanCat:vip start:!test
Match any message starting with !test send by subscribers of the channel, but only if the channel is in the Addressbook category vip (e.g. /ab add #joshimuz vip, notice the leading #)
(Restrict matching by user status, channel category and start of message)
More information: Highlight

Ignore [back to menu]

Allows you to ignore chat messages that match the specified text or - using prefixes - that match other properties like ignoring messages of a specific user. Ignored messages get added to a special dialog that can be opened via View - Ignored.

The matching of messages works the same as the Highlights system, please see that help for information on that. For quick reference here just a few examples:

Ignores the user with the name name in all channels
user:name chan:tirean,gocnak
Ignores the user with the name name in channels #tirean and #gocnak
cat:ignore !chan:lotsofs,joshimuz
Ignores users in the addressbook category ignore in all channels, except #lotsofs and #joshimuz
chan:joshimuz re:!bet.*
Ignores messages starting with !bet, but only in #joshimuz
!status:smb chanCat:subonly
Ignores any message send by users that are not a subscriber, moderator or broadcaster of the channel, but only if the channel is in the Addressbook category subonly (e.g. /ab add #joshimuz subonly, notice the leading #)

General Options

Ignored Users

The Ignored Users list allows you to ignore users in chat or prevent them from whispering you, which is possible via the main ignore list as well, but was added as a separate function to be more convenient. Aside from the settings, you can also ignore/unignore users via the User Context Menu.

Ignored users are independant of the main ignore list, so they also apply if ignore is disabled.

Hide 'Ignored in chat' users from the userlist/joins/parts
If enabled, prevents users on the 'Ignored in chat' list from showing up in the userlist and JOIN/PART/MOD/UNMOD events (which aren't enabled by default to be shown anyway).
This only applies to the 'Ignored in chat' list, not to entries with the user: prefix on the main Ignore list.
Users who are already on the userlist when you ignore them stay on it until they leave, you rejoin the channel or restart Chatty.

Filter [back to menu]

As opposed to the Ignore list, which blocks entire messages from being shown, the Filter only removes parts of a message. For example if you add regw:a\w* to the list, it will remove all words starting with a from messages in chat and replace it with .., which can be hovered over to show the original text.

An example usage for this could be to shorten bot messages by removing parts that are always the same.

The text matching syntax is the same as for the Highlight list, although you have to remember that only the the parts of a message that match the pattern are removed, so you may have to use it a bit differently than for Highlighting and Ignoring.

It currently only works for regular chat messages (no info messages). It also only uses the matches from the first item in the list that matches any part of the message. This may be changed in the future.

Customize replacement

The replacement: prefix can be used to change the default .. the filtered text is replaced with to something more meaningfull. For example if your entry is replacement:Wordwitha regw:a\w* then the removed text gets replaced with Wordwitha.

You can use replacement:none to output no replacement at all.

Log to file [back to menu]

If you enable logging, chat messages (and more if enabled) will be written into a separate textfile for each channel.


You can specify which channels should be logged:

Tip: Add $_whisper_ to the whitelist or blacklist to affect all whispers that are output in the "One Window" tab or "Per User" tabs.

Other Settings

Select where to save the log files.
Split Logs
Start a new log file every Day, Week or Month.
Channel Subdirectories
Create a subfolder for each channel.
Lock files while writing
By default Chatty requests exclusive access while writing to the file, so that no other program can interfere. This can however cause issues if you try to open the log while in the channel, for example if you want to look something up for moderation, so disabling this setting can make sense. This means that you have to ensure yourself that only one instance of Chatty and no other programs write to or the lock the files.
Select the timestamp to be used in the logs.

Messages Types

Normal chat messages are always logged, however you can log additional information:

Chat Messages
Logs regular chat messages (that haven't been ignored).
Ignored Msg.
Logs messages that have been hidden by the Ignore list. You can disable this if you don't want ignored messages to show up in the chat log files.
Chat Info
General chat releated info messages like connecting, disconnecting, trying to timeout someone, stream title..
Bans and Timeouts in chat. Timeout length and reason will be added if available.
BAN: name1, name2 (30s) [reason], name3 (600s)
The reason is specified by the mod taking the action, so it may be consist of any text.
Deleted Messages
Single deleted messages, specifying the username and message text.
DELETED: name1 (msg1), name1 (msg2), name2 (msg3)
When someone in chat is modded or unmodded. Remember that this info may be inaccurate, since mod/unmod events are not send immediately by Twitch Chat.
MOD: name1, name2
UNMOD: name3, name4
When someone enters/leaves the channel. Remember that this info may be inaccurate, since joins/parts are not send immediately by Twitch Chat (and sometimes not at all).
JOIN: name1, name2
PART: name3, name4
System Info
Any info messages that are related more to Chatty itself than to chat, like info about new versions, when you use setting commands..
Stats about the viewercount which are logged in a semi-regular interval to give you an idea about the viewercount during that time.
Each Viewerstats line shows which interval it refers to, the min/max/avg viewers, the number of values and the development: First value/after offline is absolute, then +- relative change, _ means offline before/in between/after that value.
Viewerstats (21:03-21:06): avg:28.612 min:28.432 max:28.887 [3/28.519-87+455_]
In the example, the stats were recorded between 21:03 and 21:06 and the Viewercount started out at 28.519, then went down (-87) and then up (+455). After that the stream went offline (_).
Directly logs the viewercount as it is received from Twitch, without any processing, except being formatted depending on the current locale.
VIEWERS: 12,521
Mod Actions
Logs the commands performed by mods in your channel (Broadcaster/Mods only).
MOD_ACTION: tduva (host coollertmb)

Window [back to menu]

Dialogs Location/Size

Minimizing / Tray



Tabs [back to menu]

See also: Layouts and Tabs
Tab Order
Whether to show tabs in the order they were opened or alphabetically.
Tab Placement
Where to put the tabs bar.
Tab Layout
If the amount of tabs doesn't fit, choose whether tabs should wrap into multiple rows (or columns) or keep in one row, while having to scroll through them.
Scroll through tabs with mousewheel
Hover mouse over tabs and scroll to change tabs.
Scroll through tabs anywhere
Don't restrict scrolling through tabs to the tab bar, although this mostly only applies to the inputbox. So you can hover your mouse over the inputbox and scroll to switch between tabs.

Notifications [back to menu]

The Events table can contain several entries that describe events and whether they should trigger a Desktop Notification and/or Sound.

The entries are checked from the top and only the first enabled Notification and Sound of matching events are chosen, and then triggered if the Cooldowns allow it (given that any are configured).

Example: You could have two "Highlights" events, the first restricted to a certain channel with a Notification/Sound and the second non-restricted with just a Notification. This way only Highlights in said channel would play a Sound (and maybe have different Notification colors) and all others just show a Notification. Note that if you were to switch those entries, then the channel-restricted one would never be chosen, because the non-restricted one already catches everything. So as a general rule, the more specific/restricted entries should always come first.

Possible event types that can be selected for an entry:

Stream Status
A stream Chatty is watching (because you have it's chat open or you follow it) went online/offline or changed title.
Chat Messages that were highlighted.
Chat Message
Any Chat Message (including highlighted ones, in this case the order of list entries can matter).
Info Message
Most messages that are not regular Chat Messages, by default shown in blue color (e.g. joining a channel, channel state change, command responses, sub notifications, and more).
A few of these messages are output in all open channels at once (e.g. "Disconnected" message), which would trigger a notification for each channel.
This will trigger at the same time as some other event types, e.g. Subscriber Notification, so make sure you're not using both of them at the same time, or using text or channel matching to restrict it accordingly.
Any Whisper message (including highlighted ones).
User Joined & User Left
When a user is seen entering or leaving a chat. Note that this is quite unreliable, see Userlist and JOIN/PART.
New Followers
When a new follower is detected (this only works if the Follower Dialog is currently open).
Subscriber Notification
When a new Subscriber/Resub notification is received in chat.
AutoMod Message
When a new chat message filtered by AutoMod is received.

Event settings (Notification/Sound)

Name of the channel or channels (comma-separated) this item should be restricted to.
Match the given text or message, in the same format as for Highlighting (although some prefixes won't work unless it's a chat message).
Notification (Tab)
A Desktop Notification, with customizable colors.
Sound (Tab)
Play the selected Sound.
Specify a Cooldown to prevent this sound from playing too often.
Passive Cooldown will only play the sound if enough time has passed since this event was last matched. Or in other words it will reset the Cooldown every time the sound would have been played, even if it actually wasn't because another sound took precedence or the regular Cooldown didn't allow it.
For example if your chat isn't very busy and you want to get notified of new messages so you notice, then you could add an event of type Chat Message with a Passive Cooldown of 5m, which means the sound only plays if someone writes a message after the chat has been silent for at least 5 minutes. If on the other hand you would set it as a regular Cooldown it would play the sound after 5 minutes even if the chat has been busy non-stop, at which point you probably wouldn't need to be alerted since you're already paying attention to it.

On both the Notification (Tab) and Sound (Tab) you can enable/disable the according action by choosing one of the following:

General Notification Settings

There are different types of Notifications:

Don't show any notification
Chatty Notifications
The default popup Notification created by Chatty, with additional settings (see below).
Tray Notifications (OS dependant)
Native Tray Notifications, which will act differently depending on what OS you are on.
Run OS Command
Execute a program on your system, for example to run native notifications in Linux. For advanced users only, read the help in the "Edit system command" dialog.

If you have selected Chatty Notifications:

The corner of the screen the notification is displayed.
On which screen the notification appears (auto means it's on the same screen as the Chatty window).
Display Time
How long the notification will be displayed by default. This can vary a bit depending on the situation.
No User Activity
This is a tricky one. If you enable this, then the notification will not be closed after the defined Display Time if no activity was detected in the last few seconds. This can be useful to still see notifications from a few minutes ago if you were away from the computer. The time defines when the notification will be closed no matter what, so older notifications won't stay there forever if you are away from the computer for a bit longer.
Activity is tracked through two methods: The first method is tracking the system-wide mouse movements, which is done through an API that may not always return accurate information (e.g. if you are in a game) and it only checks the position every few seconds (only the last location is saved at any time for comparison). The second method detects activity only inside of Chatty, by tracking button presses and mouse actions (e.g. if you type a message, open a dialog etc.).

General Sound Settings

You can enable or disable all sounds here. Sounds are searched in the displayed folder, which is the current working directory, although you can also Change it to a folder of your choice. If you added or removed files, you may have to use Rescan folder to make the files show up in the list of sounds selectable in the event settings. You can Open the folder in your standard file browser from here to add files to it more quickly.

The Output Device lets you choose the device on your computer the sounds gets output to. This is kind of experimental and may not work properly.

Followed Streams

Enable this to make Chatty get a list of your followed streams regulary so it can display notifications if their status changes. This simpy allows Chatty to know about your followed streams, so notifications aren't the only advantage. It also allows it to record the viewer count and status history of followed live streams as long as Chatty is running.

Sounds [back to menu]

Sounds are now integrated into the Notifications.

Other [back to menu]

Graphic Settings

More information about Graphics Glitches and UI Scaling.


Automatically check for new version
Checks for new versions every few days and outputs a message about it.


Prepend to window title
Add some arbitrary text to the beginning of the window title. This can be useful if you run several instances of Chatty (to be able to tell them apart more easily).

Write Stream Status

You can let Chatty write information (title, game, viewercount) of a certain stream to a file. The file will be written to the subfolder exported of the settings directory (enter /dir to find out where that is). Stream information is only written if Chatty gets that data, so for it to work properly you need to currently have the channel of that stream open in Chatty. (When you change the setting, data will be requested once for testing, but you have to be in the channel for it to be updated regulary.)

To save stream information to a file, you have to define it in the setting. Each line represents one stream/file and the content to write into the file. The format for each line is:

<streamname> <filename> [online/offline] <content>

The optional parameter online/offline defines whether to write the given content to the file when the stream is online or offline. So you could for example define one line for online, which writes the viewercount and another for offline which writes "Offline" or maybe no content at all, which clears the file. If you only define one for online, then the file is not written if the stream is offline, so the previous info will stay in there. If you ommit this parameter, then online is assumed.

The following codes in the content will be replaced with the appropriate data:

Example which will write two files (if joined to #joshimuz):

joshimuz title.txt %title (%viewers Viewers)
joshimuz title.txt offline Stream offline
joshimuz game.txt %game
joshimuz game.txt offline

If the stream is online, it writes the title and viewercount to title.txt and the game to game.txt. If the stream is offline it writes "Stream offline" to title.txt and empties game.txt.

Commands [back to menu]

This settings page allows you to do the following, which is explained in more detail on another page:

Advanced [back to menu]

These settings should only be changed if you know what you're doing. You can however reset any setting to the default by either deleting the settings file or using setting commands.


The server/port values are used when connecting, unless the commandline parameters -server and/or -port are used, then the value that is given there is used instead (without it being shown here). You should know if you set a server or port with a commandline parameter, but you can also check that by using /get server and /get port.

Login Settings

Manage the actual login data under Main Menu - Account.

Allow -token parameter to override existing token
When specifying launch options you the -token parameter sets the login token used in Chatty. If a token is already saved in Chatty, then the -token parameter will have no effect, unless this setting is enabled.
Overriding the token can be an issue if external programs like the Livestreamer GUI provide a token that has less access than the one already saved in Chatty (e.g. doesn't allow you to change your stream title).
If the saved token is already marked as a token set through the -token parameter, then it will be overriden anyway.
If a token set through the -token parameter is in use, it will be shown as such in the Main Menu - Account dialog.

Whisper Feature

Help: Whisper Feature

Twitch Client Version

The Twitch Client Version setting has been removed since Twitch Chat was switched over to IRCv3 tags and commands (receiving of joins/parts is now controlled by the Correct Userlist setting).

TAB Completion [back to menu]

TAB Completion allows you to write the beginning characters of a nickname in chat and then press TAB to complete it. To learn how to use TAB Completion check out the general help.

TAB Completion

Either TAB or Shift-TAB can be pressed after some text to initiate Completion, and here you can change what type of Completion each should do:

In addition to this there are special cases where a certain type of Completion is chosen independant of these settings:

Apperance / Behaviour

Show popup
Shows a small window with information about the current completion if there is more than one matching result. It shows your position in the results when cycling through them (and how many there are in total) as well as a limited list of results.
Max Items Shown
How many items (results) are shown in the popup at once.
You can set this to 0 to not show any items (and thus only your position in the results when cycling through and how many results there are in total).
Complete to common prefix
Pressing TAB only completes up to the common prefix for all found matches, giving you the opportunity to refine your search by adding more characters and then pressing TAB again, or just press TAB again to start cycling through the results.
With this setting disabled, it immediately completes to the first found result, allowing you to directly cycle through by pressing TAB repeatedly.
Changes how the matching usernames are sorted for completion (only applies to usernames, not to other stuff like emotes or setting names, which are always alphabetical).
Gives users that were recently active in chat a higher priority, and users with highlighted messages the highest. This way people you currently talk to (or that mentioned you) probably appear under the first few results.
Sorts names alphabetical.
Sorts names the same as in the userlist.

Localized Names

Prefer Regular name for username-based commmands
If you complete a username after a command like /ban which needs a regular username as parameter, then always prefer the regular name.
Include all name types in result
If a user has a Localized name, or you have a Custom name set, then not only the name that matched, but also the other types of names are added to the result.
Example: If a user is called test and has the Localized Name 名前, then entering tes and TAB will show in the results both test (名前) and 名前 (test), so you can select either name by cycling through the results via TAB as usual.
Only when no more than two matches
Only include all name types when no more than two names match, so that you don't have to cycle through all the different name types when you have a larger list.
Tip: Once you found the right name, you can move the cursor to leave completion, and then press TAB again to complete the name again to get the other name types again.

Custom Completion Items

Custom Completion allows you to add your own keyword/value pairs for completion. Custom Completion can always be performed by prepending the keyword with a dot (.) and then pressing TAB or Shift-TAB, or by selecting Custom Completion for the TAB or Shift-TAB setting, in which case no prefix is required.

Example: Add chatty as Key and as Value and then in the inputbox type .chatty (notice the dot in front) and press TAB to complete it to the URL.

Custom Completion items can only have one completion, so you can't have .chatty complete to several different values.

Besides the Settings Dialog, you can also use the /customCompletion command to modify custom completion items:

Remember that you can also use TAB Completion for command names. Kappab

History [back to menu]

Controls the behaviour of two different types of automatically stored history:

Both of these lists also allow you to manually add favorites, in addition to the automatic history.

Stream Highlights [back to menu]

Allows your mods to trigger Stream Highlights, which writes the current uptime/optional note to a textfile.

Command Channel
Allows users in the given channel to run the command.
For example if your channel/stream is called zoton2 you would enter zoton2.
Command Name
The command used to add a Stream Highlight.
With the default !highlight mods would enter !highlight [optional message].
Command Access
Which users have access to the command. It is highly recommended to restrict this to trusted users only, such as Moderators.
There are a few presets available which should fit most needs (they all include the broadcaster as well). This setting is using the Highlighting status: prefix to match only on some types of users. The preset names/values are:
If you want to set a custom value, you can use the command /set streamHighlightMatch <value>. You can use anything the Highlighting syntax provides (for example Addressbook categories), not just the status: prefix.

Hotkeys [back to menu]

You can add hotkeys for certain actions. In general, there are the following types of hotkeys:

With the Enable global hotkeys setting you can enable/disable the currently defined global hotkeys if your Chatty version supports global hotkeys. It does not do anything on it's own, it just toggles global hotkeys you defined on and off, in case you only need them sometimes and they interfer with other programs you use. You can also toggle that setting in the main menu under Extra - Options or use setting commands to change the globalHotkeysEnabled setting directly.

Adding/Editing hotkeys

When adding or changing a hotkey you have the following options: