Active Features
{{ activeFeatureCount }}/{{ features.length
}}
Core capabilities
Active Upstreams
{{ config.ECS_INJECTION_ENABLED ? 1 : 0 }}/1
ECS capabilities (Upstreams)
Active Filters
{{ activeFilterCount }}/{{ filters.length }}
Query type filters
Blocklist
{{ fmt(stats.blocklistSize || ((lists.blocklist||[]).length)) }}
Blocked domains (merged)
Allowlist
{{ fmt(stats.allowlistSize || ((lists.allowlist||[]).length)) }}
Allowed domains (merged)
Private TLDs
{{ fmt((stats.privateTldsSize || 0) + ((lists.private_tlds||[]).length)) }}
Internal domains (merged)
Mullvad
{{ fmt((stats.mullvadDomainsSize || 0) + ((lists.mullvad_upstream||[]).length)) }}
Upstream domains (merged)
Redirect Rules
{{ fmt((stats.redirectRulesSize || 0) + ((lists.redirect_rules||[]).length)) }}
CNAME overrides (merged)
Feature Status
All toggleable features and filters at a glance
{{ f.label }}
{{ f.desc }}
DNS Upstreams
Resolver endpoints and timeout settings
| Primary | {{ config.UPSTREAM_PRIMARY || '—' }} |
| Fallback | {{ config.UPSTREAM_FALLBACK || '—' }} |
| Geo-Bypass | {{ config.UPSTREAM_GEO_BYPASS || '—' }} |
| Timeout | {{ config.UPSTREAM_TIMEOUT }}ms |
| Refresh Interval | {{ Math.round((config.ALL_LISTS_REFRESH_INTERVAL||3600000)/60000) }} min |
Core Features
Enable or disable major DNS gateway capabilities
{{ f.label }}
{{ f.desc }}
Blocked Query Types
Block specific DNS record types at the edge before
upstream
forwarding
{{ f.label }}
{{ f.desc }}
DNS Upstream Servers
{{ config.ECS_INJECTION_ENABLED ? 1 : 0 }}/1
active
Main DNS-over-HTTPS resolver (DoH)
Used when primary times out or fails
Re-resolve without ECS for geo-blocked domains returning
loopback
= {{
Math.round((config.ALL_LISTS_REFRESH_INTERVAL||3600000)/60000) }}
minutes
ECS (EDNS Client Subnet)
Enable ECS Injection
Inject EDNS Client Subnet for CDN geo-optimization
/{{ config.ECS_PREFIX_V4 || 24 }} mask sent to upstream
/{{ config.ECS_PREFIX_V6 || 48 }} mask sent to upstream
🚫 Blocklist
{{ (lists.blocklist||[]).length +
(customUrls.blocklist||[]).length }}
✅ Allowlist
{{ (lists.allowlist||[]).length +
(customUrls.allowlist||[]).length }}
↪ Redirect
{{ (lists.redirect_rules||[]).length }}
🔒 Private TLDs
{{ (lists.private_tlds||[]).length }}
🌐 Mullvad
{{ (lists.mullvad_upstream||[]).length }}
Loading lists...
Custom {{ listTabLabels[listTab] || 'Rules' }}
Matches domains
exactly. Comments starting with # or ! are ignored.
Block internal
domains or routers (e.g. "local" blocks domain.local). Uses raw text
lines, so dots are not strictly required.
Anonymous
routing (no ECS) for specific domains (e.g. Github routes better via
Mullvad than Google/CF).
Custom DNS
redirect/rewrite (CNAME overrides) — helps overcome network blocks by
rewriting target domains.
Raw Text Editor
Static File Source
{{ config.REDIRECT_RULES_URL }}
{{ fmt((stats.redirectRulesSize || 0) + ((lists.redirect_rules||[]).length)) }} total
(merged)
Static file + custom rules above are
merged
at runtime.
External {{ listTabLabels[listTab] }} URLs
Subscribe to remote blocklists — AdBlock, hosts
file, and
plain domain formats are supported. Comments starting with # are
ignored.
Raw Text Editor
(URLs)
Domains are
auto-cleaned
(AdBlock/hosts/plain formats). Fetched and merged on next list refresh.
Static File Source
{{ listTab==='blocklist' ?
config.BLOCKLIST_URL :
listTab==='allowlist' ? config.ALLOWLIST_URL :
listTab==='private_tlds' ?
config.PRIVATE_TLD_URL : config.MULLVAD_UPSTREAM_URL }}
{{ listTab==='blocklist' ? fmt(stats.blocklistSize || ((lists.blocklist||[]).length)) :
listTab==='allowlist' ? fmt(stats.allowlistSize || ((lists.allowlist||[]).length)) :
listTab==='private_tlds' ? fmt((stats.privateTldsSize || 0) + ((lists.private_tlds||[]).length)) :
fmt((stats.mullvadDomainsSize || 0) + ((lists.mullvad_upstream||[]).length)) }} total (merged)
Static file + external URLs + custom
domains
above are all merged at runtime.