Fightprint
Every rule on this page exists because getting it wrong once, publicly, would cost more than the entire product is worth. So: no raw percentages, floors enforced on the server (never the client), and nothing published from one gym's data pretending to speak for the sport.
01 — The problem with a raw percentage
successes / attempts, aloneSomeone tries an armbar once and it works. Raw math says 100%. That number is true and useless — it says nothing about what happens the next nine times. A single data point dressed up as a percentage is how an app loses credibility in one screenshot.
Instead every ratio on this site is a Wilson score interval — the same interval statisticians reach for specifically because it behaves honestly at small sample sizes, where raw division does not.
Worked example — one attempt, one success
center = (p̂ + z²/2n) / (1 + z²/n) half_width = z/(1 + z²/n) · √( p̂(1-p̂)/n + z²/4n² ) z = 1.96 (95% confidence) p̂ = 1/1 = 1.0 n = 1
Raw math: 100%. Wilson: 20.7% – 100%.
The honest answer to "does it work" after one attempt is "maybe — anywhere from about a fifth of the time to always, we genuinely don't know yet." That is what the interval says. That is also exactly why a single attempt never gets shown as a standalone number at all — see the floors below.
02 — Display floors
This is enforced in the API, not the client. A thin cell's percentage is never sent to the browser at all — there is no client-side check to bypass, because the number simply never arrives.
No percentage at all. The screen says "insufficient data" and means it. The attempt count is still always shown — a thin cell is not hidden, only its percentage is.
Shown with the full Wilson interval visible, and visually marked as low-confidence rather than presented flat.
Shown as a confident number.
n is displayed on every single row, in every state, with no exceptions.
A number this site won't show you is still a number it tells you it doesn't have.
03 — Verification weighting
Self-reported outcomes inflate — that's just how self-reporting works, everywhere. So attempts are weighted by how they were verified before they ever reach a floor check:
That weighting feeds directly into the floor above — not around it. Sixty purely self-reported attempts weigh in at an effective 24, and 24 is still below the 30-attempt floor. Self-reported data alone cannot produce a public number on this site. It still feeds trend detection (§05) — a lot of people all reporting the same shift is itself a signal — it just never headlines on its own.
04 — Hierarchical shrinkage
Splitting every position three ways — sport, sub-only, MMA — thins the data fast. An MMA cell can have real signal in the single digits while sport BJJ has thousands. Rather than show nothing, thin cells lean on the pooled, all-ruleset number until they've earned their own:
The formula
p_shrunk = (n · p_ruleset + k · p_pooled) / (n + k) k = 50
An MMA cell with n=10 sits mostly on the pooled prior. As real MMA attempts accumulate, the estimate pulls toward whatever MMA actually shows — automatically, with no manual re-tuning.
Any cell where the prior is still doing most of the work is labeled as such — this site does not claim ruleset-specific confidence it hasn't earned. And when a ruleset's real number does pull away from the pooled prior, that gap is reported directly as a divergence — "34% under sport rules, 11% once strikes are legal" is the single most useful sentence this whole method produces.
05 — Trend detection
A trailing-90-day number is compared against the 90 days before it with a two-proportion significance test. An arrow only appears when both of these hold:
p < 0.05)3 percentage pointsEither gate alone lets noise through. A one-point wobble on a huge sample can be "significant" and mean nothing practical; a thirty-point swing on ten attempts can look dramatic and mean nothing statistically. Requiring both is what keeps a trend arrow from turning into a horoscope.
06 — One gym is not "the meta"
A single academy's numbers reflect one instructor's system, one competition focus, one room's body types. That's real information for that gym — it is not a claim about grappling in general, and this site does not publish it as one.
Public-scope cells are withheld unless the underlying attempts come from at least three different gyms. A cell that doesn't clear that bar isn't deleted — it's marked as withheld, honestly, the same way a too-thin cell is marked "insufficient data" rather than silently absent.