tgsonar

How the score is computed

The formula is public on purpose: a rating nobody can verify is worth nothing. Not one value in it can be steered directly by an object's owner.

The general form

Each component is converted into a percentile within its own category — the share of objects in that category the object beats. A percentile rather than an average, because these distributions are heavy-tailed and a couple of giants break any linear scale.

Score = 100 × H × Σ (weight × percentile)

H is the purity multiplier, from 0 to 1. A multiplier, not a deduction: a channel with inflated numbers is not "slightly worse", it is not comparable at all.

Channels

ComponentWhat we measureWeight
ReachMedian views on recent posts0.40
Engagement rateViews divided by subscribers0.25
Posting rhythmPublishing frequency, optimum around one post a day0.20
StabilitySpread of views across our measurements0.15

Stability is not computed yet: it needs a longer measurement history than we have so far. Until then its weight is spread across the other components proportionally.

Reach rather than subscribers: subscribers can be bought for pennies, views cost noticeably more. Rhythm scored against an optimum rather than "more is better": a channel spamming 30 times a day is worse than one posting once.

Bots

ComponentWhat we measureWeight
MentionsReach of posts linking to the bot0.80
Own descriptionThe bot describes itself rather than leaving Telegram's placeholder0.20

Bots have no public popularity metric — no user count, no DAU. Only the owner knows those. So we use what can be measured from the outside instead.

What the formula leaves out, and why. Until 1 October 2026 it included availability and response speed. Availability only meant that the bot's page opens — the same for every live bot. And "response speed" was the load time of the t.me page, not the bot's reply. A bot's own reply cannot be measured from outside without signing in to Telegram, so we neither show it nor count it. A bot that doesn't work gets no score at all.

The purity multiplier

ConditionH
Scam or fake flag from Telegram0
Telegram restriction in place0.5
Name does not match the brand it claims0.7
Engagement rate outside the corridor 1.5–150%0.6
Subscribers rising, views flat0.5

What the formula leaves out

Owner-reported user counts, paid placement and user votes. Votes will only arrive together with protection against vote stuffing, and in a block of their own — not inside the main score.

Prototype status. The stability component and true bot availability need a history of daily measurements and MTProto probing. Neither is in the prototype, and their weight is redistributed automatically across the remaining components rather than being substituted with a zero.