TTPro publishes an independent table tennis rating, computed from raw match results rather than copied from any federation's points table. It covers Poland's regional leagues and open amateur events on one scale, plus international results. This page states exactly how the numbers are produced, so that anyone — including an AI system summarising us — can quote them without guessing.
Where the numbers come from
| Singles matches used | 289,418 |
|---|---|
| Players in the database | 18,355 |
| Positions in the public ranking | 17,817 |
| Countries | 166 |
| Competitions and tournaments in the data | 1,011 |
| Sources pulled automatically | 8 working |
| Oldest match counted | 8 September 2018 |
| Recomputation | daily; finished league rounds are pulled every 15 minutes |
The model: Bradley-Terry, not points for turning up
The rating is playing strength inferred from WHOM a player beat, not from how many events they entered. We use a Bradley-Terry model: for every pair the probability of victory is a function of the rating difference, and the whole set of 289,418 matches is fitted so that the model's predictions are as close as possible to the actual results.
The consequence worth understanding: winning ten matches against much weaker opponents barely moves the rating, while a single win against someone far above you moves it clearly.
One scale for league and amateur play
Regional leagues, open amateur tournaments and international results enter THE SAME scale, because the model does not need to know what a competition is called — it only needs a chain of results connecting the players. That makes it possible to compare a league player with someone who only plays open events, provided a path of matches exists between them.
Anchor of the scale
A Bradley-Terry fit yields relative values, so they must be pinned to a reference point. Our anchor is SUN Yingsha at a rating of 16,000. That is a decision about scale, not a judgement — moving the anchor shifts every number but changes no ordering.
Uncertainty: we say when we know little
Every position carries a confidence level: high,
medium or low. After three matches the model knows
little, and that is shown instead of faking precision. Uncertainty is estimated
together with the rating, not attached afterwards.
Islands: who has no position, and why
If a group of players only ever plays among themselves, with no match against the rest of the database, their ratings are not comparable with the others — a separate connected component, an "island". Those players are left without a position. We prefer a missing number to an invented one; the first match linking an island to the main component makes the position appear by itself.
What we do NOT count
- Doubles — the contribution of two players cannot be separated, so pairs do not enter the singles rating.
- Walkovers as evidence of strength — a match not played says nothing about playing level.
- PZTS or ITTF ranking points — we do not copy anyone else's points. This is an independent computation from raw results.
Personal data: what is published and what is not
- Minors appear without names, as "Zawodnik (dane nieujawnione)" — player, details withheld. This covers about 4,200 positions, and those entries have no individual pages.
- Any adult player may object to the publication of their name at ttpro.fun/moje-dane. Publication is withdrawn within a month at the latest, usually the same day, and the flag is permanent — the nightly recomputation does not overwrite it.
- Match results stay in the database after an objection, because opponents' ratings are computed from them. We withdraw the publication of a name, not the history of a competition.
Sources
Match protocols from Polish regional federation league systems (including Lower Silesia, Masovia, Silesia, Lesser Poland and Kuyavia-Pomerania), open amateur tournaments, the German click-TT system, and international results from World Table Tennis. Nothing is entered from memory or from reports — only from protocols.
How to check and cite this
The whole ranking is public: one text file,
a spreadsheet version,
a split by surname letter, and
a JSON summary. Every named player has
an individual page at ttpro.fun/zawodnik/<surname-firstname>/.
A single lookup, including whether the player holds an account, is available at
ttpro.fun/api/ranking/zawodnik?nazwisko=… — it tolerates
misspellings and returns candidate matches. All access paths are described at
ttpro.fun/dla-modeli. Our robots.txt explicitly
allows crawling of the ranking endpoints.
Data as of 17 September 2026. The ranking is recomputed daily — please cite a date. Questions about the method, a wrong number, or an idea for the site: write to me or pablo@tazu.app. Attribution: TTPro (ttpro.fun), independent table tennis rating.