Chatty (Version: 0.20)

General usage Chat basics Chat moderation / utility Chat customization Stream features Settings / Files About Issues Guides

Also check out the official YouTube Channel with guides and stuff.

Title and Tabs [back to menu]

Top of the main Chatty window, explaining the data in the title and the meaning of TAB colors

When in a channel, Chatty shows some information about that channel in the titlebar, e.g.:
[40|59] - GTA:SA Speedruns (Grand Theft Auto: San Andreas)

The first number is the number of people in the chat, the second is the viewercount, followed by the current stream title and game. Anything other than the number of people in the chat is requested from the Twitch API about every two minutes.

In addition, the titlebar will also show additional information, if enabled:

You can toggle showing some information under View - Options - Titlebar.

Note that the stream status (title/game, offline) can take a few minutes to update, since it has to be requested from the Twitch API (which is also heavily cached).

Layouts and Tabs [back to menu]

A layout is the arrangement of tabs in the Chatty window and popouts, which can be saved and restored later. Other GUI elements that aren't a tab (e.g. the Settings Dialog or Emotes Dialog) are not considered a part of a layout in this sense, so their location and size is determined in other ways.

You can open several tabs, which can be of basicially two different types:

You can use drag&drop on tabs in various ways:

You can also open the tab context menu (right-click) to perform various actions such as opening a popout or closing the tab.

Save and Load Layouts

You can save the current tabs, splits and popouts in a layout under "View - Layouts". Saving a layout is a snapshot of the current state, so if you make any changes that you wish to be saved, you'll have to save it again (add a new layout or overwrite an existing one).

If enabled ("Main - Settings - Main") the layout will automatically be restored when restarting Chatty, which is separate from saving layouts manually.

Aside from loading layouts through the menu, you can also use commands:

/layouts add <name>
Add a new layout with the current state. If the layout already exists, you will be asked whether you want to overwrite it. Example: /layouts add abc
/layouts save <name>
Adds a new layout with the current state or overwrites it if the layout already exists (without asking).
/layouts remove <name>
Removes the given layout.
/layouts load [-clm] <name>
Loads the given layout.
If no options are given (e.g. /layouts load abc) it will open the load layout dialog.
Options can be given to define how to load the layout, which also loads the layout immediately without showing the dialog. The options are equivalent to what you can select in the dialog: For example /layouts load -c abc keeps the current channels open, but does not join the channels in the layout. The options can also be empty, for example /layouts load - abc will not open any channels or keep any channels open (but the rest of the layout such as docked dialogs is still loaded).
You can use /layouts load -- -abc if your layout name begins with a - (in this case "-abc"), which opens the dialog just as if you hadn't provided any options at all.

Hotkeys [back to menu]

Default hotkeys which can't be changed:

The following default hotkeys can be changed in the Settings:

In the Settings you can configure hotkeys for many more functions than are listed here.

Commands [back to menu]

All command names are case-insensitive. Something like <parameter> represents a required parameter which must be entered for the command to work properly (you don't enter the surrounding < >, they are just there to show it's a parameter). Equivalently [parameter] represents an optional parameter.

You can also create your own Custom Commands & Customized Context Menus.

Tip: You can also use TAB Completion for many commands.

Chat commands:

Tip: You can circumvent Chatty commands and send Twitch Chat commands directly by prepending them with a dot . instead of a slash, for example: .mods.

Other Twitch Commands

Special Commands

These commands change how other commands are run.

Settings / Customization commands:

GUI commands:

Housekeeping/System commands:

Test commands:

Advanced commands (be careful with these):

Execute several commands

The /chain command allows you to run several commands at the same time. Each part separated by a | is basicially entered into the inputbox again.

/chain [command1] | [command2] | [command3]
Runs command1, then command2, then command3. This can be repeated further by adding more parts separated by |.
Whitespace around each command is trimmed.
Note: A | character in a command would be interpreted as a command separator. Escape | with itself to use the character without special meaning (||). If used in a Custom Command, the function $cs() (as in chain safe) can be used around replacements for escaping (e.g. $cs($1-)).


/chain /echo a | /echo b
Outputs a and b
/chain /echo a | /echo ||b||
Outputs a and |b|

When using /chain with Custom Command replacements, consider the following:

/chain /echo $cs($(msg)) | /echo abc
All replacements are performed before the /chain command is executed, so anything in $(msg) is put in first. If $(msg) contained Hello World!:
/chain /echo Hello World! | /echo abc
/chain /echo $(msg) | /echo abc
Assuming no escaping were to take place: If $(msg) would contain Hello | World! then the | in it would be interpreted as a command separator and thus World! would be separately entered into the inputbox (so it would output two /echo info messages and send World! to chat):
/chain /echo Hello | World! | /echo abc
This could cause serious issues, so it is recommended to always make sure text is safe to be used in the /chain command: When properly escaped, it will turn into this (which outputs Hello | World! and abc):
/chain /echo Hello || World! | /echo abc
/chain /echo abc $(chain-test)
You can test this by using the $(chain-test) replacement. This should (if e.g. added in the body of a Custom Command) output the following info message:
abc | /echo Test || Message
If you add a backslash in front, it will output two info messages:
Test | Message

Execute the same command for each entry in a list

The /foreach command allows you to run the same command for each entry of a space separated list. The command section is run as a Custom Command, with the $1 replacement containing a single list entry.

/foreach [list] > [command]
The command consist of the comma-separated list, the > character and the command to execute (whereas the command is run as it's own Custom Command with the $1 replacement).
List and command are trimmed for leading and trailing whitespace.
Note: Everything after the first > character is interpreted as the command. If you want to use a > in the list section you have to escape it with itself for it to be treated literally (>>). Both the list and command section will consume a single > only if they are repeated (>> to >, but > unmodified).
If you use a Custom Command replacement in the [list] section, make sure the text is safe to use:


/foreach a b c > /echo $1
Outputs a, b and c when entered into the chat inputbox.
//foreach a b c > /echo \$1
Outputs a, b and c when entered into the chat inputbox. Note that the double slash at the start runs this as a Custom Command, so the $1 needs to be escaped, so it is only replaced when the /echo is run for each list entry.
/foreach a <b>> c > /echo $1
Outputs a, <b> and c when entered into the chat inputbox. Note the escaped > in the list entry.
Open Streams=/foreach $fs($1-) > /openUrl\$1 (added as a Streams Context menu entry)
When several channels are selected and the command run, it will replace $1- with the list of selected streams and then open the URL for each one of them. Note that the $1 in the /openUrl command is escaped.

Detailed Explanation Example:

/foreachtest /foreach a b c > /echo \$1 (added to the Custom Commands list)
Outputs a, b and c when /foreachtest is entered into the chat inputbox.
Note the \$1 with the escape character in front, which preserves it for replacement when the /echo is run.

This is what happens when you enter /foreachtest:

  1. Replacements are performed on the Custom Command /foreach a b c > /echo \$1. Since the $1 is escaped it is treated as plain text and not replaced (the \ is consumed).
  2. The result /foreach a b c > /echo $1 is run and the /foreach command will use everything after the > as the Custom Command to run (and trim whitespace).
  3. The Custom Command /echo $1 is run with a as parameter, which results in /echo a being run. The same is repeated for b and c.

If the $1 is not escaped:

  1. Replacements are performed on the Custom Command /foreach a b c > /echo $1. The $1 is replaced with an empty string (no argument given with the /foreachtest command).
  2. The result /foreach a b c > /echo is run and the /foreach command will use everything after the > as the Custom Command to run (and trim whitespace).
  3. The Custom Command /echo is run with a as parameter (although there is no replacement to make use of it), which results in /echo being run, resulting in an error message. The same is repeated for b and c.

If the $1 is not escaped, but you provide a command argument, e.g. /foreachtest 123, then it will replace the $1 with 123 in the first step, so /echo 123 will be run three times.

Run a command in a specific open channel

The /runin command runs a command in the context of a specific open channel, as if you had entered it into the channel's inputbox. Without this, commands usually run in the context of the currently active channel.

/runin [channel] [command]
The channel must be a regular channel with or without leading "#" (#channelname) or a whisper channel ($username).
The command can be anything you could enter into a chat inputbox.


/runin #chan2 /echo abc
Outputs the info message "abc" in the channel "#chan2" (if it is open in Chatty).
//runin #chan2 //echo Channel context: \\$(chan) -> \$(chan)
This example is entered directly into a chat inputbox and outputs an info message about the changed channel context in "#chan2". Let's say the command is entered in the channel "#chan1".
The command begins with two slashes (//), so it is interpreted as an anonymous Custom Command: The result /runin #chan2 //echo Channel context: \#chan1 -> $(chan) is run, which runs //echo Channel context: \#chan1 -> $(chan) in "#chan2".
Yet again, the command begins with two slashes (//) and is interpreted as an anonymous Custom Command: The resulting command /echo Channel context: #chan1 -> #chan2 is then run and outputs an info message.

Execute a command on a delay

The /timer command allows you to run a delayed command after a duration or at a certain time. The timed command is run as if it was entered into the inputbox of the same channel that the /timer command was entered in (the command is not run at all if the channel is not a regular channel or not open anymore, unless the -a option is used).

Certain restrictions apply:

/timer [-options] [:id] <duration|time|'list'|'stop'> <timed command>
Optionally one or several options (-rs) can be specified:
The id is used to identify a timer after it has been started (e.g. to stop it). Can be anything (no spaces), if it ends with * an automatically generated number will be appended to make the id unique if used more than once. If no id is specified an automatically generated number without prefix will be used.
The duration is in seconds by default, but you can also append a time unit and several durations that get added up (no spaces):
An absolute time is written like a digital clock in 24hr format, a date can be added in front, in which case it has to be enclosed in [ ]. With no date specified the next occurence of the time is used, so e.g. if it's already in the evening a time of 5 in the morning would be on the next day:
Output info about currently active timers:
Stop active timers:

Twitch Login [back to menu]

The login data consists of a username (or account name) and most importantly an access token, which is sort of a revokable password that can also have different types of access (scopes) associated with it. You can see the full list of associated scopes under "Main - Account" (hover over each entry for more information if available).

Some more information on some scopes:

Chat access
Required to connect to chat. Some newer APIs need the "Read chat" and "Send chat" scopes, although for connecting to chat either should work.
Editor access
Allows you to change the stream title/game on your channel, for editors this only works with the old API (Admin Dialog).
Edit broadcast
Allows you to create Stream Markers/set Stream Tags on your channel and channels that you are an editor for.
Run commercials
Allows you to run comercials on your stream via the Admin Dialog (if you are partnered).
Show subscribers
Required to view the list of your subscribers via the Subscribers Dialog (if you have a sub button).
Your Subscriptions
Enables more accurate display of your emotes (for "Extra - Emotes Dialog", TAB Completion and when sending a message).
Moderate Channel
Required to receive moderator actions in channels you are a moderator, which show under "Extra - Moderation Log", show which mod performed an action in chat and shows messages caught by AutoMod (depending on settings under "Main - Settings - Moderation").
Points Redemptions
Enables more accurate display of Channel Points Redemptions in your channel.

If getting login data fails, read this guide. If your login was determined invalid, read down below.

Allow more/less access

To change what Chatty is allowed to do (e.g. if you haven't selected editor access before, but you want it now), you need to request a new access token. Just go to <Main - Account>, delete the login and request it again with the access scopes that you want selected.


The access token is saved in the login file in the settings directory and can thus be accessed by anyone having access to your computer. It allows anyone who obtains it to chat in your name and do the other things that you have allowed Chatty to do. If you think the token may have been compromised, please immediately go to your Twitch Settings subsection Connections and revoke the accesss there. This will make all tokens previously requested for Chatty associated with that account invalid. You can then request a new one for which Twitch will ask you to authorize Chatty again.

Invalid Login

If your login is determined invalid (either by checking it manually or when Chatty performed an automatic check), this can mean one of two things:

  1. Your login is actually still valid, Twitch is just derping:
  2. Your login is actually invalid:

What happens when your login is no longer valid:

Joining Channels [back to menu]

There are various ways of joining channels:

Channel list format

In places where you can enter a channel name you can specify several channels by separating them with a comma. Channels can be entered with or without leading #. A lot of Twitch links should also work.

Various special elements can be added that are turned into channels:

Example: /join #joshimuz, esl_csgo, [mod],, [* live]

(joins #joshimuz, #esl_csgo, any entries associated with the mod Addressbook category, #esamarathon and any favorited channels that are live and followed)

User Status Symbols [back to menu]

There are a few special symbols that are used for users in chat. These are displayed in the userlist and - if usericons are disabled - also in chat:

~ The Broadcaster
@ Moderator
+ Turbo/Prime
% Subscriber
$ Donated Bits
^ Bot (as recognized by local setting, FFZ API and BTTV API)
* Global Moderator
& Staff, Admin

When you copy&paste a message from chat that contains Badges, you may also encounter the following symbols:

' Addon Usericon
? Unknown Badge (for example special Twitch Badges that may only be available for some time or in some channels)

FrankerFaceZ provides a custom mod icon for some channels. You can disable this in the settings if you want to keep the default one for all channels.

Userlist [back to menu]

The userlist on the side of the channel shows all users currently considered to be in the channel.

In order to receive JOIN/PART messages, the setting Correct Userlist under Settings - Advanced - Connection has to be enabled.

Note: The userlist is not very reliable and should only be taken as a rough estimate of who is currently in the channel. This is because:

Also note that the userlist doesn't necessarily have to do with who watches your stream. A user can be logged into chat without watching the stream and vice versa. Overall, just don't take the userlist too seriously.

TAB Completion [back to menu]

When typing in the inputbox, you can use the following keys by default (this can be changed in the Completion settings):

Once a completion is initiated, TAB and Shift-TAB cycle forwards and backward through the results, or use the mouse.

Some prefixes always force a certain completion type (whether you use TAB or Shift-TAB):

Additionally, some prefixes will automatically initiate completion (this too can be changed in the settings).

Further usage

The found matches are all ordered alphabetically, except for nickcompletion for which you can choose different types of sorting. By default nicknames use predictive sorting, which means users who recently wrote a message or highlighted you have a higher priority, increasing the chance that the users you want to address appear as the first few matches.

Example: Nick Completion

Example: Emote Completion

Input History [back to menu]

Chatty provdes an input history for the chat input box that allows you to call up lines you entered previously, to make it easier to e.g. repeat commands with similiar parameters, repeat messages you send to chat or just look up what you wrote before. You can even save messages to the history that you haven't send yet to be able to send them later.

Note: On a multiline inputbox you have to hold Ctrl to navigate through the Input History (changeable in Chat Settings).

Joining more than one channel [back to menu]

This does not apply anymore since Twitch changed their system to use IRCv3 capabilities. Joining several channels does not have any drawbacks.

Favorites / History [back to menu]

If enabled, the history automatically saves channels you join and when you last joined them. By default channels expire from the history after 30 days of not joining them (can be changed).

You can also add channels from the history or any you enter manually to the favorites, which will always be kept until you remove them yourself.

Rooms [back to menu]

The new Rooms can be used in Chatty:

Currently not available in Chatty:

Highlight [back to menu]

The highlight system allows you to add words or phrases that make chat messages appear in another color and appear in a separate window, which you can open under View - Highlights (you can clear the highlights window in it's context menu).

More information: Highlight Settings

Ignore [back to menu]

The ignore system works very similiar to the highlight system, just that it hides messages instead of highlighting them. They however also get added to a separated window, which you can open under View - Ignored (you can clear the messagess in the window in it's context menu).

Right-click on a user in chat to open the User Context Menu, where you can ignore or unignore that user from the Miscellaneous submenu. You can view and edit the list of ignored users in the settings.

More information: Ignore Settings

User Colors [back to menu]

The color of a user is displayed in the User Info Dialog. Color Names are used where possible, HTML Color Codes are displayed in the Tooltip. Colors with asterisk (*) are default colors (the user hasn't set one or hasn't said anything during this session yet). A color in parentheses means it's the original color, while the other color is the corrected one that is actually displayed.

Corrected Colors

Chatty attempts to make colors more readable automatically by changing them to increase contrast. This doesn't work very well though, although it should work for extreme cases like white on white or black on black.

Custom Colors

You can also specify custom colors for certain users or types of users in the settings. Custom colors are indicated by two asterisks (**) in the User Info Dialog.

More information: Usercolor Settings

Emoticons / Emote Dialog [back to menu]

Chatty supports the following types of emoticons:

Tip: You can use TAB Completion for Emoticon codes (Shift-TAB by default) and Emoji shortcodes.

You can enable/disable Emoticons in general (displaying the images instead of the text) in the settings under Emoticons. You can also ignore specific emotes in the same place in the settings.

In chat you can right-click on an emoticon to show some info about it. Click on the emote code (e.g. FrankerZ) in the context menu to insert the emote in the inputbox. If it is a subscriber emote, you also have some more options.

Emote Dialog

Use Extra - Emoticons or press Ctrl-E to open the Emote Dialog, which has various pages:

Click on an emote to insert it into the current channel inputbox. Double-click on an emote to also close the Emote Dialog in the process, or press ESC or Ctrl-E to close it. Right-click on an emote to show a context menu with some more information/options.

Right-click on an emote and choose Show Details to open the Detail View in the Emote Dialog, which shows the emote in different sizes and some information about it. Clicking on an emote in chat also opens the Detail View.

Note that you need to have joined at least one channel for your subemotes/turbo emotes to show up, because only then does Twitch Chat send that information to the client.

Custom Emotes (local) [back to menu]

You can add your own local emotes by creating a file called emotes.txt in the settings directory (enter /dir in Chatty to find the settings directory, /openDir to directly open it). The file can have one emote on each line, for example:

D:      aww.png     size:18x18
re:Gr[e|a]yface Kappa.png
# Switching Kappa and MiniK
MiniK     set:793 id:3287

This can be used to replace existing emotes, since custom emotes are checked first and thus take precedence. This is not intended to replace FFZ or BTTV emotes, just to help configure emotes to your personal preference. For example you could also add an image for you own name to have it highlighted in chat in a different way.

Note: The emotes.txt should be saved in the UTF-8 encoding (or ASCII I guess).


The syntax per line is (you can use as many spaces or TABs as seperators as you want):

[settings] <code> [settings] <image> [settings]

Settings can be in any of the shown places, but are always optional. Available settings are:


Lines starting with # are ignored and can be used for comments.

The emotes.txt file is loaded when you start Chatty, so if you edit the file while Chatty is running, you have to use the /reloadCustomEmotes command for it to take effect. Emote images may be cached, so if you change the image, you MAY have to clear the cache (/clearemotecache CUSTOM).

Addressbook [back to menu]

This has been moved to it's own page

User/Line Selection Mode [back to menu]

With this feature, you can select a user in chat with keyboard shortcuts (if the window is active). So you can e.g. timeout a user with your keyboard alone.

Press Ctrl-Space (can be changed in the settings) to enter this mode. If there are any user messages in chat, then the newest message will get another background color which shows that it is selected. In that mode, the focus is on the textpane, which enables more shortcuts:

When you move up and down, it actually switches to the next user instead of to the next line. So if the same user send 10 messages in a row, it will jump to the first message of the next user above it.

In addition to the currently selected message, it will also highlight all other messages by the same user. You can also hold AltGr and click on a username in chat to highlight all that users messages (and enter User Selection Mode).

You can also click and hold in an empty area of the textpane, which puts and holds the focus there, so you can just use the shortcuts in the list above to enter the User Selection Mode and switch between messages. However if you let go of the mouse key, it will immediately leave the mode again.

Using Global Hotkeys

You can also configure global hotkeys with some User Selection actions. However, if the focus is not on the chat, then the usual shortcuts won't work, so you'll have to define additional global hotkeys to e.g. timeout the currently selected user. See the hotkey settings for what actions are available.

Stream Chat [back to menu]

Stream Chat is a separate dialog, opened via the /openStreamChat command or the Extra menu, which is different from normal chats:

Getting started

For chat messages to appear in the Stream Chat, you have to both enable the channel and join the channel in Chatty normally.

You can enable channels in the Stream Chat context menu (which will offer to enable currently joined channels) or use the following setting commands (channel all-lowercase):

Other settings

/set streamChatLogos <size>
Set the channel logo size (pixels). Set to 0 to disable.
Logos are only shown for channels that have been live during the current session. Changes only affect new messages.
/set streamChatMessageTimeout <seconds>
How long messages are displayed before they disappear. Set to -1 to disable.
/set streamChatBottom <0/1>
Disable so messages start being inserted at the top.
Restart required to apply changes.
/set streamChatResizable <0/1>
Whether Stream Chat dialog should be resizable.

In addition, make sure you have Settings - Window - Restore dialogs set to at least Restore dialogs from last session in order to keep the position/size of the Stream Chat dialog between sessions.


Custom Names [back to menu]

You can give people in chat custom names that will appear in chat and in the userlist instead of the regular Twitch username and in the User Info Dialog in addition to the regular Twitch username. In other places (like the User Context Menu) the regular Twitch username is used.

TAB Completion also allows you to complete Custom Names and by default also includes the original name in the results.

The following commands are used to set custom names:

In addition to these commands, you can also view and change Custom Names via the Settings GUI under Names. You can also right-click on a user in chat to open the User Context Menu and choose Miscellaneous - Set name to open the Settings with the name preset.

Pause Chat / One-click moderation [back to menu]

If enabled in the settings under Main - Settings - Chat you can stop the chat from scrolling down while you move the mouse over chat. This can prevent misclicks when the chat is moving. The chat will resume scrolling down as soon as you stop moving the mouse or move it out of the chat area. When the chat is already paused, you can also hold Ctrl to keep the chat paused even without moving the mouse.

Optionally, you can set it to require Ctrl being pressed in conjunction with moving the mouse to initiate pausing. You can let go of Ctrl as soon as pausing is started and it will stay paused as long as you move the mouse inside the chat area.

A little popup in the top-right will indicate that the chat is paused.

Please note: This only works when the chat area is already filled, so the scrollbar is actually used. In addition, there may be instances where something you want to click will move anyway, for example if a message is deleted due to a timeout/ban, causing other messages to move.

Scroll up to stop scrolling

Another way of preventing scrolling down is scrolling up. Once you are manually scrolled up, chat will stop scrolling down automatically. However messages may still be removed from the buffer causing the chat to move despite it not actively scrolling down. It will stop removing messages to get moving to a minimum as long as you keep holding Ctrl.

A certain time after not moving the scroll position, it will scroll down automatically (unless Ctrl is still being pressed).

One-click moderation

Holding Ctrl and clicking on a user in chat can execute a ban or timeout on that user. Enable this feature and define what it does in the settings (Main - Settings - Chat).

It is recommended to enable the pause chat feature if you are using this, or else misclicks could be very common.

AutoMod [back to menu]

AutoMod is a Twitch feature that filters messages before they are send to the chat clients. As mod in the channel you can review and either approve or deny those filtered messages in different ways:

AutoMod Dialog

In the dialog you will see filtered messages of the current channel (if you are mod). Open the context menu on a message (usually right-click) to approve or deny that message. Double-click on a message to open the User Info Dialog for that user to be able to see his previous messages or ban/timeout the user.

Shortcuts available when you have a message selected:

Messages can have different prefixes depending on their status:

Messages that have already been handled or that are older than 5 minutes (and can thus probably not be approved/denied anymore) are shown greyed out.

Channel Info / History [back to menu]

The Channel Info Dialog shows the current stream status of the active stream. The data is requested from the Twitch API in a semi-regular interval, so it can take some time to update.

Stream Uptime

If the stream is online, the Live: 1h 30m shows how long ago the stream was started. That time comes directly from the Twitch API, so it is able to show the correct online time, even if you started Chatty after the stream started.

If there is a time in parentheses (like 1h 30m (2h)), then that time denotes how long the stream was online, but including small offline periods (PICNICs) of at most 10 minutes, which means that this time is more of a guess of what might be expected as stream online time and also depends on when Chatty got the data (if you join the channel after a PICNIC, then it won't include the time before, because it never received the data for it).

History Graph

The History is a graph that shows the development of the viewers of the currently active channel and also indicates stream status changes (online/offline/title/game) by different colors.

Hover over points to display the stream status and viewercount at that time. Right-click for a context-menu.

There are two ways to change which time range is being displayed:

  • Time Range means only the last x hours are being displayed. For example if the whole data spans 10 hours you can choose to only display the last 2 hours. This will display the maximum range after the actual range (even if the actual range isn't as long as the maximum range):
    15:32 - 19:14 (2h)
    You can change this via the context menu.
  • Fixed Start/End means that either the beginning of the displayed data is fixed or both the beginning and end of the data are fixed, meaning that the displayed graph will never change. The times that show the actual range indicate whether they are fixed:
    |15:58| - 19:14 or |15:58| - |18:20|
    Double-click on a point to set it as a fixed start, then double-click on another point to set it as a fixed end. Double-click anywhere else to clear fixed start/end. This setting is channel-specific and isn't saved when you close Chatty.
History Demonstration

The History is recorded while you have the channel open in Chatty as well as for all followed channels, if you have that feature enabled.

The shown data usually fits to the available vertical space (so if the min/max viewercounts were 341/403 then only this range is shown). If you choose Toggle Vertical in the context-menu, you can switch between the shown range (min/max) and the full range (0-max).

Live Streams / Notifications [back to menu]

Chatty can show Notifications when the status of a stream changes. There is also a Live Streams window (Channels - Live Channels) that shows the currently live streams. Both these features always include channels you have joined and - if enabled - channels you have followed. Streams that are no longer online, or whose channels you have left and you don't follow, are added to a list that you can open in the Live Streams window context menu (Removed streams..).


Chatty Notifications are little info boxes that can be shown for stream status changes and highlighted messages. When you left-click on a notification it is closed immediately, right-clicking closes it as well and in addition also joins the associated channel.

More information: Notification Settings

Followed Streams

Chatty can request a list of streams you follow on a regular basis, so you have both an overview of currently live streams as well as be informed about status changes (offline -> online, title change, game change). This is always available for streams whose channels you have joined in chat, but with this feature enabled, this works for all streams you follow even without joining their channel.

This feature requires Show followed streams access, so Chatty can request your followed streams. Read the section about login to learn more about login data and access.

You can enable/disable this feature in the Settings under Notifications.

Admin Dialog [back to menu]

This has been moved to it's own page

Followers/Subscribers List [back to menu]

You can open a list of the Followers of a channel by joining that channel and then opening the Followers Dialog via Extra - Followers. It always opens on the currently active channel, or if you are in no channel at all, your own channel.

You can open a list of your Subscribers by opening the Subscribers Dialog via Extra - Subscribers. It always opens on your own channel, because you can only display the Subscribers of your own channel. If you don't have any Subscribers, it will simply show an empty list (and an error). You also need to have selected the necessary access when requesting login data.

You can save the current list to a file by right-clicking on the dialog (not the list) and selecting the format.


Both the Followers and Subscribers Dialog otherwise work in pretty much the same way. Data is only requested as long as you have the dialog open. It is requested in a semi-regular interval and then displays that data in the list (and some stats).

If followers/following is mentioned below, then the same applies for subscribers/subscribing in the appropriate dialog.

At the top it shows some stats:

  • Total: The total number of followers (not to be confused with the followers shown in the list, which are the most recent 100). After the total number, it shows the change compared to the last update, e.g. Total: 3.190 (+2), which will stay there until the next update.
  • Week/Day/Hour: These are some stats based on the current list shown below. It shows how many followers there are in the list that followed in the last 7 days (Week), 24 hours (Day) and 60 minutes (Hour). (So Day does NOT mean Today as in since 0:00.)

    If it says 99+ it means that there are more than 99 followers in that timespan, but Chatty can't determine whether it's 100 or more than 100, because the list only contains the 100 most recent followers.

There are different background colors for some entries:

  • New entries (meaning entries that appeared first in the last update)
  • Entries of the last 15 minutes
  • Entries of the last hour

The time has different colors for older entries:

  • Entries older than a day
  • Entries older than a week

At the bottom, it shows approximately how long ago data was last received, or a short error message if an error occured.

Followers Dialog

About New Followers/Refollows

Everything that determines whether a follower is new or a refollow is saved per session. So if you restart Chatty, it assumes that all followers except from the first request are new. So if you start Chatty, open the Followers Dialog on your channel, it will load the followers for the first time and show none of them as new. Now if it updates a minute later, and there are users it hasn't seen as having followed before, then it assumes these users as new followers.

Now a user of course might have been a follower for a year, then unfollow and follow again. Chances are that Chatty won't notice that and assume a new follower. What it however does is that it only shows each user as new follower once per session. So if someone follows and Chatty shows that user as a new follower, then that user unfollows and follows again, Chatty will notice that the first and the second follow time are different, and will show this user as a refollow (the name slightly grey).

So this basicially just prevents the same user from e.g. making a sound go off (if you have that enabled) several times just by refollowing several times. At most that will happen once per session. Other than that the data is mostly shown just as it comes in from Twitch. It will still show refollows on the top of the list.

Stream Highlights / Markers [back to menu]

Chatty can help you with creating Highlights of your stream by recording the stream time (how long the stream has been online) using a command or hotkey. When you add a Stream Highlight in Chatty, it is written to a file which you can then view later.

The following commands are available:

You can also add a hotkey to add stream highlights, so you can also do it yourself while streaming out of a game (given that global hotkeys work in the game).

The highlights are written to the file stream_highlights.txt in the exported subfolder of the settings directory (which you can open with the /openDir and show with the /dir command).

Chat Command

You can also let users in chat (e.g. Mods/VIPs) add Stream Highlights (!highlight [comment]), which you can configure under Main - Settings - Stream Highlights.

Stream Markers

Twitch offers a way to add Stream Markers which show up when creating Highlights on the website. You can use the /marker command or add a Stream Marker automatically when adding a Stream Highlight (changeable in the Stream Highlights settings).

For creating Stream Markers you need the Edit broadcast scope, so if you don't have that yet, you have to request a new login token.

Ignore joins/parts [back to menu]

Both the ignore joins/parts and Twitch Client Version 3 option have been removed. You can now disable the Correct Userlist setting to not get any joins/parts if you think it could improve performance.

Run custom processes [back to menu]

Using the /proc command you can start processes directly out of Chatty. An example of where this is already integrated into Chatty is starting Streamlink, however this is a more basic implementation.

You should only use this if you know what you are doing, running system processes can be dangerous if done wrong. Take special care when unsafe/unpredictable text is being used, for example from chat messages, which may need to be properly quoted/escaped depending on context.

Example: /proc exec notepad H:\hl.txt will start Notepad and open the given file.

Note: Commands and output of the process is logged in the Debug Log which is written to file and output to Extra - Debug window.

Launch options [back to menu]

There are a few options you can launch Chatty with, that will override settings loaded from the settings file or change how Chatty is started. You need to run Chatty from the commandline or Create a shortcut to use these. If you're using the Standalone version you can also specify launch options in the Chatty.cfg.

-server <host/ip>
Specify a different server to connect to
-port <port>
Specify a different port to use for connecting
-user <username>
Your username
-password [password]
Login with password instead of access token, optionally also the actual password to use. Twitch doesn't allow password login anymore.
-token [token]
Login with the given token.
The username currently saved in Chatty must match the account associated with the given token. If no login data is currently saved in Chatty or the username is different, you have to use -user to set the correct username.
Connect immediately when starting Chatty
-channel <channel>
The channel to join (you can specify more than one channel by separating them with a comma)
Don't save settings automatically (they can still be saved manually via "Main - Save..")
Use current working directory as settings directory. This can be useful to make Chatty more portable or use several different setting files on the same computer. More information..
-d <dir>
Same as -cd, except that you directly specify the settings directory to use. The specified directory has to already exist (even if you just created an empty directory for it).
Creates a directory called "portable_settings" next to where the "Chatty.jar" is located and uses that as settings directory.
-set:<settingName> <setting value>
Change any setting that can be edited via the /set command (see Setting Commands).
-single [port]
Run in single instance mode, which means if you start Chatty while it's already running the parameters are forwarded to the already running instance instead of starting another one. You have to specify the -single parameter with the same port (or no port to use the default one) for all instances that you want to have run in the same single instance mode.
The port is listened to locally to check if any instance is already running and to forward the commandline parameters. If you don't supply a port a default one is used. If the used port is already taken by another program you have to specify one that works or else no instance of Chatty will be able to start.
Currently only the -channel and -cc parameters are forwarded to an already running instance.
-cc <name> [parameters]
Execute the Custom Command with the given name on start. The parameters are optional. When used in combination with -single, the command will be executed on the already running instance.

Setting commands [back to menu]

Go to: Setting Commands

Setting files [back to menu]

Go to: Chatty directories and files

Contact [back to menu]

If you are reporting an issue, please read the page on Reporting Issues.

If you are referring to a specific version of Chatty, please provide the actual version number, which you can find on the top of the main help page in Chatty (this one if you are reading this in Chatty, otherwise go to Chatty and open Help - About/Help or press F1). You can also use the /appinfo command.

About/License [back to menu]

Go to: About page