| Chat Colors
| Message Colors
| Log to file
| TAB Completion
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.
You can select what will happen when you start Chatty:
- Do nothing - Just do nothing special
- 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.
- Connect and join previously open channels - Connect
immediately and join the channels you had open when you closed Chatty.
- Connect and join favorited channels - Connect
immediately and join the channels that are favorited in the Channel
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.
Customize colors of certain types of chat messages. For the general look
of the program you can choose another Look&Feel from the "Look"
You can customize the 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 message color is set on the "Colors" settings
page ("Normal message").
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
- Matches all messages from a known bot (FFZ, BTTV or the
- Matches all messages from users in the
- Matches all messages in channel
re*:(?i)(?<!practice |debug )\bROM\b(?! hack)
- Matches all messages containing the word
debug , nor
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):
$mod - Moderators
$sub - Subscribers
$turbo - Turbo Users
$admin - Admins
$staff - Staff members
$all - All users, this can be used to specify a default
color (should be put at the very end of the list)
$broadcaster - Broadcasters
$cat:<category> - A category from the Addressbook
#<color code> - A Html color code, e.g.
#0000FF for blue, which can
be used to replace colors
$color:<color code or name> - A Html color code or name (names
as hardcoded into Chatty, may be different from other programs), e.g.
$color:Blue for blue,
which can be used to replace colors
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
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.
- Show Usericons: Shows badges as images instead of
- Enable Custom Usericons: Use the custom icons
defined in the table below
- Enable Bot Badge: Enables showing of the bot badge
for known bots. Chatty shows a single bot badge for all known bots. The
list of bot names comes from different sources: The
setting, the BTTV API and the FFZ API.
- BTTV: Use botnames from the BTTV API
- FFZ: Use botnames from the FFZ API
Add entries to the table to show additional icons (
or replace the default icons (all other Types).
The order of the entries can matter, they are looked at from the top:
Addon icons that match are shown, unless you use
$stop restriction (see section Restriction
- When replacing default icons (all other Types), the first entry that
matches is used. For example if you have several entries for
replacing the Turbo badge, then the first one from the top that
matches is used.
Custom Usericon 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
Bits it would target all variations of the
- The Type
Other Twitch allows you to directly select a
default icon via Twitch's own Badge ID/Version, which allows you to
target badges that are not a supported Type.
- You can only use this when you have the
Type 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
bits/100. If you don't specify a Version, so
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. What makes the most sense in this case is
probably just entering a username (e.g.
serenity) or an
addressbook category (e.g.
$cat:vip, which would refer to
vip). If you keep this empty, then no restriction
- 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:
$stop means if this icon matches (and is thus used),
it stops searching for further
Addon icons. So
it's not really a restriction for this icon, but
rather a restriction that affects the following icons and
can be used to limit the number of
$first puts this
Addon icon before
the regular icons. The
$stop restriction only
applies to one group of
Addon icons separately
(before or after the regular icons).
$badge:<ID/Version> matches a Twitch
Badge a user has. For example
will only target users that currently have the 100-Bits
$cat:streamer $first - Matches users
in the Addressbook category
streamer and puts the badge
in front of the default ones.
lotsofs - Matches a user by the name
$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.
- 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
(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 Usericons. 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
- 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
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.
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.
- 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
- Replace Emoji codes in entered text
- Emoji codes like
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.
Emotes added to this list will not be turned into an image, but instead
are just shown as their emote code.
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.
\:-?\) as actual code).
It is recommended to use the emote context menu (right-click on an emote in chat) to
ignore emotes, because then the correct code will automatically be added to
Change font and font size by clicking on
- 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 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.
- Scroll down after
<x> seconds of inactivity: If you scrolled
up in chat but haven't moved scrollposition in the given number of seconds, it will scroll down
if new messages come in. This prevents new messages from being hidden
indefinitely if you accidently stayed scrolled up.
- Chat buffer size: How many lines of text are kept
for each channel in chat to scroll back to.
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
- Pause chat when moving the mouse over it: Enables
- Require Ctrl being pressed to start pausing chat:
If this is enabled, you need to have Ctrl pressed to
start pausing chat when moving the mouse over it. Once it's paused,
you can let go of Ctrl and it will stay paused as long as
you move the mouse (or hold Ctrl again to keep it paused
even when not moving the mouse, as usual).
- Run command when clicking on user (holding Ctrl):
When you select a command here, then clicking on a user in chat
while holding Ctrl will run the command on that user. You
can manually edit this
setting to use another command.
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.
- How to handle deleted messages (timeouts/bans) in chat window:
- Delete Message
- Completely replaces the message with
- Strike through
- Keeps the whole message displayed, but crossed out.
- Strike through, shorten
- Crosses out the message but also shortens the message to the
given number of characters, so long spam messages don't take
up much space, but you can still kind of tell what they were
- Shortened messages are indicated by the points at the end
that are not crossed out:
[12:30] Spammer: Deleted spam message Long copy pas..
- Ban duration/reason:
- Show ban duration
- Appends the length of timeouts in seconds (s) or minutes (m)
and "banned" for bans to the most recent message of the
[23:12] Spammer: spam message (10m)
[23:12] Spammer: spam message (banned) (permanent ban)
- If more than one timeout is issued, the appended info will update
with the length of the latest timeout, again always applied to the most recent
message of that user.
- Timeouts that happen more than a minute after the
offending message was originally received will cause the
appended info to include an asterisk at the end (*).
[23:12] Spammer: spam message (10m)*
- Show ban reason (mod only)
- Show the reason for the timeout (if the mod has given one),
appended and updated together with the duration.
[23:12] Spammer: spam message (banned) [rude tbh]
[23:12] Spammer: spam message (10m) [emote spam]
- This is only available for mods of the channel as well as for
the user that was banned/timed out.
- In addition to handling the deleted message, Chatty can also show a
separate message with info about the ban:
- Show separate ban messages
- Enable separate ban/timeout info messages.
<name> has been timed out
<name> has been banned (permanent ban)
- Combine ban messages
- Chatty can combine ban messages, which means if several
similiar bans/timeouts are issued for the same user within
10 seconds, only one message is shown, with the number of
included bans shown after the message, e.g.
<name> has been timed out (3).
- Ban messages are not combined if a new message from the banned user was
received in the meantime.
- This is particularly useful when moderation bots want to
more reliably remove a message and issue several identical
timeouts a few seconds apart.
- Show ban duration
- Appends the length of timeouts in seconds (s) or minutes (m)
to the separate timeout info message.
<name> has been timed out (60s)
- Show ban reason (mod only)
- Appends the reason for the timeout/ban (if the mod has given
one) to the separate info message.
<name> has been banned [rude tbh]
<name> has been timed out (600s) [emote spam]
- This is only available for mods of the channel as well as for
the user that was banned/timed out.
- 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
- 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
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
- 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.
- 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.
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
- If the user has a localized name set, show both the localized
name and the original username in parentheses, or the capitalized
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.
- Enable Highlight: Enable/disable Highlighting.
- Highlight own name: Makes messages that contain your
own name (case-insensitive) highlighted, even if you didn't add it to the list manually.
- Highlight follow-up: After a highlighted message,
also highlight the following messages of the same user for a certain time.
- Check own text for highlights: Highlights your own messages if
they match the criteria, which can be particularly useful to test whether your terms
are being matched correctly. This does not mean that all your own messages
are automatically highlighted, they still have to match one of the items
added to the list. To match all your own messages you can use the
prefix with your own name.
- Check ignored messages: Only checks ignored messages
for highlights if this is enabled.
Add terms to be highlighted
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
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:
cs: makes it case-sensitive, so
test but not
w: matches at word boundaries, e.g.
Anna: but not
Note: This doesn't take Regex anymore, please use
wcs: is the same as
w:, but case-sensitive.
start: to match at the start, so
match messages starting with
reg: (and variations) to use a
Regular Expression (Regex), which are case-sensitive by default:
re*:) will search anywhere in the message.
reg:(?i)\bGTA ?[V5]\b will match
anywhere in the message, case-insensitive (
(?i)), but only on word boundaries (
regi: matches case-insensitive (adds
so the example would be:
regw: matches on word boundaries (surrounds with
so the example would be:
regwi: matches on word boundaries and case-insensitive,
so the example would be:
re:) always tries to match the entire message (adds
regm:Test will only match the message
Test", but not anything added to it, even just a space
Test " (which
The following prefixes don't change the matching of the text itself, but
rather provide other information for the highlight system. You can place
one or several of these prefixes before the search text (separated by
[meta-prefix:value] [..] [text-prefix:]<search text>
user: to specifiy one exact username (case-insensitive)
which should highlight only if this user send the message, doesn't
search in the message itself.
cat: to specify a category the user who send the message
should be in (as defined in the Addressbook).
!cat: to specify a category the user who send the message
can NOT be in.
chan: to specify one or more channels the message has
to be send in to match (several channels are specified as comma-seperated
list, without spaces).
!chan: to specify one or more channels the message must
NOT be send in to match.
chanCat: to specify one category the channel the message
was send in has to be in (as defined in the Addressbook
with the name of the channel, including leading #).
!chanCat: to specify one category the channel the message
was send in can NOT be in.
status: to specify that the user has to have one of the
given status codes (case-sensitive):
t Turbo User
g Global Moderator
r Bot as in Robot (depending on what the FFZ/BTTV APIs provides (if
enabled) and values in the botNames setting)
M User with any kind of moderator/special powers
(so Broadcaster/Moderator/Global Moderator/Admin/Staff combined)
all subscriber and turbo users.
!status: to specify that the user must NOT have any of
the given status codes (see
status: for codes). For example:
!status:stM matches all 'normal' users that have no
badge by default (NOT a Subscriber, Turbo User or any kind of Moderator).
color: to specify a color other than the default one
for displaying this highlight. If you have items with a custom
color defined, which match something that might also be matched
by other items (with another color or custom color)
then the order of items is important so it displays the desired color.
Items on the top are matched first, so move items up that should take
precedence. For example
color:blue test2. If
test is on the top
it will never get to the blue one, because
always match when
test2 would match as well.
config: to specify one or more options (seperated
by comma) that changes the behaviour):
silent - Disable sounds for this item
!notify - Disable notifications for this item
info - This item applies to info messages instead
of regular user messages (works only for Ignoring messages at the
- Matches e.g.
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.
- Does NOT match
- (Match on word boundaries to prevent undesired matches)
Hello anywhere in the message, if the message was sent
by the user named
- Does NOT match
- (Combine a Meta Prefix (user-specific highlighting) and a Text Matching Prefix (case-sensitive))
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)
abc re:\w+ anywhere in the message
- Does NOT match
abc test, but also NOT
- (Can't combine Text Matching Prefixes)
- Matches e.g.
- Does NOT match
- (All Text Matching prefixes can also be replaced by regex)
- 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)
- Matches e.g.
Hello S! and makes the message
display in yellow color
- Does NOT match
- (Define a custom color for this item and match case-sensitive on word boundaries)
- Highlight messages that contain
Hello, but only if in
- (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
/ab add #joshimuz vip, notice the leading
- (Restrict matching by user status, channel category and start of message)
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
- Ignores the user with the name
name in channels
config:info subscribed to
- Ignores the
x has subscribed to y info messages that
you get when someone subscribes in the channel that is being hosted
- Ignores users in the addressbook category
ignore in all channels,
- Ignores messages starting with
!bet, but only in
- 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
/ab add #joshimuz subonly,
notice the leading
- Enable Ignore: Enable/disable the Ignore System
- Ignore own messages: Also ignore own messages (if
they match), can be useful for testing
- What should happen with ignored messages:
- Hide: Don't show ignored messages in chat
at all (they still get added to the
- Show count: Shows the number of ignored messages
in chat every 30s (if there were any), so you know that messages
- Show names: Shows the name of the sender of
any ignored messages, in a list similiar to MOD/UNMOD or JOIN/PART
- Only show if ignored messages dialog is not open:
Only show what is configured for "What should happen with ignored messages"
when the ignored messages dialog isn't currently open.
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
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.
If you enable logging, chat messages (and more if enabled) will be written
into a seperate textfile for each channel.
You can specify which channels should be logged:
- always - Log all channels without exception (default)
- blacklist - Log all channels, except the ones on
- whitelist - Log no channels, except the ones on the
- off - Log no channels whatsoever
- 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.
Normal chat messages are always logged, however you can log additional
- 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
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.
- 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
- Mod Actions
- Logs the commands performed by mods in your channel (Broadcaster/Mods only).
MOD_ACTION: tduva (host coollertmb)
- Restore Dialogs
- Open dialogs in default location: Always
open dialogs in their default location (centered on the main
window) when you open them.
- Keep location during session: Puts dialogs
at the same position when you reopen them during the same
session (so they are put on the default location when you open
them the first time after starting Chatty).
- Restore dialogs from last session: Puts
dialogs at the same position they were at when you closed Chatty
last session and also keeps the position during the session.
- Reopen dialogs from last session: Reopens
any dialogs that were open when you closed Chatty last session
and also puts them at the same position they were before.
- Restore position only if on screen: If enabled,
restores the position on start only if a large portion of the top of
the dialog/window is visible on screen. This is to prevent dialogs
from being lost off-screen by accident.
- Attach dialogs position to main window: If enabled,
moves the dialogs like Channel Info or Admin Dialog along with the
main window, so they always keep the same relative position. You can
still move the dialogs by themselves of course.
- Open URL Prompt: Enable this to be asked
when opening a URL. Even if this is disabled, you may still asked on
some occasions, but not for URLs in chat.
- Always show chat scrollbar: Always show the vertical
scrollbar in the chat window (there should never be a horizontal one),
even if no scrolling is necessary. This can be useful for using window
capture for streaming, because you can always keep the same subregion.
- Minimize to tray: When minimizing the main Chatty
window, it will be minimized to tray.
- Close to tray: Closing the main Chatty window will
not actually exit the program, but instead minimize it to tray. You can
actually close the program via
Main - Exit or the tray icon
- Default Userlist Width: The default width of the
userlist in pixels.
- Min. Width: The minimum width of the userlist in
- Enable userlist by default: Show the userlist by
default. When you disable this the userlist will be entirely hidden
from the start. You can always use a shortcut (Shift+F10
by default) to toggle the userlist per channel.
- Restore location/size: When you close a popout
window then it's location/size is saved and used for the next popout
window that is opened. Each saved location/size is only used once, if
there is none left then the default attributes are used. This is also
saved between sessions (attributes of popouts that are open when you
close Chatty are saved as well).
- Close popout when only channel: When you have a
channel popout window open and close the last channel in the main window,
then the popout window will automatically be closed and the channel
moved to the main window. Disable this if the popout shouldn't be closed
- 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
The Events table can contain several entries that
describe events and whether they should trigger a Desktop Notification
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
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).
- 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
- 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 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
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
Chat Message with a
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
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
- Enabled - No requirements, always show it
- Off - Never show
- When channel/app not active - Only when the channel
isn't the currently selected tab AND when the program doesn't have focus
- When channel or app not active - Only when the channel
isn't the currently selected tab OR when the program doesn't have focus
- When app not active - Only when the program doesn't
- When channel not active - Only when the channel
isn't the currently selected tab
- When channel active - Only when the channel IS the
currently selected tab
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
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
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
the folder in your standard file browser from here to add files to it more
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.
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 are now integrated into the Notifications.
- Inform me about new versions
- Checks for new versions every few days and outputs a message about it.
- Auto-Unhost when your stream goes live
/unhost command to your channel if you started
your stream session in the last 15 minutes and the stream status
changes (usually from offline -> live).
For this to work, you need to have joined the channel in Chatty,
either with the broadcaster account (so your own account if it's
your stream) or with an account that is an editor in the channel
(in which case you also have to add the channel to the
autoUnhostStreams setting, via
/add autoUnhostStreams <streamName>, in order to
tell Chatty that you are authorized/want to use the automatic
feature in that channel).
- 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
/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:
%title - The title of the stream
%game - The game of the stream
%viewers - The current viewercount
%followers - The current number of followers, only
updates correctly when the Followers Dialog for this channel is open
(Main Menu - Extra - Followers)
%subscribers - The current number of subscribers, only
updates correctly when the Subscribers Dialog for this channel is
open (Main Menu - Extra - Subscribers)
- The same as above, but formatted numbers (e.g.
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
and the game to
If the stream is offline it writes "Stream offline" to
title.txt and empties
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.
- Server: The default server to connect to
- Port: The default port(s) to connect to (can be
a list of ports, e.g.
- Correct Userlist:
If this setting is enabled, the IRCv3 capability that enables joins/parts is send
on connect. This doesn't mean you have to show joins/parts in
chat, it just means joins/parts are received in the background to maintain the userlist.
The server/port values are used when connecting, unless the commandline
-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
Manage the actual login data under
Main Menu - Login...
-token parameter to override existing token
- When specifying launch options you
-token parameter sets the login token used in
Chatty. If a token is already saved in Chatty, then the
parameter will have no effect, unless this setting is enabled.
- Overriding the token can be any 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
- 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 - Login..
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 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.
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:
- Names: Complete usernames in the current chat
- Emotes: Complete emotes you have access to
- Names, then Emotes: Both usernames and emotes appear in the result,
but sorted so that usernames are listed first
- Emotes, then Names: Same as previous, but emotes are listed first
- Custom Completion: Complete the keys specified for Custom Completion
(without having to use a
In addition to this there are special cases where a certain type of
Completion is chosen independant of these settings:
@ always completes usernames
/ always completes command names
: always completes Emoji codes (not Twitch Emotes!)
. always performs Custom Completion
- Certain commands such as
/ban always complete usernames
- Prefer Regular name for username-based commmands
- If you complete a username after a command like
which needs a regular username as parameter, then always prefer the
- 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
名前, 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.
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
- 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.
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.
chatty as Key and
http://chatty.github.io as Value and then in the
.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
command to modify custom completion items:
/customCompletion add <item> <value> - Add an item
/customCompletion set <item> <value> - Change an item if it already exists (or otherwise add it)
/customCompletion remove <item> - Remove an item
Remember that you can also use TAB Completion for command names. Kappab
Controls the behaviour of two different types of automatically stored
- The Channel History adds channel that you join to a list
- The Status Presets adds title/game/community that you set through
the Admin Dialog to a list
Both of these lists also allow you to manually add favorites, in addition
to the automatic history.
You can add hotkeys for certain actions. In general, there
are the following types of hotkeys:
- Regular hotkeys, which will only trigger if the main Chatty
window has focus (or a popout window).
- Application-wide hotkeys, which will trigger anywhere in
- Global hotkeys, which are supposed to trigger everywhere
on your computer (Windows only, Hotkey version required). However some hotkeys may
not work, so just try it out.
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
If a dialog pops up that tells you that global hotkeys
have not been properly initialized, check out the
When adding or changing a hotkey you have the following options:
- Action: The action to perform when the
hotkey is pressed. If you select
you have to enter the command to perform in the field below
(just the name of the command, see Commands).
- Hotkey: The key or key combination that
has to be pressed to perform the action, click into the field
and press the key or key combination you want to use.
- If the hotkey shows as being already used you may
still add it, but having more than one action defined
for the same hotkey will not trigger all the actions
when the hotkey is pressed, but a random one,
so it doesn't really make a lot of sense.
Adding it anyway can be sensible if you're currently
changing several hotkeys and will change the other
hotkey afterwards, so each key combination is only used
- Regular: Regular hotkey, which will only
trigger if the main window or a popout is focused.
- Application: Application-wide hotkey,
which will trigger if any Chatty component is focused.
- Global: Global hotkey, which will
trigger anywhere on your computer (only works with the hotkey
version of Chatty and if it loaded properly, Windows only).
- Delay: The delay between performed actions,
in 1/10th of a second,
if this is 0 then there will be no delay required, otherwise
specifying a delay of e.g.
50 will execute the
action only once per 5 seconds, even if you keep the hotkey
pressed. This can be useful for actions you normally would
only want to execute once (e.g. running a commercial,
sending a message to chat) and
that you don't want to spam by accident.