By Mo Hussein

3 min read

In September 2026 we ran an SEO check on Red Robin Learning, the online tutoring platform we built for them. Ask for a blog post that doesn't exist and you got a proper "page not found" screen. The problem was the status code underneath it: 200 OK, the code for a page that worked.

Google calls that a soft 404. It can index the error screen as if it were real content, and it keeps coming back to recrawl it, which wastes the attention you want spent on your real pages.

It looked like a blog bug

We first logged it as a problem with the blog. That was wrong. Nine kinds of page had it, including blog posts, blog categories, revision resources, tutor pages by region and webinars. It hid well because a completely made-up address, one that matched no kind of page at all, still returned a correct 404.

Every one of those pages was also doing the right thing. Each one checked whether its content existed and called the framework's "not found" handler when it didn't. Reading the pages one by one could never find the fault, because it wasn't in any of them.

The cause

The site streams its pages: the server starts sending as soon as it can, and the status code goes out with the very first piece. A loading placeholder near the top of the layout, which as it happened showed nothing at all, let the server start sending before the page had decided whether it existed. By the time the page said "not found", the 200 had already gone.

The fix

We removed the placeholder that wrapped the whole site and moved two loading screens so they only covered the listing pages they were for. No web address changed.

Then we checked we hadn't broken anything else. We compared a production build before and after the change: all 509 routes were the same, and the same 355 pages were still built ahead of time. We also added a test that fails if a loading placeholder ends up above a page again. An ordinary test couldn't see this bug, because the content of the page was identical either way; only the status code differed.

While checking the fix we found one more page type that returned a server error instead of a 404 when there was no content for it yet. It only showed up while that section was empty, which is why nobody had seen it. We fixed that too.

What to ask about your own site

"The page looks fine" proves very little for SEO. What matters is what a search engine receives: the status code and the HTML the server sends before any JavaScript runs. If you're paying for SEO work, ask for checks that look at exactly that, on a few addresses that shouldn't exist as well as the ones that should, and ask for a test that keeps it from coming back.

If you're not sure what your site does, our guide to choosing a software development company lists the questions worth asking before anyone touches it.