HTTP 404 Not Found in GitHub Pages
GitHub Pages — free static hosting from a repo.
What triggers it in GitHub Pages
The build succeeded but the requested path isn't in `_site` — often a missing `permalink` or a case-mismatch on Linux runners.
How to fix it on GitHub Pages
Check the Actions artifact for the deployed folder tree; add a `permalink` to the front-matter.
Where you'll see it
The GitHub Actions deploy log, the Pages settings tab, or the raw response headers (`x-github-request-id`).
Monitor 404 responses continuously
Lemwatch checks your GitHub Pages endpoints as often as every 5 minutes and alerts the moment a 404 pattern appears — with the full response headers and body captured, so you can debug without waiting for the next customer report.
Same error on other platforms
404 Not Found in GitHub Pages — FAQs
The build succeeded but the requested path isn't in `_site` — often a missing `permalink` or a case-mismatch on Linux runners.
Check the Actions artifact for the deployed folder tree; add a `permalink` to the front-matter.
404 on GitHub Pages is a client-side condition, so it will keep returning until the request or configuration is corrected. Retrying the same request without changes will produce the same 404 response.
High SEO impact. 404s waste crawl budget (Googlebot stops crawling broken paths but keeps re-checking them), drop the link equity of inbound backlinks (a backlink to a 404 page gives you nothing), and erode user trust. Google does not penalise sites for having some 404s — it expects them — but it does penalise sites with a high proportion of broken internal links or large numbers of previously-indexed pages now returning 404 without redirects. Sites that migrate without redirects routinely lose 40-80% of organic traffic. On GitHub Pages specifically, Googlebot sees the same 404 your users see, so unresolved errors get reflected in Search Console's Page indexing report within days.
Set up an HTTP monitor that pings your key GitHub Pages endpoints from multiple regions every 1–5 minutes and alerts on any non-2xx response. Lemwatch does this out of the box — including capturing the full response headers and body when a 404 hits, so you can debug without waiting for the next user report.
Both are client error responses, but they mean different things: 404 Not Found indicates the requested resource could not be found on the server — the page may have been deleted, moved, or the url was typed incorrectly., while 301 is a distinct condition with its own root cause. On GitHub Pages, the fix path and the log signature are different — check the exact status code your GitHub Pages logs return before applying a fix.