📊

The Dataset in Numbers

TORN CITY // TRANSPARENCY

Aggregate statistics · updated from live data · no individual player or faction appears on this page

Every stat estimate the tracker shows is built on observations gathered over time. This page says how many there are, how fast they accumulate, and what happened when the service went down for a week. It contains no player names, no faction identifiers, and no individual figures — only counts. That is deliberate, and the reasoning is at the bottom.

590,201

battle-stat observations recorded since 8 June 2026

Observations gathered each week

The tracker records an observation whenever it learns something new about a player's battle stats — from a verified figure, a spy report, or a Fair Fight value inferred from an attack log. Volume grew steadily from a few hundred in the first week to a peak of 77,785 in the week of 24 August.

Observations recorded per week, June to September 2026 Weekly volume rises from 186 in early June to a peak of 77,785 in the week of 24 August, drops sharply to 17,114 during the outage week of 31 August, then recovers. 80k 60k 40k 20k 0 Week of 8 Jun — 186 observations (partial week) Week of 15 Jun — 10,751 observations Week of 22 Jun — 22,567 observations Week of 29 Jun — 24,831 observations Week of 6 Jul — 40,992 observations Week of 13 Jul — 47,574 observations Week of 20 Jul — 55,464 observations Week of 27 Jul — 59,861 observations Week of 3 Aug — 58,068 observations Week of 10 Aug — 69,622 observations Week of 17 Aug — 72,941 observations Week of 24 Aug — 77,785 observations (peak) Week of 31 Aug — 17,114 observations (service outage) Week of 7 Sep — 32,445 observations so far (partial week, 2 days) outage partial 8 Jun 22 Jun 6 Jul 20 Jul 3 Aug 17 Aug 31 Aug week beginning

Observations recorded per week. The final bar is a partial week.

The week it stopped

The bar for the week of 31 August drops to 17,114, about a fifth of the week before it. That is not a change in the game or a quiet spell — the service exceeded its hosting quota and the scheduled jobs that gather observations were suspended partway through that week.

The cause turned out to be a background job queue that was never cleaned up. It had grown to nearly two million rows and roughly half the entire database, and a polling loop was re-requesting players the estimate provider could not resolve, every two minutes, indefinitely. Both are fixed. It is included here rather than smoothed away because a growth chart with no interruptions in it is usually a chart that has been edited.

Total observations over time

The same data as a running total. Observations are never discarded, so this line only rises — and the flat stretch in early September is the outage, visible as a stall rather than a dip.

Cumulative observations, June to September 2026 A running total climbing steadily from 186 to 590,201 observations, with the rate of climb flattening briefly during the outage in early September. 600k 400k 200k 0 8 Jun — 186 total 22 Jun — 33,504 total 6 Jul — 99,327 total 20 Jul — 202,365 total 3 Aug — 320,294 total 17 Aug — 462,857 total 31 Aug — 557,756 total 7 Sep — 590,201 total 8 Jun 20 Jul 7 Sep week beginning

Cumulative observations. Never pruned — see “why nothing is deleted” below.

The numbers

The full series, for anyone who would rather read it than look at it. Players touched counts distinct players observed in that week; it tracks closely with the observation count, which tells you the data is broad rather than deep — most weeks are spent learning a little about many players rather than a lot about a few.

Week beginningObservationsPlayers touchedCumulative
8 Jun 2026186171186
15 Jun 202610,75110,23210,937
22 Jun 202622,56722,46633,504
29 Jun 202624,83124,15258,335
6 Jul 202640,99239,14899,327
13 Jul 202647,57447,167146,901
20 Jul 202655,46454,617202,365
27 Jul 202659,86159,655262,226
3 Aug 202658,06857,264320,294
10 Aug 202669,62269,116389,916
17 Aug 202672,94172,427462,857
24 Aug 202677,78574,920540,642
31 Aug 202617,11414,510557,756
7 Sep 202632,44532,410590,201

The shape of the player base

Across 87,969 players we hold an estimate for, battle stats do not cluster around a typical value — they span six orders of magnitude. Half of those accounts sit below roughly 722,000 total stats, while the top one percent are above 14.5 billion. That top percentile is about 20,000 times the median.

The axis below is logarithmic, and it has to be: on a linear scale every bar except the last two would be invisible. Each step to the right is a tenfold increase.

Battle stat distribution by percentile across 87,969 observed players A logarithmic bar chart. The 10th percentile is 3,600 total stats, the median 722,000, the 75th percentile 275 million, and the 99th percentile 14.5 billion. 1k 100k 10m 1b 100b total battle stats (logarithmic) 10th 25th median 75th 90th 99th 10th percentile — 3,559 total stats 25th percentile — 37,742 total stats Median — 721,645 total stats 75th percentile — 275,352,181 total stats 90th percentile — 3,183,612,072 total stats 99th percentile — 14,477,286,994 total stats 3.6k 37.7k 722k 275m 3.18b 14.5b

Battle stats by percentile, 87,969 observed players. Logarithmic axis.

PercentileTotal battle statsMultiple of the median
10th3,5590.005×
25th37,7420.05×
50th (median)721,645
75th275,352,181382×
90th3,183,612,0724,412×
99th14,477,286,99420,062×

The right-hand column is the part worth sitting with. Moving from the median to the 75th percentile is not a step up, it is a factor of nearly four hundred; from the median to the 99th, twenty thousand. There is no “slightly stronger than average” in Torn at scale.

The practical consequence for war is that “how strong is this faction” is a question with almost no useful average answer. A roster is not a cluster around a mean, it is a handful of people carrying enormous stats and a long tail of much smaller accounts, and which of those you get matched against decides whether a hit pays. That is the entire reason the tracker estimates individuals rather than reporting a faction average.

What this sample is. These are the players the tracker has observed, not a random sample of active Torn players. Accounts enter the dataset mostly by being in a faction we encounter, so it includes a great many dormant and newly created accounts alongside active fighters — which is why the lower percentiles are as low as they are. Read it as the shape of the accounts we have seen, not as the shape of the people you will actually fight.

Where the estimates come from

Not all observations are equal, and the mix is lopsided. Almost everything the tracker knows about the wider player base rests on a third-party Fair Fight estimate. Our highest-confidence tier is a far smaller pool, and it does different work — it is what everything else gets measured against.

SourceWhat it isObservationsPlayersShare of players
FF ESTThird-party Fair Fight estimate586,60987,47298.1%
FF OWNInverted from our own attack logs3,4991,5021.7%
WAR ESTTwo-hop, derived from battle data3,6791750.2%
VERIFIEDOur highest-confidence figure1,25120<0.1%

Two things are worth reading out of that table. The first is the pyramid: high-confidence figures for a small pool, inferred figures for tens of thousands. Anyone claiming precise battle stats for the whole game is guessing, and this is what the honest version of that claim looks like.

The second is the ratio between the observation and player columns for that top tier — far more readings than players, because those figures are re-sampled repeatedly over time rather than captured once. That is what makes them useful as a benchmark: they show not just where someone stands, but how fast they are moving.

That top tier is the yardstick every other source is measured against. When a player we have been estimating turns up in it, the pair becomes a test of how wrong the estimate was — which is how the correction described in the stat estimates guide is fitted and, more importantly, how it is checked.

How we check our own estimates

An estimate nobody checks is just a guess in a confident font. Most tools that show you an opponent’s battle stats will never tell you how often they are wrong, because they never find out. Here is the method we use to find out, and the rule that decides whether a correction gets applied at all.

1. Collect matched pairs. When a player we have been estimating enters our highest-confidence tier, we learn what we should have been saying all along. That gives a pair: the estimate we were showing, and the figure we now trust. A pair only counts if the two readings are within about three weeks of each other — compare a figure from March against an estimate from September and you are measuring how much someone trained, not how wrong the estimate was.

2. Fit the correction in log space. Battle stats span six orders of magnitude, as the distribution above shows. A straight-line fit on raw numbers would be dominated entirely by the largest players and would say nothing useful about anyone else. Fitting the logarithms instead makes the correction proportional, so it means the same thing at three million stats as it does at three billion.

3. Refuse implausible corrections. The slope of that fit is clamped, and so is the multiplier it can ultimately apply. A model claiming estimates are wrong by a wildly escalating factor is far more likely to be a bad fit on thin data than a real pattern, and a correction is only worth having if it cannot quietly invent a number several times larger than what it started with.

4. Test it on data it has never seen. This is the part that matters. Any correction will look good on the pairs used to build it — that is what fitting means, and it proves nothing. So each pair is held back in turn, the correction is refitted from all the others, and it has to predict the one it was not shown. The error that comes out of that is the only error worth quoting.

5. Only switch it on if it beats doing nothing. That held-out error is compared against the error from applying no correction whatsoever. The correction has to win by a clear margin, on a minimum number of pairs, before it is applied to anything you see. Each source is judged separately — a correction that helps one kind of estimate is not assumed to help another.

The whole thing is refitted continuously as new verified figures arrive, so the correction tracks reality rather than being set once and forgotten.

And when a correction fails that test, we show the raw estimate instead. That is the honest outcome, not a failure of the system — it is the system working. A correction fitted on too little ground truth would make numbers look more authoritative while making them no more accurate, which is the worst of both. The bar is deliberately set where a correction has to earn its place, and the thing that raises the quality of every estimate on the site is simply having more of that top tier to test against — which grows as more members join the tracker.

Why nothing is deleted

Observations are kept indefinitely rather than expired, and the reason is rematches. When a faction is drawn against an enemy it has fought before, the estimates recorded during that earlier war are still there. You open the tracker on day one of the rematch and the board is already populated — stale, clearly labelled as stale, and refreshing in the background, but populated. A stale starting point beats an empty one, and old observations cost almost nothing to keep.

It also makes the estimates better over time. Each figure carries how old it is, and older Fair Fight observations are weighted down rather than thrown away, so a long history of weak signals still adds up to something more reliable than a single recent guess. The stat estimates guide explains the weighting.

What this page deliberately does not show

There are no per-player or per-faction figures here, and there will not be. The tracker restricts every read to your own faction and any faction you currently have a ranked or pending war with, enforced on the server. Publishing individual numbers on a public page would make that restriction meaningless — anyone could look up any faction without even signing in, and every faction's weak points would be indexed and searchable.

There is a subtler line too. A statistic can name nobody and still expose someone: an “average player activity by hour” chart drawn mostly from one faction is really that faction's schedule, published and dated. So stats derived from narrow samples are held back until the sample is wide enough to describe the game rather than a particular group. Everything on this page is a count of the dataset itself, which carries no such risk.

More on what is collected, how long it is held and how to have it removed is in the privacy policy, and the product tour covers what the tracker does with it.