Skip to content

Allowlist

The allowlist creates exceptions to blocking, allowing specific domains to remain accessible.

{
"allowlist": [
{
"domain": "aws.amazon.com",
"description": "Work resource - always accessible"
}
]
}

The domain to allow.

{"domain": "aws.amazon.com"}

Human-readable note.

{
"domain": "aws.amazon.com",
"description": "AWS Console for work"
}

When the allowlist entry is active. Default is null (always allowed).

{
"domain": "youtube.com",
"description": "Entertainment - evenings only",
"schedule": {
"available_hours": [
{
"days": ["monday", "tuesday", "wednesday", "thursday", "friday"],
"time_ranges": [{"start": "20:00", "end": "22:00"}]
}
]
}
}

Always in NextDNS allowlist:

StateAlways
NextDNSIn allowlist 24/7
AccessAlways allowed

Time-based allowlist membership:

TimeWithin ScheduleOutside Schedule
NextDNSIn allowlistNot in allowlist
AccessAllowedSubject to other blocks

Note: This is the inverse of blocklist behavior.

Block parent domain, allow specific subdomain:

{
"blocklist": [
{"domain": "amazon.com", "schedule": null}
],
"allowlist": [
{"domain": "aws.amazon.com", "description": "Work resource"}
]
}

Result:

  • amazon.com → Blocked
  • www.amazon.com → Blocked (inherits from parent)
  • aws.amazon.comAllowed
  • console.aws.amazon.comAllowed (inherits from allowlist)

When NextDNS blocks a domain via category (e.g., “Streaming”):

{
"allowlist": [
{
"domain": "youtube.com",
"description": "Allow during evenings despite streaming category",
"schedule": {
"available_hours": [
{
"days": ["monday", "tuesday", "wednesday", "thursday", "friday"],
"time_ranges": [{"start": "19:00", "end": "22:00"}]
}
]
}
}
]
}

Always-accessible work domains:

{
"allowlist": [
{"domain": "github.com", "description": "Code hosting"},
{"domain": "stackoverflow.com", "description": "Development help"},
{"domain": "docs.google.com", "description": "Documentation"}
]
}
{
"allowlist": [
{"domain": "wikipedia.org", "description": "Reference"},
{"domain": "khanacademy.org", "description": "Learning"},
{"domain": "coursera.org", "description": "Courses"}
]
}

NextDNS processes lists with these priorities:

PrioritySourceResult
1 (Highest)AllowlistALLOWED
2Blocklist/DenylistBLOCKED
3Category/Service blocksBLOCKED
4DefaultALLOWED

Key point: Allowlist always wins.

Terminal window
nextdns-blocker allow aws.amazon.com

Creates a permanent (no schedule) entry.

Terminal window
nextdns-blocker disallow aws.amazon.com

Edit configuration directly:

Terminal window
nextdns-blocker config edit
Terminal window
nextdns-blocker status

Or:

Terminal window
nextdns-blocker config show
{
"domain": "netflix.com",
"description": "Streaming - blocked by category, allow evenings",
"schedule": {
"available_hours": [
{
"days": ["monday", "tuesday", "wednesday", "thursday", "friday"],
"time_ranges": [{"start": "20:00", "end": "22:30"}]
},
{
"days": ["saturday", "sunday"],
"time_ranges": [{"start": "14:00", "end": "23:00"}]
}
]
}
}
{
"domain": "youtube.com",
"description": "Educational content during study hours",
"schedule": {
"available_hours": [
{
"days": ["monday", "tuesday", "wednesday", "thursday", "friday"],
"time_ranges": [{"start": "09:00", "end": "15:00"}]
}
]
}
}
{
"domain": "twitch.tv",
"description": "Gaming streams on weekend nights",
"schedule": {
"available_hours": [
{
"days": ["friday", "saturday"],
"time_ranges": [{"start": "22:00", "end": "02:00"}]
}
]
}
}

When panic mode is active:

  • allow command is hidden
  • disallow command is hidden
  • Scheduled allowlist sync is completely skipped
  • Existing allowlist entries remain but aren’t updated

This prevents bypassing emergency lockdown via allowlist.

A domain cannot be in both lists:

// ❌ Invalid
{
"blocklist": [{"domain": "reddit.com"}],
"allowlist": [{"domain": "reddit.com"}]
}

This is valid (with a warning):

{
"blocklist": [{"domain": "amazon.com"}],
"allowlist": [{"domain": "aws.amazon.com"}]
}
  1. Force sync:

    Terminal window
    nextdns-blocker config push
  2. Clear DNS cache:

    Terminal window
    # macOS
    sudo dscacheutil -flushcache
    # Linux
    sudo systemctl restart systemd-resolved
    # Windows
    ipconfig /flushdns
  3. Check for category blocks in NextDNS dashboard

  1. Check timezone:

    Terminal window
    nextdns-blocker config show | grep timezone
  2. Verify current time is within schedule

  3. Check for panic mode:

    Terminal window
    nextdns-blocker panic status

Panic mode is active:

Terminal window
nextdns-blocker panic status

Wait for expiration or don’t try to bypass emergency protection.