Spire Codex is now on Overwolf. Get the in-game overlay with live card lookups and one-click run uploads. Learn more →How every card, relic, and potion gets a 0–100 community-meta rating.
Bayesian-shrunk win-rate, mapped to 0–100 with letter-grade tiers.
Every card, relic, and potion in Slay the Spire 2 gets a single number that summarizes how its presence correlates with winning runs, based purely on community-submitted run data, not opinion. 50 is neutral (the average run wins roughly half the time at A0), 100 is the top of the signal, 0 the bottom. It is a naive correlation with known biases (spelled out below), not a verdict on whether a card is good. The same number drives the default sort on every list page and the badge on every detail page.
| Range | Tier | Label | What it means |
|---|---|---|---|
| 90 – 100 | S | Top tier | Top of the win-rate signal. An out-of-distribution win rate sustained over hundreds of picks. |
| 78 – 89 | A | Strong | Wins above the baseline reliably across a large sample. |
| 65 – 77 | B | Solid | Above-average win rate. A safe pick when nothing better is offered. |
| 50 – 64 | C | Average | The middle of the curve. Most entities live here. |
| 35 – 49 | D | Below average | Below the baseline. Often niche or situational, sometimes just high-exposure (see the biases below). |
| 0 – 34 | F | Underperforming | Bottom of the win-rate signal. Frequently a staple dragged down by being in nearly every run, not necessarily a bad card. |
The score has two stages: Bayesian shrinkage (so a 5-pick perfect card doesn't outrank a 500-pick reliable one), then a linear map from win-rate-vs-baseline to the 0–100 scale.
baseline = total_wins / total_runs # global win rate shrunk = (wins + baseline · 50) / (picks + 50) delta = shrunk − baseline raw = (delta / 0.15 + 1) · 50 score = clamp(raw, 0, 100) # rounded to integer
Same baseline (50% win rate) for all rows below. Note how sample size matters: the 5-pick perfect record gets B-tier, while the 500-pick 56% record gets A-tier.
| Scenario | Picks | Wins | Win % | Score |
|---|---|---|---|---|
| Massive sample, elite | 1000 | 700 | 70% | S100 |
| High-N strong | 100 | 70 | 70% | S94 |
| Mid-N solid | 500 | 280 | 56% | B68 |
| Small-N perfect | 5 | 5 | 100% | B65 |
| Average performer | 50 | 25 | 50% | C50 |
| Small sample, no wins yet | 5 | 0 | 0% | D35 |
| High sample, underperforming | 200 | 60 | 30% | F0 |
Codex Score grades win rate, which is honest but confounded: a card's win rate reflects who picks it and what deck it lands in, not just the card. Codex Elo attacks that from the other side. It ignores wins entirely and instead reads revealed preference. Every card-reward screen is treated as a head-to-head where the card you take beats the cards you skip. Fit a Bradley-Terry model over millions of those decisions and you get a rating for “when offered, which card do players actually want?”
Use them together: Score says “this wins games,” Elo says “players want this when they see it.” Cards high on both are unambiguous; a gap between them is usually a build-around or a situational pick. Both, side by side, live on the Card Metrics table.
Codex Score is a naive win-rate correlation, and a correlation carries baggage. The two biggest confounds below are why some obviously good cards can land low and some niche ones can land high. Read a grade as a signal with caveats, not a ruling. Where a card has been offered in reward screens, Codex Elo is the less-confounded counterweight, it is skill-agnostic and not exposure-weighted.
To cut the obvious confounds yourself, the Card Metrics table puts Codex Elo next to Score and slices both by per-character and per-run brackets.
Every score gets sharper when more runs are submitted, especially losses, which are chronically underrepresented in community datasets. The submitter pool is the data.
→ Submit a run