# ERR_FILE_NOT_FOUND in Chrome — Why a Local HTML File or Link Won't Open

Canonical: https://commareports.com/fix/err-file-not-found
Published: 2026-10-09

> Chrome says “Your file couldn't be accessed” with ERR_FILE_NOT_FOUND when you open an HTML file or click a link inside one. The five usual causes — moved files, zip previews, missing sibling pages, # in a file name — and how to fix each.

# ERR_FILE_NOT_FOUND

You double-click an HTML file, or click a link inside one, and Chrome shows
a grey page:

```
Your file couldn't be accessed
It may have been moved, edited, or deleted.
ERR_FILE_NOT_FOUND
```

The address bar holds the answer. It starts with `file:///`, and it is the
exact path Chrome looked for. Compare it with where the file really is —
the difference is the bug.

## The five usual causes

| What you did                                    | What actually happened                                                   |
| ----------------------------------------------- | ------------------------------------------------------------------------ |
| Reopened a bookmark, a history entry or a tab   | The file was moved, renamed, or was a temporary copy that got cleaned up |
| Opened a report straight from inside a zip      | Only that one file was extracted; its siblings stayed in the zip         |
| Opened `index.html`, clicked through to a page  | The linked page was never copied, attached or uploaded with it           |
| Clicked a link to `run#3.html` or `what?.html`  | `#` and `?` end the path in a URL, so Chrome asked for a different file  |
| Opened an attachment from Outlook or a chat app | It ran from the app's temp folder, which is emptied later                |

### Moved, renamed or temporary

A bookmark to a `file:///` path is a pointer to one spot on one disk. Move
the folder, rename it, sync it to another machine, or open it from the
Downloads folder after a cleanup, and the pointer is dead. Mail clients
are the worst case: Outlook opens an HTML attachment from a hidden temp
folder, so reloading that tab a day later fails even though the email is
still in your inbox.

**Fix:** save the file somewhere permanent first, then open it from there.

### Opened from inside a zip

On Windows, File Explorer shows a zip like a folder. Double-clicking an
HTML file in it extracts _only that file_ to a temporary folder and opens
it. The page renders, maybe without its styles — but every link to another
page, and every image, points at a folder that doesn't exist. CI artifacts
(GitHub Actions, GitLab, Jenkins) always arrive this way, which is why
coverage and test reports are the most common victims.

**Fix:** right-click the zip → **Extract All**, then open the HTML from the
extracted folder.

### The linked page was never sent

A multi-page report — a coverage report, a Sphinx or MkDocs site, a
JaCoCo or Allure output, an Excel workbook saved as a web page — is a
folder, not a file. Send only `index.html` and the first page opens fine
on the other side. Every click after that is ERR_FILE_NOT_FOUND, because
the links are relative (`src/app.html`) and `src/` is on your machine.

**Fix:** send the whole folder as a zip, or publish it so each page has a
real URL. If the report is really one page with images and CSS, collapse
it into one self-contained file with the
[HTML inliner](/tools/html-inliner) and there are no siblings to lose.

### `#`, `?` or `%` in a file name

File names may contain characters that mean something in a URL. A link
`href="results#2.html"` is read as the file `results` plus a fragment
`2.html`. Same for `?` (query string) and a bare `%` (start of an escape).
The file exists; Chrome is asking for a different one.

**Fix:** rename the files to letters, digits, `-` and `_`, or encode the
character in the link — `results%232.html`. Spaces are fine in practice,
but `%20` is the safe form if a generator writes the links.

### A path that only exists on your machine

If the address bar shows `file:///C:/Users/someone-else/…` or
`/home/runner/work/…`, the link was written as an absolute path by
whatever generated the report. It worked on the machine that built it.

**Fix:** make the generator write relative links (`os.path.relpath` in
Python, `path.relative` in Node). If the page is being served over
`http(s)` instead, Chrome blocks the same link with a different message —
see [“Not allowed to load local resource”](/fix/not-allowed-to-load-local-resource).

## The way out of file:// for good

Every cause above is the same underlying problem: a `file:///` path is
only valid on one disk, in one folder layout, at one moment. The fix that
stops all five is to give the report a real URL.

Comma takes a single HTML file, a folder, or a zip (multi-page reports
keep their relative links between pages), and returns one link that opens
the same for everyone — no extracting, no temp folders. Readers can open
it without an account and pin comments on the exact line or chart they
mean; commenting needs a free sign-in.

**[Publish a report →](https://commareports.com/)**

### Related

- [Coverage report links 404 on click-through](/fix/coverage-report-links-broken)
- [GitHub Actions artifact HTML won't open](/fix/github-actions-artifact-html-not-viewable)
- [Images not showing in a sent HTML file](/fix/html-images-not-showing)
- [CORS error from origin 'null'](/fix/cors-error-file-origin-null)
- [Share an HTML folder](/share-html-folder)
- [Free HTML inliner](/tools/html-inliner)
