---
title: "How to return a real 404 with a recoverable body on Webflow"
slug: fix-soft-404-webflow
published: 2026-10-12T13:15:50.990532+00:00
updated: 2026-10-12T13:16:03.469057+00:00
author: "AIScan Content Team"
author_url: https://aiscan.site/about
category: "AI Readiness"
tags: check:E1, platform:webflow, Webflow, 404, soft 404, 301 redirects, AI readiness
description: "Webflow returns a real 404, but the stock page has no links. Design a 404 that agents can recover from, handle the /404 quirk, and verify AIScan check E1."
url: https://aiscan.site/blog/fix-soft-404-webflow
---

Webflow already does the hard part of a 404: ask a published site for a URL that does not exist and the server answers with a real 404 status. What it does not do is make that page useful. AIScan check **E1** (Correct 404 handling) grades the status code and the body, and a 404 page with no links fails the second half. This guide shows what Webflow serves, how to design a 404 an agent can recover from, and the one quirk of the reserved `/404` URL. Tested on 12 October 2026 against live Webflow-hosted sites.

## Quick summary

| Situation | What Webflow returns | Fix |
|---|---|---|
| Unknown URL, 404 page designed with links | 404 with your page | None needed |
| Unknown URL, no designed 404 page | 404, a bare page with no links | Design the 404 page (Step 1) |
| The reserved `/404` URL itself | **200** on a site with a designed page | Turn off **Sitemap indexing** (Step 2) |
| Old URL after a rename or move | 404 | Add a 301 redirect (Step 3) |

**Fastest route:** run `npx aiscan-cli yoursite.com` and read **E1, Correct 404 handling**. The by-hand check is in Step 4.

## What Webflow serves for a missing page

I probed two published Webflow sites with `curl`: one with a designed 404 page and one still on the platform's stock error page. A made-up path and a made-up `.md` path both returned **404** on both sites, so unlike some hosts Webflow does not soft-200 one extension and hard-404 another. The difference is the body:

| Site | Status for `/zz-nonexist-123` | Body |
|---|---|---|
| Stock page (`cloneable.webflow.io`) | 404 | 906 bytes, one `<h1>`, **0 links** |
| Designed page | 404 | ~50 KB, navigation and footer links |

The stock page has the right status and nothing an agent can follow. That is a partial E1 result, and the fix lives in the Designer, not in server settings.

## Step 1: Design a 404 page that links somewhere

Webflow's help article on the 404 error page says it sits in the **Utility pages** section of the Pages panel. In the Designer:

1. Click the **Pages** icon in the left sidebar.
2. Expand **Utility pages** and click **404**.
3. Add a heading that says the page was not found, one sentence naming your site, and plain links to the homepage, your main sections and your sitemap.
4. Click **Publish**.

Use static elements: a Navbar component, a text link or a Link block. The same help article states you cannot add Collection lists to a 404 page, because the page has to work even when the CMS or other Webflow features are down. So a "latest posts" list will not work here; hard-code the links you want an agent to follow.

Two limits from Webflow's page documentation: the 404 page's slug is reserved at `/404` and cannot be changed, and the 404 page cannot be saved as a draft. You can rename it in the Pages panel, but the URL stays.

## Step 2: Keep `/404` itself out of the index

Here is the quirk. On the designed-page site, `curl -I https://yoursite.com/404` returned **200**, while every other unknown URL returned 404. The reserved slug is a real page, so it answers like one. A random-path probe like the one in Step 4 never requests `/404`, so this does not fail the check, but a crawler that finds a link to `/404` sees a 200 page that says "not found".

Webflow's guide on disabling search engine indexing names the 404 page as a good candidate and gives the setting. Open the 404 page, go to **Page settings > SEO settings**, switch **Sitemap indexing** off and publish. Webflow documents that this toggle adds `<meta content="noindex" name="robots">` to the page, and that it only works if the auto-generated sitemap is enabled. On the live site I tested, `/404` was not listed in `sitemap.xml`.

## Step 3: Redirect URLs that used to exist

Every moved or deleted page now returns your 404, which is correct, but it sends agents and visitors to a dead end. Webflow's redirect documentation requires a paid Site plan or a Workspace with a paid plan, then:

1. Go to **Site settings > Publishing > 301 redirects**.
2. Enter the old path (for example `/old-url`) in **Old path**.
3. Enter the new path in **Redirect to path**.
4. Click **Add redirect path** and publish.

To redirect an existing static page, Webflow says you must first delete it, save it as a draft or change its slug. When you change a slug in Page settings, tick **Permanently redirect the old URL to this new one** and Webflow creates the rule for you.

Do not use one wildcard rule to push every unknown URL to the homepage. A redirect answers 301, so a missing page would stop returning 404 at all.

## Step 4: Verify the fix

**With AIScan (default):** run `npx aiscan-cli yoursite.com`, open **Discoverability** and find **E1, Correct 404 handling**. It should pass, with the 404 body counted.

**By hand with curl:**

```bash
curl -s -o /dev/null -w '%{http_code}\n' https://yoursite.com/this-page-does-not-exist-9f3a
curl -s https://yoursite.com/this-page-does-not-exist-9f3a | grep -c '<a '
curl -s https://yoursite.com/404 | grep -i 'name="robots"'
```

Expected: `404`, then a link count of at least 2, then a robots meta tag containing `noindex`. Run it against your custom domain, and republish first if the output looks old.

## Edge cases

- **A reverse proxy or CDN in front of Webflow** can replace the 404 with its own 200 page. Webflow's reverse proxy guide lists a host header mismatch as a cause of 404s at the origin, so test the public domain, not only the `.webflow.io` address.
- **Localised sites:** Webflow notes that 301 redirects do not apply to localised slugs, so `/old-url` and `/es/old-url` need separate rules.
- **CMS item pages** need the same care: Webflow says an item must be archived, deleted, unpublished or have its slug changed before a redirect rule for its URL applies.

## Next step

Run the scan, check E1 on your own domain, and read the rest of the series in [AIScan's guides](https://aiscan.site/guides). Related reading: the [Astro version of this fix](https://aiscan.site/blog/fix-soft-404-astro), the [Next.js version](https://aiscan.site/blog/fix-soft-404-nextjs), [why soft 404s mislead agents](https://aiscan.site/blog/soft-404-agent-discovery-problem), the [Discoverability checks](https://aiscan.site/docs/checks/discoverability) and [AI readiness setup on Webflow](https://aiscan.site/blog/ai-readiness-setup-webflow).

