How this works

What the numbers on the dashboard mean, what they cannot tell you, and the places this is currently wrong.

The question

Not how is this streamer doing — plenty of tools answer that. Chatspike asks how is the internet reacting to this thing, right now, where the thing is a release rather than a person. So it watches many channels at once and reports the audience in aggregate. A single streamer going loud is that streamer's news; everyone going loud at the same moment is the release's.

What it counts

Every message in a watched channel, bucketed by minute. It never stores message text or usernames — only counts, the emotes used, and whether a message mentioned one of the target's keywords. Usernames are hashed in memory to count distinct people and are never written down.

Channels are picked two ways: a hand-written seed list, and live discovery of streams either in the target's own category or whose title matches a phrase specific enough to mean this release and not the franchise it belongs to.

Distinct people never add up

One person in three streams is one person, and someone who speaks in two different minutes is not two people. So the counters for ten seconds, one minute and one hour are all kept at the same time rather than derived from each other. Summing the narrow ones would have overstated a real minute by 53% when measured against live data.

A moment

A spike loud enough and long enough to be worth remembering: at least the median of the preceding half hour, at least 50 messages a minute, sustained for at least two minutes. The multipliers are not guesses — measured across live data, the 90th percentile is about 1.6× and the 99th about 6.8×, so 3× is genuinely rare. Lowering it produces noise, not moments.

Moments are kept forever, and each one stores its own context — who was loudest, what was being said, how it felt — because the minute-by-minute data behind it is deleted after thirty days.

On topic, and when we refuse to say

A chart of chat volume in watched channels is not the same as a chart of chat about the target. So each moment reports what share of messages actually mentioned the release, measured against how that target normally runs.

Two decisions matter here. First, the denominator is messages that carried any words, not all messages — during an emote wall nobody can type a keyword, and scoring that as "off topic" would discard the loudest reactions, which is exactly when streamers turn emote-only mode on. When that happens the page says emote wall · unmeasurable rather than a number, because that is the honest answer.

Second, only words that identify the release count as evidence. gta 6 and rockstar do; bare gta does not, because it matches GTA V, GTA RP and GTA Online just as happily — measured before this change, it was 67% of everything being counted as on-topic. Words like trailer and pull are charted but never counted as evidence: every game has a trailer and every raid has a pull.

There is no sentiment score, and there never will be

A single number claiming chat was 0.62 positive is a confidence the data does not support. What chat does have is a vocabulary: LUL is amusement, Kappa is sarcasm, monkaS is anxiety. So a moment reports a composition — mostly amusement, some shock — plus a count of what could not be read at all. A description the data supports, never a score it does not.

Where this is wrong today

These are known, unfixed, and worth knowing before you trust a number on the dashboard.

What it cannot tell you

It cannot tell you why chat reacted. It records that a spike happened, how big it was, who was loudest and what words and emotes were in the air. Whether that was a trailer, a leak, or something happening on that streamer's own screen is an inference, and one the data does not make on your behalf. Where a cause is known, it is marked on the chart as an annotation — a fact with a timestamp, written down by a person, not a guess produced by the tool.