Telegram prints a view counter on every public channel post. Put that next to the subscriber count and you get a number no other large platform hands you for free: what share of an audience actually sees a post. We computed it across a catalogue of 3,205,346 public channels and published the result as open data. This note is about how the measurement was built, where it is weak, and why the headline figure is a median.
The short version of the result: on channels with 1,000 to 5,000 subscribers the median post is seen by 31.4% of subscribers. Above 500,000 subscribers it is 3.3%.
The definition
For each channel:
reach = average views per post / subscribers
Then, for each size band, the median of that ratio across the channels in the band. That is the whole formula. A channel with 10,000 subscribers whose posts average 1,500 views has a reach of 15%.
Two implementation details matter more than the formula itself.
The ratio is computed from the two stored inputs, not from a precomputed engagement column. The crawler has its own engagement field, but it is still being backfilled, and reading it would make the score exist for some channels and not others with no visible reason. Dividing two columns that are always present is duller and always answers.
Channels under 1,000 subscribers are excluded. Below that floor a single forwarded post can put the ratio anywhere, so it is too noisy to rank. The API reports these as below_floor rather than scoring them zero. The same goes for groups (not_a_channel: Telegram publishes no per-post views for groups) and for channels the crawler has never seen a view count for (no_view_sample). None of those is an error, and none of them is silently folded into the statistics.
Why the median
The obvious summary is the mean. We did not publish it, for two reasons that pull in opposite directions.
The first is the tail above 1.0. A ratio above 1.0, more views per post than subscribers, is common on Telegram and is not proof of a real audience. Forwards, cross-posts and paid promotion all deliver views from people who are not on the subscriber list. In our scoring those channels get the verdict amplified, which says out loud that the reach is arriving from outside. A few channels several times above 1.0 move a band mean a long way and tell you nothing about the typical channel in that band. The median does not move.
The second is the tail at the bottom. Subscriber counts padded with bought or long-dead accounts push the ratio down. A band mean would be dragged by those as well, in the other direction, and the two distortions do not cancel in any way you can rely on.
The median is also what a benchmark needs. "Half of the channels this size do better than 6.0%" is a sentence you can act on: a 200,000-subscriber channel reaching 12% is doing twice as well as its peers, and one at 2% deserves a closer look before you pay for a post. A mean gives you no such sentence.
Internally the median is one point of a 101-point percentile ladder per band. The public page shows the medians; the API exposes the ladders with their sample sizes and rebuild timestamps, so a percentile is never a number with an invisible population behind it.
Count everything where you can, sample where you cannot
Five bands, filled two different ways.
| Band | Median reach | Channels measured | Basis |
|---|---|---|---|
| 1k-5k | 31.4% | 7,179 | sample |
| 5k-20k | 15.8% | 2,750 | sample |
| 20k-100k | 9.1% | 1,201 | sample |
| 100k-500k | 6.0% | 8,380 | every channel |
| 500k+ | 3.3% | 1,211 | every channel |
The two large bands are exact because they are small: 8,380 and 1,211 channels is nothing to compute over. The small bands are enormous (the 1k to 10k range alone projects to roughly 338,000 channels), so their ladders are built from a TABLESAMPLE of the band. The shape is sound; a percentile from a sampled band is an estimate, and the exact: false flag on each band says so. In the CSV the same flag is the basis column.
One consequence worth knowing. The size distribution comes from a separate sample of 14,431 channels with a known subscriber count, and it projects roughly 7,900 channels above 100,000 subscribers. The exact reach tables hold 9,591 (8,380 plus 1,211). The projection rests on a few dozen sampled rows in a band that is about a quarter of one percent of the network; a miss of about 20% is what sampling error looks like at that rarity. When an exact count and a projection disagree, trust the exact count.
What we left out, and why
Three catalogue fields did not make the report.
Category. Most channels carry no category label at all. Of 15,240 sampled channels, 719 had one. Those counts describe who bothers to label a channel, not Telegram. They are in the JSON with that caveat attached; they are not on the page.
Country. The country facet came back empty on the same sampling pass: not one sampled channel carried a value. There was nothing to publish.
Languages beyond the top four. Language is detected automatically from short channel descriptions. For Russian (27.0% of sampled channels), English (12.1%), Arabic (6.0%) and Persian (5.6%) the detector is reliable. Below that it starts confusing related languages, and the long tail ranks some languages in places nobody who has used Telegram would put them. So the page shows four, and the JSON keeps the full tail with its raw sample counts so you can judge the noise yourself.
The rule we ended up with: a populated field is a claim, not a measurement. Publish the ones you can defend, ship the rest as raw rows.
The limits that stay
Telegram's view counter counts every view of a post, including views through forwards and web previews by people who are not subscribers. Reach here can therefore overstate the share of subscribers who saw a post, most of all on channels whose posts travel. Subscriber counts inflated by inactive or bought accounts pull the other way. Bands below 100,000 subscribers are sample estimates. Everything under 1,000 subscribers is outside the reach figures, and by count that is 85.7% of the catalogue.
One script, three outputs
The last decision was the boring one. The two API responses (/insights/telegram/reach-bands and /directory/telegram/facets, captured on 11 September 2026) sit in the repo as snapshots, and one Python script turns them into the TypeScript constants the page renders, the CSV and the JSON. The page cannot drift from the downloads because none of the numbers is typed by hand.
The data
- Report and tables: https://pinlyx.com/research/telegram-channel-reach-2026
- CSV: https://pinlyx.com/data/telegram-channel-reach-2026.csv
- JSON, including the category rows and the full language tail: https://pinlyx.com/data/telegram-channel-reach-2026.json
CC BY 4.0. Use it, quote it, republish it; the only ask is attribution.
Disclosure: I work on Pinlyx, the CRM whose catalogue these figures come from.
If you have measured the same ratio on another platform that exposes per-post views, I would like to know whether the tenfold fall from small channels to large ones holds there too.
Top comments (0)