ALFTANET
← All devlog posts

The page that had eight words

Strata is the biggest thing we've built. It shipped with a page that said nothing at all, and it took nine days and an ad network to notice.

Here is the entire text content of alftanet.com/strata/ as it was served to anyone who wasn't running JavaScript — a search engine crawler, say — for the nine days after launch:

Strata — dig a world that remembers you

Eight words, all of them in the <title>. No heading. No description. No explanation of what the game is, how it's played, or that it's free. The body of the document was one empty div waiting for the game to attach itself to it.

How it happened

On 31 July we did a big pass over the whole site, adding a proper written section to every game page — what the game is, how to play it, some strategy, a short FAQ. Thirteen games got one. It took a day and it was obviously the right thing to do.

Strata launched on 4 August. Four days after that pass.

The reason it slipped through is mundane and, in hindsight, structural. Every other game on this site is hand-written HTML: there's a public/index.html you open and edit, and the written section sits right there in it. Strata is the only game built with a bundler, which means its index.html isn't a page you write — it's a build entry, a stub that the tooling fills in with script tags. It looks like a config file, so nobody thought of it as a page, so nobody thought to put a page in it.

And the game worked. That's the part worth sitting with. Every test we ran was about whether Strata played correctly — the world generated, the saves persisted, the leaderboards ranked, the api validated tiles. All of that was fine. The failure was in a dimension nobody was testing, on the one game where the usual template didn't apply.

How we found out

Not by looking. Our AdSense application has been sitting on a "low value content" rejection for a while, which is the ad network's way of saying it doesn't think the site is worth serving ads on. We'd assumed it was about the overall shape of the site — a games portal is a hard category to be taken seriously in — and we'd been slowly adding writing to fix it.

When we finally sat down and crawled our own site the way a reviewer would, fetching every URL and counting the actual words, one row of the output was 8 and the rest were between 537 and 1,174. The one that said 8 was the game we promote hardest: first card on the front page, first item in our structured data, the lead story in our news section.

Anyone reviewing this site would have clicked the most prominent game and landed on a blank document. We'd been wondering why the review kept failing while pointing everybody at our emptiest page.

The fix, and the two things it broke

Strata's page now has about 1,500 words — the deepest game on the site finally has the longest page instead of the shortest. Writing it was the easy part; the numbers all came out of the game's own tables, so the Seal depths and hazard values and upgrade tiers are the real ones rather than approximations.

The layout was fiddlier than expected, because Strata was built to fill the window exactly and never scroll. Making the page scroll under the game broke two things that had no reason to be related:

What we're changing so it can't recur

The lesson isn't "remember to write the page". We did remember, thirteen times, and then a fourteenth game arrived through a slightly different door.

So we're building the check into the pipeline instead. A script that fetches every URL in our sitemap and fails the build if any page has fewer than 400 words of crawlable text, is missing a description or a canonical link, doesn't have exactly one heading, or — the one that would have caught this immediately — carries an ad script while being that thin.

It's about thirty lines of code and it makes the fourteenth game hold itself to the same standard as the first thirteen without anyone having to remember anything. That's the actual fix. Everything else was cleanup.

The broader thing

If there's a general lesson, it's that "the game works" and "the page works" are separate claims, and small teams almost always test the first and assume the second. A canvas game is an especially good place to make this mistake, because the thing you're proud of is drawn into a rectangle that, as far as the rest of the web is concerned, contains nothing at all.

The page around that rectangle is the only part of your game that a search engine, a link preview, a screen reader or a human deciding whether to click can actually read. Ours said eight words for nine days.