Earlier today, we published the unofficial best selling 2025 releases on the DMsGuild, and yesterday we calculated a league table of 2025 publishers on DriveThruRPG. I wanted to do the same for the DMsGuild, but faced a challenge; it’s common for multiple authors and publishers to appear in the “By” line. For example, Frontiers of Eberron: Quickstone | Roll20 is by Keith Baker, Imogen Gingell and Visionary Production and Design.
After the league table, I’ll share both my query for inspection and the metal badge point system I used.

| Author/Publisher | Total Points |
|---|---|
| Heroic Maps | 174 |
| Christopher Hamwell | 18 |
| Jeff Stevens Games | 16 |
| MandyMod | 15 |
| Marco Bertini | 12 |
| Daniel Chivers | 10 |
| Jeff C. Stevens | 10 |
| J. Evans Payne | 7 |
| Jamie Chan | 7 |
| Noah Stavish | 7 |
The table above uses the scoring system below; points are awarded only to products added to the catalogue this year. It’s the same as the DriveThruRPG league.
- Copper: 1 point
- Silver: 2 points
- Electrum: 5 points
- Gold: 10 points
- Platinum: 20 points
- Mithral: 50 points
- Adamantine: 100 points
There’s doubtless a more elegant use of Google Sheets’ query script, as I’m not a programmer, but for geeky transparency, here’s the magic moment that flattens my multi-column spreadsheet into a league table.
=QUERY(
{
ARRAYFORMULA(TRIM(SUBSTITUTE(Authors!D2:D189,",",""))), ARRAYFORMULA(IFERROR(SWITCH(Authors!N2:N189, "copper Best Seller", 1, "silver Best Seller", 2, "electrum Best Seller", 5, "gold Best Seller", 10, "platinum Best Seller", 20, "mithral Best Seller", 50, "adamantine Best Seller", 100), 0));
ARRAYFORMULA(TRIM(SUBSTITUTE(Authors!E2:E189,",",""))), ARRAYFORMULA(IFERROR(SWITCH(Authors!N2:N189, "copper Best Seller", 1, "silver Best Seller", 2, "electrum Best Seller", 5, "gold Best Seller", 10, "platinum Best Seller", 20, "mithral Best Seller", 50, "adamantine Best Seller", 100), 0));
ARRAYFORMULA(TRIM(SUBSTITUTE(Authors!F2:F189,",",""))), ARRAYFORMULA(IFERROR(SWITCH(Authors!N2:N189, "copper Best Seller", 1, "silver Best Seller", 2, "electrum Best Seller", 5, "gold Best Seller", 10, "platinum Best Seller", 20, "mithral Best Seller", 50, "adamantine Best Seller", 100), 0));
ARRAYFORMULA(TRIM(SUBSTITUTE(Authors!G2:G189,",",""))), ARRAYFORMULA(IFERROR(SWITCH(Authors!N2:N189, "copper Best Seller", 1, "silver Best Seller", 2, "electrum Best Seller", 5, "gold Best Seller", 10, "platinum Best Seller", 20, "mithral Best Seller", 50, "adamantine Best Seller", 100), 0));
ARRAYFORMULA(TRIM(SUBSTITUTE(Authors!H2:H189,",",""))), ARRAYFORMULA(IFERROR(SWITCH(Authors!N2:N189, "copper Best Seller", 1, "silver Best Seller", 2, "electrum Best Seller", 5, "gold Best Seller", 10, "platinum Best Seller", 20, "mithral Best Seller", 50, "adamantine Best Seller", 100), 0));
ARRAYFORMULA(TRIM(SUBSTITUTE(Authors!I2:I189,",",""))), ARRAYFORMULA(IFERROR(SWITCH(Authors!N2:N189, "copper Best Seller", 1, "silver Best Seller", 2, "electrum Best Seller", 5, "gold Best Seller", 10, "platinum Best Seller", 20, "mithral Best Seller", 50, "adamantine Best Seller", 100), 0));
ARRAYFORMULA(TRIM(SUBSTITUTE(Authors!J2:J189,",",""))), ARRAYFORMULA(IFERROR(SWITCH(Authors!N2:N189, "copper Best Seller", 1, "silver Best Seller", 2, "electrum Best Seller", 5, "gold Best Seller", 10, "platinum Best Seller", 20, "mithral Best Seller", 50, "adamantine Best Seller", 100), 0));
ARRAYFORMULA(TRIM(SUBSTITUTE(Authors!K2:K189,",",""))), ARRAYFORMULA(IFERROR(SWITCH(Authors!N2:N189, "copper Best Seller", 1, "silver Best Seller", 2, "electrum Best Seller", 5, "gold Best Seller", 10, "platinum Best Seller", 20, "mithral Best Seller", 50, "adamantine Best Seller", 100), 0));
ARRAYFORMULA(TRIM(SUBSTITUTE(Authors!L2:L189,",",""))), ARRAYFORMULA(IFERROR(SWITCH(Authors!N2:N189, "copper Best Seller", 1, "silver Best Seller", 2, "electrum Best Seller", 5, "gold Best Seller", 10, "platinum Best Seller", 20, "mithral Best Seller", 50, "adamantine Best Seller", 100), 0));
ARRAYFORMULA(TRIM(SUBSTITUTE(Authors!M2:M189,",",""))), ARRAYFORMULA(IFERROR(SWITCH(Authors!N2:N189, "copper Best Seller", 1, "silver Best Seller", 2, "electrum Best Seller", 5, "gold Best Seller", 10, "platinum Best Seller", 20, "mithral Best Seller", 50, "adamantine Best Seller", 100), 0))
},
"SELECT Col1, SUM(Col2) WHERE Col1 IS NOT NULL AND Col1 <> '' GROUP BY Col1 ORDER BY SUM(Col2) DESC LIMIT 10 LABEL Col1 'Author', SUM(Col2) 'Total Points'"
)
A candidate for the most shocking statistic of 2025 is this: Heroic Maps scored higher on the DMsGuild than Critical Role’s Darrington Press did on DriveThruRPG (151 pts). This is the definitive proof of the “VTT Era.” Heroic Maps didn’t write a new game; they produced the high-quality battlemaps that Wizards of the Coast’s official Dragon Delves anthology needed but didn’t provide. By releasing map packs for every chapter of the official book, they racked up more points (on Geek Native’s scale – to be fair) than the talents behind a company that does million dollar deals.
MandyMod (#4) and Daniel Chivers (#6) represent the “Modding Community” of D&D.
MandyMod is famous for her Fleshing Out Curse of Strahd series, which essentially “fixes” and expands the 2016 official campaign.
Daniel Chivers (often collaborating with Marco Bertini, #5) produces deep-dive supplements like Gristlecracker’s Hags that add crunch where the core rules are light. Their success proves that the DMsGuild audience isn’t looking for new games; they are looking for “patches” to make 5th Edition run smoother.
A special mention must go to Jeff C. Stevens. He appears twice on this list (once as “Jeff Stevens Games” and once as an author), which splits his score. If combined, his total of 26 points would firmly place him as the runner-up to Heroic Maps. Stevens is the master of the “Community Anthology” – bundling short adventures from multiple writers. His presence reinforces that DMsGuild is a highly collaborative space compared to the siloed world of indie publishing.
Taking the second spot is Christopher Hamwell, a creator who has leaned heavily into the dark fantasy/horror niche. With titles often exploring the grim side of the Forgotten Realms or Ravenloft, his success parallels the enduring popularity of Curse of Strahd. In a year where “cosy fantasy” is trending elsewhere, DMsGuild buyers still want to scare their players.
If DriveThruRPG is where you go to find the next big thing, DMsGuild is where you go to fix the current big thing (and will be until D&D is dethroned). The 2025 Power Rankings prove that the most valuable creators in the D&D ecosystem are the ones who make the Dungeon Master’s life easier – whether that’s a map, a guide, or a better rule.