DEV Community

Daniel Mercer
Daniel Mercer

Posted on

Running a 56,000-game browser portal: what breaks at scale (and what doesn't)

I run Gameziko, a free browser-games portal with more than 56,000 HTML5 games — no downloads, no sign-ups, just click and play. People hear "56,000 games" and assume the hard part is collecting that many games. It isn't. The hard parts are trust, categorization, and keeping 56,000 pages fast. Here's what we learned.

1. Never trust a third-party game file

Every game on the portal runs inside an iframe with a restrictive sandbox attribute. We allow scripts (games need them) but we do not allow top-navigation or pop-ups by default — a game should never be able to redirect your whole tab or spawn pop-up windows. On top of that, a Content-Security-Policy on our pages blocks the usual exfiltration tricks.

New submissions get screened before they go live: we check that the file is actually an HTML5 game, that it loads without errors, and that it doesn't phone home to anything suspicious. This is the boring work nobody writes about, but one malicious upload would destroy user trust overnight.

2. Lazy-load everything, or the page count kills you

A category page listing hundreds of games can't load hundreds of iframes. Each game card renders a thumbnail (WebP, with srcset for retina screens) and a title. The actual game iframe is created only when the user clicks "play". This keeps category pages loading in about a second on a normal connection, which matters a lot — most of our traffic is casual players on phones, and they will not wait.

We also cap how many games render per page and paginate aggressively. Infinite scroll looks nice in demos; it tanks real-world performance on low-end devices.

3. The categorization problem is a data problem

56,000 games with messy, inconsistent tags is a mess. Our approach is deliberately simple: a rules-based tagger that maps incoming metadata to a fixed category set (action, puzzle, racing, io, sports, and so on), plus manual curation for the front-page categories. Fancy ML classification was tempting, but a deterministic rule set is debuggable — when a chess game lands in "racing", we can find the rule that did it and fix it.

4. Games die — plan for it

Game files hosted by third parties go dead: domains expire, developers pull files, hosting breaks. We run scheduled availability checks and delist games that fail repeatedly. Delist, not delete — a game can come back. If a game fails to load, the player sees related working games instead of an error page. Every dead end on a games site is a lost visitor; turning it into a recommendation recovers most of them.

5. The SEO lesson nobody wants to hear

Template text doesn't rank. 56,000 pages with near-duplicate descriptions are treated as near-duplicates by search engines. We write or curate unique short descriptions for our most important games and categories, and we interlink heavily between related games. That internal link graph is doing more for us than any backlink campaign ever could.

The portal itself is live at Gameziko — https://gameziko.com — free browser games, no downloads, no sign-up. If you've run anything with a huge page count, I'd genuinely like to hear what broke for you.

Top comments (0)