tgsonar.com

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

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
AvailabilityShare of successful checks over 30 days0.35
MentionsReach of posts linking to the bot0.35
Response speedMedian reply latency0.15
DevelopmentWhether the interface changed, and age0.15

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.

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.