A lightweight Firefox/Mullvad Browser extension to manage and switch between DNS-over-HTTPS (DoH) providers instantly from the toolbar.
- One-click switching between saved DoH providers
- Clipboard auto-copy — activating a provider copies its URL automatically
- Toolbar badge showing the active provider's initials (e.g.
MUfor Mullvad) - Add/remove custom providers
- 8 providers pre-loaded (Mullvad, Cloudflare, NextDNS, Quad9, AdGuard, Control D)
- Disable DoH button to revert to browser default
- Tested on Firefox 90+ and Mullvad Browser
- Open
about:debugging#/runtime/this-firefox - Click Load Temporary Add-on
- Select the
manifest.jsonfile from the extension folder
Note: Temporary add-ons are removed when Firefox closes. For persistent install, use
web-ext.
npm install -g web-ext
cd dns-toggle-firefox/
web-ext build
# Outputs a .xpi file in web-ext-artifacts/Then install the .xpi via about:addons → gear icon → Install Add-on From File.
- Click the DNS Quick Toggle icon in the toolbar
- Click any provider to:
- Mark it as active (green dot + badge update)
- Auto-copy its DoH URL to clipboard
- Open
about:preferences#privacy→ scroll to DNS over HTTPS - Paste the copied URL into the custom resolver field
- Done — your DoH is set
To disable DoH entirely, click ⊘ Disable DoH.
| Provider | URL | Tag |
|---|---|---|
| Mullvad | https://doh.mullvad.net/dns-query |
no-log |
| Mullvad (adblock) | https://adblock.doh.mullvad.net/dns-query |
adblock |
| Mullvad (extended) | https://extended.doh.mullvad.net/dns-query |
adblock+ |
| Cloudflare | https://cloudflare-dns.com/dns-query |
— |
| Cloudflare (security) | https://security.cloudflare-dns.com/dns-query |
malware |
| NextDNS | https://dns.nextdns.io |
— |
| Quad9 | https://dns.quad9.net/dns-query |
malware |
| AdGuard | https://dns.adguard-dns.com/dns-query |
adblock |
| Control D | https://freedns.controld.com/p0 |
— |
- Enter a name (e.g.
My NextDNS) - Enter the DoH URL (must start with
https://) - Click Add
Custom providers are saved in extension storage and persist across sessions.
Firefox's browserSettings.customEngineURL API — which would allow programmatic DNS changes — is intentionally disabled in Mullvad Browser for privacy hardening reasons. As a result, this extension manages your provider list and clipboard; you apply the change once in browser settings.
The one-time paste workflow is intentional: it avoids requiring elevated browser permissions and keeps the extension's footprint minimal.
dns-toggle-firefox/
├── manifest.json # MV2 extension manifest
├── background.js # Badge management (no DNS API calls)
├── popup.html # Extension popup UI
├── popup.js # All logic — no background messaging
└── icons/
├── icon16.png
├── icon48.png
└── icon128.png
| Permission | Reason |
|---|---|
storage |
Save provider list and active selection |
tabs |
Open about:preferences#privacy on click |
browserSettings |
Badge color (gracefully ignored if unavailable) |
dns |
Reserved for future use |