PlayerSells reads a public Telegram channel's post archive on t.me - up to 5 pages of 20 posts, about 100 in total. Each post gives up an exact UTC timestamp, a view counter, a reaction bar, the text, and markers for media, link previews, forwards and replies. No API key, no bot token, no account, and nothing that is not already visible to anyone who opens the channel.
Every verdict is internal to the channel and corrected for post age. Telegram view counters only ever go up, so the oldest posts win any raw comparison automatically; each channel's own accumulation curve is fitted from its own posts and each post is scored as a ratio against what its age predicts. A post is called above or below normal at 25% either side of typical, which is deliberately loose: t.me abbreviates view counts above a thousand to three significant figures, so a few percent of any gap is rounding rather than reach.
Format effects are medians, not averages, and they come with their sample sizes attached. One post going viral would otherwise decide the answer for whichever half of a split contained it. A split whose halves sit within 10% of each other is reported as no real difference; a split with fewer than 4 scored posts on either side is reported as not enough data. Both are printed as rows in the table, because a table showing only the confident findings hides how thin the rest of the evidence was.
Posts under 6 hours old are listed but carry no verdict. A post's first hours accumulate faster than any single exponent describes, and measured on @nexta_live on 3 September 2026 the four newest posts in an 84-post sample scored 0.57 to 0.86 while the age band around them averaged 1.01 - they were young, not weak. Without that floor the "fell shortest" panel on a busy channel is its four most recent posts, every single time.
The floors are 12 posts with usable timestamps before the tool answers at all, and 8 carrying view counters before anything is ranked. A channel that publishes no view counts is refused with that stated as the reason, because substituting zero would report a working channel as having reached nobody.
Reactions are read from the reaction bar Telegram renders under a post. Not every channel enables them, so the result reports how many of the posts it read actually showed one rather than treating an absent bar as zero reactions.