Methodology · v0.1

How we calculate UFC ratings

Two numbers describe every fighter on this site.

Global Elo

The raw point estimate of skill. Standard Elo with three corrections (decay, shrinkage, K-factor multipliers).

Elo rating

Global Elo with the uncertainty discount baked in. This is the headline number on every leaderboard, and what we sort by.

Definition: Elo rating = Global Elo − 1.3 × σ, where σ is the bootstrap standard deviation of the rating (see §4 below).

§1

Elo engine

Standard Elo: every UFC fighter starts at 1500. After each bout the winner gains points, the loser loses an equal amount, and the swing scales with the pre-fight gap — favourites gain less for expected wins and lose more for upsets. K-factor is 32, multiplied by 1.25 for title fights, 1.15 for finishes, and 1.5 for fighters with fewer than 5 UFC appearances (so ratings find their level faster). The cumulative Global Elo over a career is what the Honest Elo history chart on each fighter page plots.

Expected score:
  E_A = 1 / (1 + 10^((R_B − R_A) / 400))

Rating update:
  R'_A = R_A + K_eff × (S_A − E_A)

where S_A is 1 for a win, 0 for a loss, 0.5 for a draw, and
K_eff = 32 × title_mult × finish_mult × newcomer_mult.
§2

Inactivity decay

A retired champion shouldn't top the rankings forever. After 12 months without a UFC bout, a fighter's Global Elo drifts toward the division mean at 15% of the above-mean excess per year, capped at 25% total. The decay is mild by design — it doesn't punish brief layoffs, only prolonged ones. For multi-division fighters, the division mean is taken from the fighter's most recent UFC bout's division. Catchweight bouts fall back to the most recent non-catchweight division on file.

§3

Provisional shrinkage

Fighters with fewer than 4 UFC fights have their Global Elo pulled toward the division mean, weighted by n_fights / 4. A 1-fight newcomer keeps only 25% of their raw swing; at 4 fights the rating stands on its own. Below 6 fights the fighter is also flagged with a Provisional chip on their card.

§4

Bootstrap uncertainty (σ)

We re-simulate each fighter's last 8 fights 400 times by resampling with replacement and recomputing the Global Elo update chain. The standard deviation of the final ratings is our σ. Fighters with fewer than 8 fights get σ inflated by √(8/n) to reflect the thin sample.

This is an uncertainty proxy — not a full Bayesian posterior. It measures how sensitive a fighter's rating is to which subset of recent fights we credit, not how MMA history would have played out under counterfactual matchmaking. Order matters in real Elo update chains, and bootstrap resampling can produce sequences that wouldn't occur naturally; we accept that tradeoff because the proxy ranks fighters in roughly the right order of reliability.

§5

Elo rating = Global Elo − 1.3 × σ

The headline Elo rating on every leaderboard is Global Elo minus 1.3 × σ. A provisional star with Global Elo 1700 and σ 120 (Elo rating ≈ 1544) ranks below a proven contender with Global Elo 1680 and σ 40 (Elo rating ≈ 1628) — and that's the point. Our published rank is always by Elo rating, never by Global Elo.

Elo rating = Global Elo − 1.3 × σ
Analysis, not advice. On every fighter page we show an Elo-based p_win for past fights. It's the standard logistic from the pre-fight Global Elo gap, nothing else. We deliberately do not publish a "betting pick": our research model stays internal, and that's not what this site is for.

Honest Elo mode

The Honest Elo Meter has two modes, surfaced as a toggle above the gauge whenever an opening market line is available for a fight.

Pure Elo

Default

Pure Elo with bootstrap uncertainty. The 20,000 simulations sample each fighter's rating from a normal distribution centred on their Global Elo with their σ as the spread.

What the meter has always shown, unchanged.

Honest Elo

Opt-in

Adds one input on top of pure skill: the opening line. We don't show the market price itself — we feed it into a pooled model that combines it with the skill features.

Available only when an opening line was captured before the line moved.

Why the two modes can disagree

The opening line carries information pure Elo can't see — camp news, weight cuts, recent training reports, last-minute injury whispers. Honest Elo mode treats the line as a noisy signal of those unobserved factors, not as ground truth.

This is why a fighter with a higher headline Elo can still come out lower in Honest Elo mode — for example, when the market opens with that fighter as a small favourite while their pure-Elo gap suggests they should be a much larger one. The pooled model takes the gap between "what Elo says" and "what the market says" and produces a calibrated probability that's neither pure Elo nor a copy of the line.

What it isn't

Honest Elo mode is not a betting pick, a value indicator, or a recommendation. It expresses the pooled model's calibrated win probability in the same meter format as Pure Elo, so the two views can be compared directly side by side.

Pure Elo stays the default reference for the rest of the site — rankings, fighter pages, division leaderboards. Both modes are honest, just from different starting points; the toggle on /vs pages exists so you can compare them yourself.

Model limitations

Pure Elo can't see

Results-based

Pure Elo knows UFC results and rating uncertainty only. It does not directly model:

  • Injuries, weight-cut struggles, or short-notice replacements.
  • Stylistic matchups — a great wrestler vs a great striker can swing wildly from raw Elo.
  • Camp changes, retirements-from-the-sport followed by returns, judging controversy.
  • Non-UFC competition — only UFC bouts feed the rating, so a fighter's Bellator / ONE / RIZIN history doesn't count here.

Honest Elo addendum

Pooled model

Honest Elo mode adds the first captured opening line as a noisy market signal, which may indirectly reflect some context Pure Elo cannot see. It still does not know why the market is priced that way and should not be treated as inside information or betting advice.

Both modes estimate probabilities from limited evidence. Fighters can be temporarily over- or underrated after division changes, long layoffs, or thin UFC samples. The σ band exists precisely to flag that uncertainty visually — wider bands mean more caution.

Data

Historical UFC event records — 8,611 fights between 1994-03-11 and 2026-06-20. This page reflects the snapshot from Jun 20, 2026.

Primary public source UFCStats.com → — fight results, per-bout statistics, fighter physical attributes. We compute Elo, σ, division priors, and analytics ourselves.

Frequently asked

What's the difference between Elo rating and Global Elo on this site?

Global Elo is the raw point estimate of skill — standard Elo with the three corrections in §1-3 above. Elo rating (the headline number on every leaderboard) is Global Elo minus 1.3 × σ, where σ is the bootstrap standard deviation. The discount means a thin-sample star with one big win can't outrank a proven contender by construction. We always sort by Elo rating, never by Global Elo.

How often are the ratings updated?

After every UFC card. Within 24 hours of an event we ingest the fight results, recompute Elo and σ for everyone affected, and republish. The site is a static build, so the deployed ratings reflect a specific snapshot — currently the snapshot from Jun 20, 2026.

Why does HonestElo's ranking differ from UFC's official rankings?

UFC's official rankings are panel-based and can reflect human judgment, recent activity, divisional context, and public perception. HonestElo is purely mechanical and data-driven: every fighter's Elo rating is computed from their bout history, then discounted by uncertainty. Two systems answering different questions, both legitimate.

Is HonestElo affiliated with UFC?

No. HonestElo is independent analytics, not affiliated with or endorsed by the Ultimate Fighting Championship. We use UFC fight results because they're the public record of professional MMA at the top level, but the ratings, uncertainty bands, and analytics on this site are entirely our own work.

Where does the fight data come from?

Historical bout results, per-fight statistics (significant strikes, takedowns, control time), and physical attributes (height, weight, reach, stance, DOB) come from publicly available UFC event records on UFCStats.com. We compute everything else — Elo trajectory, bootstrap σ, division-relative z-scores, win probabilities — ourselves.

How is win probability calculated?

Pure Elo mode uses the standard Elo logistic from the pre-fight Global Elo gap: p(A wins) = 1 / (1 + 10^((B.elo − A.elo) / 400)). It uses Global Elo, not the discounted Elo rating — the discount is for ranking, the raw rating is the input for the simulation. When an opening market line is available, the /vs page may also offer Honest Elo mode: a separate pooled probability that combines fighter skill features with the opening market signal. That snapshot is frozen for the fight and does not update with later line movement. Honest Elo mode is still an analytics probability, not a betting pick or recommendation.

Why include an uncertainty band at all?

Two fighters can have the same Global Elo but radically different evidence: one with 18 fights against a varied schedule, one with 4 fights including a single big upset. Without an uncertainty discount, both would rank identically — which is wrong. The bootstrap σ measures how stable the rating is under resampling. Discounting by σ makes the leaderboard reward proven, well-supported skill over hot streaks.

What does the inactivity decay do?

After 12 months without a UFC bout, a fighter's Global Elo drifts back toward the division mean by 15% of the above-mean excess per year, capped at 25% total. Without it, retired or long-idle champions would top the rankings forever based on results from a different era. The decay is mild on purpose — it doesn't punish brief layoffs, only prolonged ones.

Can I share or embed your ratings?

Yes, please do — that's the whole point of an open analytics site. Each fighter, division, and pound-for-pound page has a Share button that pre-fills a shareable post for X (Twitter) or Reddit, and every page generates its own OpenGraph image so the share looks like a real product card on social platforms. Attribution to honestelo.com is appreciated.

Version

Methodology
v0.1
Snapshot
Jun 20, 2026

Material changes to the rating pipeline — new K-factor multipliers, σ formula adjustments, division-transfer handling, etc. — are logged here as new versions. Cosmetic site updates (typography, OG cards, share buttons) do not bump the methodology version.