Block what doesn't belong. Allow what does.
A cross-browser extension for Chrome, Microsoft Edge, Brave, Firefox, LibreWolf, and Tor that intercepts browser downloads and blocks or permits them based on user-defined MIME type rules.
MIME Filter is now live on the Chrome Web Store → Get it here. No developer mode, no manual loading, just install and go. If you're already using it, a quick rating on the store page helps other people find it.
- Visit the Chrome Web Store listing.
- Click Add to Chrome.
- The ⬡ icon appears in the toolbar. Done.
- Visit the Chrome Web Store listing in Edge.
- Click Add to Chrome. Edge will prompt you to confirm installing an extension from another store, click Allow extension from other stores (or enable it once in
edge://extensionsif you don't see the prompt). - Click Add extension to confirm.
- The ⬡ icon appears in the toolbar.
- Visit the Chrome Web Store listing in Brave.
- Click Add to Chrome, then Add extension to confirm. Brave installs it straight from the Chrome Web Store, no extra toggle needed.
- The ⬡ icon appears in the toolbar.
- Download the latest
.xpifile from the Releases page. - Open Firefox and go to
about:addons. - Click the gear icon ⚙️ → Install Add-on From File…
- Select the downloaded
.xpifile. - Click Add when prompted.
The extension will persist across Firefox restarts and update when you install a newer .xpi.
For LibreWolf and Tor, the steps are identical, the signed .xpi works without any config changes.
- Open
about:debugging#/runtime/this-firefox. - Click Load Temporary Add-on → select
manifest.jsoninsidemime-filter/. - The extension is active until Firefox restarts.
The ON/OFF toggle in the header enables or disables all download filtering. Settings and logs are preserved while disabled.
| Mode | Behaviour |
|---|---|
| Allowlist | Only MIME types matching a rule are permitted. Everything else is blocked. |
| Denylist | MIME types matching a rule are blocked. Everything else passes through. |
- Type a MIME type or prefix into the input field and press Enter or click +.
- Or click a Quick add tag for common types.
Rules are prefix-matched (case-insensitive):
| Rule entered | Matches |
|---|---|
application/pdf |
Exactly application/pdf |
image/ |
image/png, image/jpeg, image/webp, … |
text/ |
text/plain, text/html, text/csv, … |
application/vnd.openxmlformats-officedocument. |
All modern Office formats |
The Log tab shows all intercepted downloads, newest first. Each entry records:
- Status:
blockedorallowed - MIME type detected by the browser
- Source URL
- Timestamp
Click Export JSON to download the full log as a .json file.
application/pdf
image/
text/plain
text/csv
application/json
application/zip
application/vnd.openxmlformats-officedocument.
application/vnd.oasis.opendocument.
application/pkcs12
audio/
video/
application/x-msdownload
application/x-executable
application/x-sh
application/x-bat
application/x-msi
application/octet-stream
[
{
"id": "42",
"url": "https://example.com/report.pdf",
"filename": "report.pdf",
"mimeType": "application/pdf",
"status": "allowed",
"reason": "MIME type \"application/pdf\" matched allowlist rule",
"timestamp": "2026-03-11T09:14:22.801Z"
},
{
"id": "43",
"url": "https://evil.example.com/payload.exe",
"filename": "payload.exe",
"mimeType": "application/x-msdownload",
"status": "blocked",
"reason": "MIME type \"application/x-msdownload\" is not in the allowlist",
"timestamp": "2026-03-11T09:15:03.412Z"
}
]chrome.downloads.onCreated
│
▼
filtering enabled? ──No──▶ pass through
│ Yes
▼
extract downloadItem.mime
│
▼
matchesMimeRule(mime, rules)
(prefix-matched, case-insensitive)
│
┌────┴────┐
│ │
Allowlist Denylist
│ │
match=allow match=block
no match=block no match=allow
│
▼
Block: cancel() → erase() → notify() → log(blocked)
Allow: log(allowed)
| Feature | Chrome MV3 | Microsoft Edge MV3 | Brave MV3 | Firefox MV3 | LibreWolf/Tor |
|---|---|---|---|---|---|
| Download interception | ✅ | ✅ | ✅ | ✅ | ✅ |
| Cancel download | ✅ | ✅ | ✅ | ✅ | ✅ |
| Notifications | ✅ | ✅ | ✅ | ✅ | ✅ |
| Persistent storage | ✅ | ✅ | ✅ | ✅ | ✅ |
| Service worker | ✅ | ✅ | ✅ | ✅ (109+) | ✅ |
Note: Firefox requires the
browser_specific_settings.gecko.idfield inmanifest.json; this is already included.
Distributed under the MIT License. See LICENSE.

