TCG Price Tracker

loading…
Loading prices…
Img Card Set # US Market US Low 70% US € Cardmarket CM Offers CM vs US CardTrader CT vs US
Img # Card Set China ¥ China $ eBay $ China/West English $ Eng/China Grade EV EV/China 3mo
Img ★ # Card Listings US Low US Market EU $ EU profit EU % CN cost ¥ CN cost $ CN sell $ CN profit CN % Mkt/CN
Loading prices…
What the cards inside sealed product are worth, against what the product costs. Shown per box by default because single packs carry a large markup over the same packs bought by the box. Every card is priced at its TCGplayer market price; pull rates come from community pack-opening studies — no publisher releases real odds — so the prices here are firm and the odds are not. Open any row to see the breakdown and change the odds yourself.
How this is worked out — and what it can't tell you

The number

For each pack slot the model holds an expected number of cards per pack for each rarity. Value is the sum over all of them:

EV = Σ (cards per pack × average market price of the cards that slot can give you)

Expectation adds up regardless of how the slots actually interact, so writing the odds this way keeps the sum exact without having to guess the pack's internal wiring. It also matches how community data gets reported — "1 in 13 packs" is just 0.077 per pack.

Where the prices come from

  • Every card in every set, at its TCGplayer market price, Near Mint.
  • Pokémon prices come from TCGplayer's price guide, which names each printing, so a reverse holo is priced as a reverse holo and not as its plain version.
  • One Piece needs no split — each rarity there exists in exactly one printing.
  • Riftbound commons and uncommons are priced separately as normal and foil, because the pack has a dedicated foil slot and the premium is large.
  • Alternate arts are kept apart from their plain prints. They share a rarity on TCGplayer, so averaging them together would badly distort the result.

Where the odds come from

No publisher releases pull rates — not The Pokémon Company, not Bandai, not Riot. What exists is counted packs, and how much has been counted differs sharply by game:

  • Pokémon. TCGplayer's Authentication Center opens several thousand packs before a set lands and publishes the per-rarity odds with confidence intervals. 22 sets use those counts, each linked to its own study. The rest fall back to an era template.
  • Riftbound. Origins, Unleashed and Vendetta have release-window counts of their own. Spiritforged has none and borrows from its neighbours.
  • One Piece. Bandai publishes nothing, and nobody has counted packs. What does exist is case collation — a sealed case is 12 boxes, and each box carries a known set of guaranteed hits, which fixes how many of each chase card a case holds. 18 sets use those figures for their chase tiers. It is structural rather than counted, so they stay badged estimated, and the common and uncommon lines are still era guesses.

A measured badge means that set was counted; estimated means the odds were borrowed from neighbouring sets; thin means something else is wrong — the set is too new for its prices to have settled, it doesn't follow its era's structure, or the study left a tier unmeasured. Open a row to see which. Change any rate there and everything recalculates.

Weights: counting a slot at less than face value

A listed price is not always a price you could get. Thin markets floor their commons at roughly what shipping costs, so a stack of near-identical foils can "price" at more than the pack they came in. The Weight column in every open row fixes that: it is the share of a slot's listed price the total counts. Set commons to 0% and bulk stops counting on every set in every game at once, because weights key off the slot name and that name is shared across the templates. Ignore bulk in the toolbar does commons, uncommons, reverse-holo and foil slots in one click. Weights live in the page only — reload and the published numbers come back.

Per pack or per box

The toolbar switches the whole table, and the breakdown inside each row, between the two. Per box is the default and the more honest comparison: single packs carry a large markup over the same packs bought by the box, and the per pack column there shows what a pack really costs you inside one. Fewer sets have a box price than a pack price, so the list is shorter this way.

Slots the set has no cards for are left out entirely — a Riftbound set with no Ultimate does not list one at 0.0005 a pack. The QC script still reports them, because a slot matching nothing is how a renamed rarity would show up.

Reasons not to trust EV alone

  • The average is not the typical pack. Value sits in cards you will almost never pull. The chase share column shows how much of the EV rides on rarities appearing less than once in 20 packs. Where that share is high, most packs come in far under EV and a rare few carry everything.
  • Some of it is not a slot at all. One Piece's Premium Boosters hide their Manga Rares in a god pack — a whole pack of 9 Manga Rares and a Gold DON!!, at roughly 1 in 20,000. Spreading that across packs gives the right average, because expectation adds up either way, but no ordinary pack has a fraction of one in it.
  • Market price is not what you get. Selling means fees, shipping, time and undercutting. The fees switch takes 13.25% off, which is still optimistic.
  • Prices fall as a set is opened. A new set's EV is measured against prices that the opening itself pushes down.
  • Sealed vintage is not an EV play. Old packs trade on being sealed, not on their contents, so a deeply negative return there is the right answer.

Assumptions worth knowing

  • Within a rarity, every card is assumed equally likely. Real sets sometimes short-print.
  • Box EV is pack EV times the pack count. Box toppers and promos aren't counted.
  • Cards with no market price yet are valued at their rarity's average rather than zero; the coverage figure in each open row shows how much of the pool that affects.
  • Energy, token, rune and code cards are treated as worthless.
Img # Card Rarity Card total % of set