There is no single number, and the defensible answers differ by a factor of three. On September 23, 2026 our catalog holds **63,600 rows**. Deduplicated to one row per physical card, and with the 2,480 digital-only Pokemon TCG Pocket rows removed, the English side is **21,908 distinct printings** and the Japanese side is **37,948 rows** drawn from two sources that do not share a single set name between them.
This study exists so nobody has to derive that again. Every other moonstone study that needs a denominator should cite one of the six numbers named below, by name, rather than running its own count.
Six numbers, six different questions
Each row below answers a different question, and picking the wrong one is the most likely way a future article gets this wrong. The names are the citable ones.
The counting ladder, September 23, 2026
| Name | Count | What it counts | Use it when |
|---|---|---|---|
| Catalog rows | 63,600 | Every row in the cards table, both languages, every id convention | Describing the size of the database |
| Distinct printings | 62,335 | Catalog rows after both deduplication rules, identity and marketplace product id | You need the whole catalog with no double counting |
| English rows | 24,635 | Rows whose language is English, including digital-only Pocket sets | Nothing. This is the number that causes errors |
| Distinct physical English printings | 21,908 | English rows, deduplicated twice, with all 15 Pokemon TCG Pocket sets removed | Any claim about English cards a person can hold |
| Priced English printings | 21,435 | The above, restricted to cards carrying a market ask today | Any price statistic |
| Distinct Japanese rows | 37,948 | Japanese rows after both deduplication rules, across both namespaces | Any claim about the Japanese catalog, with the caveat below |
| Scannable rows | 49,916 | Rows that survive the scan index build and can be matched by face | Describing what the scanner covers |
The 63,600 figure is the one the home page publishes, and it is correct for what it says: rows in the catalog. The scanner copy publishes 52,000 or more, which is the count of rows carrying a perceptual hash rounded down; the index the build actually ships holds 49,916 of them, because a one-character hash and the digital Pocket ids are dropped at build time. Neither is the number of Pokemon cards. That is the 21,908 on the English side.
Two ways a catalog count goes wrong
Rows duplicate for two separate reasons, and each needs its own rule.
The first is straightforward. Two rows describe one card when their set name, collector number, base name and language agree after normalisation. On that rule there are 52 duplicate groups holding 105 rows, so **53 rows** are surplus. 38 of the 53 sit in one product, the Sun and Moon Flareon-GX, Vaporeon-GX and Jolteon-GX starter sets, which the catalog holds under two id conventions. The other fifteen sit in thirteen sets, seven of them Japanese: three are rows carrying no set name at all, and the rest are one per set across Chilling Reign, Dark Explorers, Brilliant Stars Trainer Gallery, SM Black Star Promos and six Japanese sets.
The second is the one that actually moves the number, and no rule about names can see it. **1,212 marketplace products are claimed by two catalog rows each**, because the two importers spell the set differently. The identity rule reads them as two cards. The product id says they are one.
Products claimed by two catalog rows
| Where the two rows come from | Products | Example |
|---|---|---|
| Japanese catalog against Japanese marketplace | 972 | ja-M2a-001 and jat-665672, both product 665672 |
| Modern import against TCGdex import, English | 209 | enx-118828 and tk-xy-su-1, both product 118828 |
| Two TCGdex rows, English | 30 | swsh10-TG01 and swsh10.5tg-TG01, both product 272472 |
| Two modern-import rows, English | 1 | enx-168212 and enx-168213, both product 168212 |
| Total | 1,212 | 240 English, 972 Japanese, none across the language line |
All 240 English collisions are the same two shapes: eight Trainer Kit products stored under both a combined set name and a per-deck one, and the Astral Radiance Trainer Gallery subset stored both inside its parent set and as its own set. The two rows in each pair carry the same ask to the cent, which is what makes them checkable. On the Japanese side all 972 are the same set under a romanised name and a Japanese one.
Applied to the whole catalog, the two rules together remove 1,265 surplus rows, 1.99%. On the English side the identity rule removes 8 rows and the product rule removes 240, which is why this study publishes 21,908 rather than the 22,148 the identity rule alone leaves.
Where the rows come from
Rows by id namespace
| Namespace | Example id | Rows | Linked to a marketplace product | Set names | Language |
|---|---|---|---|---|---|
| jat- | jat-569495 | 26,185 | 100.00% | 429 | Japanese (one English row) |
| TCGdex catalog | base1-4 | 23,767 | 87.62% | 218 | English |
| ja- | ja-PMCG2-001 | 12,781 | 30.07% | 115 | Japanese |
| enx- | enx-696688 | 867 | 100.00% | 19 | English |
The `enx-` namespace is the newest: products the marketplace carries before the card catalog has imported the set. 30th Celebration arrived that way. The `jat-` namespace is the Japanese marketplace catalog, which is why every one of its rows has a price link and none of them has an illustrator credit.
The digital catalog hiding inside the paper one
Fifteen English-language sets in the catalog are Pokemon TCG Pocket expansions. They are digital cards in a phone app. They carry English set names, an English language tag, a collector number and a rarity, and not one of the 2,480 rows is linked to a marketplace product, because there is no product. They are identifiable by their id namespace: A1-001 through B2a-131, plus the P-A promo series.
The 15 Pokemon TCG Pocket sets in the catalog
| Set | Rows | Priced |
|---|---|---|
| Mega Rising | 331 | 0 |
| Genetic Apex | 286 | 0 |
| Wisdom of Sea and Sky | 241 | 0 |
| Celestial Guardians | 239 | 0 |
| Fantastical Parade | 234 | 0 |
| Space-Time Smackdown | 207 | 0 |
| Paldean Wonders | 131 | 0 |
| Shining Revelry | 111 | 0 |
| Eevee Grove | 107 | 0 |
| Secluded Springs | 105 | 0 |
| Crimson Blaze | 103 | 0 |
| Extradimensional Crisis | 103 | 0 |
| Promos-A | 100 | 0 |
| Triumphant Light | 96 | 0 |
| Mythical Island | 86 | 0 |
| Total | 2,480 | 0 |
Leaving them in inflates the English catalog by 11.3% and drags every price-coverage statistic down, because none of them can ever be priced. Every English figure in these five studies has them removed.
The English catalog by era
Distinct physical English printings by era
| Era | Cards | Sets | Priced | Priced share | Median ask |
|---|---|---|---|---|---|
| SV and Mega 2023-2026 | 4,922 | 29 | 4,874 | 99.02% | $0.22 |
| BW and XY 2011-2017 | 3,849 | 45 | 3,644 | 94.67% | $0.61 |
| Sword & Shield 2020-2022 | 3,689 | 25 | 3,662 | 99.27% | $0.33 |
| Sun & Moon 2017-2019 | 3,049 | 22 | 3,024 | 99.18% | $0.55 |
| Diamond & Pearl to HGSS 2007-2011 | 2,209 | 33 | 2,193 | 99.28% | $1.97 |
| EX 2003-2007 | 1,876 | 25 | 1,823 | 97.17% | $2.46 |
| WotC 1999-2003 | 1,790 | 18 | 1,783 | 99.61% | $7.39 |
| Promos and side products | 524 | 24 | 432 | 82.44% | $2.13 |
| All | 21,908 | 221 | 21,435 | 97.84% | $0.89 |
Two thirds of the English catalog was printed after 2011. The median ask falls as the era gets newer, from $7.39 in the Base Set era to $0.22 in the current one, with no reversal at any step. That is a statement about how many cards were printed rather than about how good they are.
Median ask by era
How big is a Pokemon set
Cards per English set, 221 sets
| Percentile | Cards in the set |
|---|---|
| Smallest | 1 |
| 10th | 12 |
| 25th | 30 |
| Median | 101 |
| 75th | 140 |
| 90th | 216 |
| Largest | 302 |
Ten sets hold fewer than ten cards and three hold exactly one. The largest is the SWSH Black Star Promos series at 302, which is a promo run accumulated over three years rather than a set anybody opened. The largest ordinary expansions are Ascended Heroes at 295, Fusion Strike at 284 and Paldea Evolved at 279. The median set is a hundred cards. How that size translates into value is the subject of What 56,000 Cards Say About How Sets Hold Value.
What the catalog knows about each card
Attribute coverage
| Attribute | English (21,908) | Japanese (37,948) |
|---|---|---|
| A printed rarity | 97.11% | 43.33% |
| An illustrator credit | 92.97% | 25.25% |
| A marketplace product link | 97.90% | 76.45% |
| An image | 98.29% | 78.72% |
| Printing identity flags | 95.46% | 0.00% |
The English side is close to complete on every attribute. The Japanese side is not, and the shortfall is structural rather than random. Japanese vs English Pokemon Cards explains why: each Japanese source holds exactly what the other is missing.
The Japanese side is two catalogs, not one
The `jat-` namespace holds 26,142 Japanese marketplace products with romanised set names such as "S8b: VMAX Climax". The `ja-` namespace holds 12,778 catalog rows with Japanese set names such as "VMAXクライマックス". The two share zero set names, so the identity rule cannot see across them. The product id catches 972 of the overlaps with certainty, which is where the 37,948 comes from.
Beyond those 972, the only bridge is card by card through the species dictionary. 9,574 of the 12,778 catalog rows resolve to an English species name, and 6,515 of those find a row with the same species and collector number in the other namespace. That puts the distinct Japanese count somewhere between **32,405 and 37,948**. Restricting the match to set pairs that agree on at least half their checklist gives 33,134.
What this study cannot show
It cannot tell you how many Pokemon cards exist in the world. It tells you how many our catalog holds, which is a different and smaller thing. The Japanese side in particular is incomplete: 115 Japanese set names in one namespace against 429 in the other is not a description of Japanese print history, it is a description of two feeds.
It also cannot separate a card from its printings. The 21,908 figure counts catalog entries, and a single entry can be sold as two or three physically different cards: a normal and a reverse holo, or an unlimited and a first edition. How Many Printings Does a Pokemon Card Have? resolves the same population into 34,433 separately priced products.
The deduplication is deliberately strict about collector numbers, so "XY150a" and "XY150" stay different cards. That is correct and it also means two genuinely identical rows that disagree about a suffix would survive as two. And the product-id merge trusts the product id: in a handful of the 240 English pairs the two rows disagree about the card name, which means one of them carries the wrong product id, and the merge keeps whichever row records more about the card.
What would overturn it
Three observations would. A run of English rows that are physically identical to each other but survive both rules, at a rate above the 1.1% surplus measured on the English side, would mean the deduplication is too loose and 21,908 is too high. A Pokemon TCG Pocket card that turns out to have a physical printing, or an id in the A or B namespace that belongs to a paper set, would mean the 2,480 exclusion is too broad. And a `jat-` row and a `ja-` row that describe one card while sharing neither a product id nor a species and collector number would widen the Japanese bound past 32,405 to 37,948.
Population: every row in the `cards` table on 2026-09-23, 63,600 rows, read from production. Two deduplication rules are applied in order. First, identity: rows are grouped on normalised set name, collector number, base card name and language using the same `cardIdentityKey` function the live read and write paths use, and the row carrying a marketplace id is kept. Second, product: rows sharing a `tcg_id` are one marketplace product whatever their set names say, and the surviving row is the one recording the most attributes among rarity, illustrator, printing flags and image, so the merge never destroys a field only one side had. The two rules remove 53 and 1,212 rows respectively. Pokemon TCG Pocket rows are identified by id namespace, the regular expression ^([AB]\d+[a-z]?-\d+|P-A-\d+)$, which selects 2,480 rows across exactly 15 sets and nothing else; the image-path rule (/tcgp/) agrees on 2,351 of them and misses the whole of Paldean Wonders, so the id rule is the one used. Prices are TCGplayer market asks from the nightly product dump, resolved per card by the site's own ownedPriceFromDump rule including its printing-identity step, so the figure quoted here is the figure the card page shows; they are asks, not sold prices. A card counts as priced when that rule returns a value above zero. Medians are the upper-middle value on even samples. Eras are assigned from set name with the same table used across this wave; 524 cards in 24 promo and side-product sets are bucketed together rather than forced into an era. The scannable count replicates the scan index build rather than counting embeddings: the build selects rows carrying a non-empty perceptual hash, 52,561 of them, then drops the 193 whose hash is a single character and the 2,452 digital ids it excludes, leaving 49,916 card rows. Counting embeddings overstates it. 52,638 rows hold a non-null `emb2` or `emb3`, but 686 of those hold a one-character sentinel rather than a vector, which is why the build's own health probe counts the 51,952 rows with `LENGTH(emb2) > 8`.


