I run Royale Cards, a Clash Royale guide site. It's a small static site (Cloudflare Pages, generated from JSON + templates) with a simple promise: every stat shown is real and labeled with its sample size.
Here's what I learned building it, in case it helps anyone working on niche data sites.
The problem with small data
Clash Royale players constantly ask: what deck is good right now? Existing sites show win rates, but most don't tell you how many battles the number is based on. On a quiet day, a card can have 12 recorded uses — a 75% win rate on 12 samples is noise, not a signal.
So the site has one hard rule: if fewer than 30 samples exist, no win rate is displayed. Instead you get a "sample too small" note. It costs a bit of polish but earns a lot of trust, and it makes the data story defensible.
Pages that earn their keep
Instead of one giant "all decks" page, every card gets its own URL: stats at all 14 levels, arena unlock, and the decks that best use it. That's ~133 card pages plus deck and guide pages — the whole sitemap is around 186 URLs. Each page is small and focused, which is what search engines (and tired players on mobile) actually want.
Season guides as content engines
When a new season lands, players flood search with the same questions. The current K.H.A.O.S season guide covers the new Hero Valkyrie and Hero Berserker: what Supercell officially confirmed vs. what's editorial analysis, plus counterplay notes. We deliberately separate "official facts" from "our read" — readers can tell the difference.
What I'd do differently
- Ship the sitemap + GSC submission on day one (we did, but later than I'd like)
- Start collecting battle samples earlier; the sample-size gate is only useful once you have volume
- Write the "why" for every stat, not just the number
If you build niche data sites, the honest-stats angle is a real differentiator. Happy to answer questions about the stack.
Top comments (0)