All checks
Production Readinessmediumsoft-404-pagechecked on every page we scan

Page says it does not exist but returns a success status

This page returns HTTP 200 while its content reads “not found”.

0% · n=31 · as of 15 September 2026 of sites ShipReady scanned had this, counted across sites where this check completed.

Why it matters

This page returns HTTP 200 while its content reads “not found”. To a visitor it is a dead end; to every automated system it is a healthy page. Search engines index it as real content and keep it in results, uptime and error monitoring never alerts because nothing failed, and your analytics count it as a successful pageview — so the breakage is invisible in exactly the places you would look for it. This page was reached by following the site's own links or sitemap, which means something still points at it.

How ShipReady detects it

Launch signals carried by a PAGE's own markup: basic metadata, and a default framework title left in place. Genuinely per-page - a polished homepage routinely hides a /pricing that still says "Create Next App", which is exactly the defect this catches. Reads only the already-fetched HTML and issues no requests of its own.

Detection is deterministic. ShipReady reports this only when it observes the condition directly, and prefers to miss a real problem over inventing one. Rule version 1.10.0.

How to fix it

This is the prompt ShipReady puts in your report — written to be pasted straight into Cursor, Claude Code, or whichever assistant built the app.

This page returns HTTP 200 while telling visitors it does not exist, so search engines index it as real content and your error monitoring never fires. Decide which of the two it should be. If the route is genuinely gone: return a real 404 status with the not-found page (in Next.js call notFound() from the page/route so the framework sets the status, rather than rendering your own "not found" component with a 200), or return 301 to whatever replaced it. If it should exist: fix the data or route that is failing to resolve — an empty CMS response or a lookup returning null is the usual cause, and it is being swallowed into the not-found branch. Either way, find what still links here: this page was reached by following your own navigation or sitemap, so update or remove that link. Verify with `curl -I <url>` and confirm the status line is no longer 200.

Frequently asked questions

What does "Page says it does not exist but returns a success status" mean?
This page returns HTTP 200 while its content reads “not found”.
How serious is it?
ShipReady rates this medium. Fix soon. Meaningfully weakens a defence or degrades how the site works.
How common is this?
Across the sites ShipReady has scanned where this check completed, 0% · n=31 · as of 15 September 2026.
How do I fix it?
Paste the fix prompt on this page into Cursor, Claude Code or your AI editor. It is the same prompt ShipReady puts in your report.
Can I check my own site?
Yes — ShipReady scans up to ten pages of any public site for free and reports this alongside every other check. The free report lists every issue it finds and shows full evidence and a fix prompt for the critical and high-severity ones; medium and low findings are counted and unlock on Pro.

Related checks

Run this check on your site

ShipReady checks this and 193 other things across up to ten pages of your site, with an AI-ready fix for each. Free, no signup.