Skip to content

Blocklist

The blocklist defines which domains to manage and when they should be blocked.

{
"blocklist": [
{
"domain": "reddit.com",
"description": "Social media",
"unblock_delay": "30m",
"schedule": {
"available_hours": [...]
}
}
]
}

The domain to manage.

{"domain": "reddit.com"}

Notes:

  • Blocking reddit.com also blocks subdomains (www.reddit.com, old.reddit.com)
  • Use the root domain for comprehensive blocking
  • Add subdomain exceptions to allowlist if needed

Human-readable note about the domain.

{
"domain": "reddit.com",
"description": "Social media - productivity drain"
}

Friction before manual unblocking. Default is "0".

{
"domain": "reddit.com",
"unblock_delay": "30m"
}
ValueBehavior
"0"Instant unblock
"30m"30-minute wait
"4h"4-hour wait
"24h"24-hour wait
"never"Cannot unblock

See Unblock Delay for details.

When the domain is accessible. Default is null (always blocked).

{
"domain": "reddit.com",
"schedule": {
"available_hours": [
{
"days": ["saturday", "sunday"],
"time_ranges": [{"start": "10:00", "end": "22:00"}]
}
]
}
}

See Schedules for details.

TimeWithin ScheduleOutside Schedule
StateUNBLOCKEDBLOCKED
NextDNSNot in denylistIn denylist
StateAlways
StateBLOCKED
NextDNSAlways in denylist
{
"domain": "gambling-site.com",
"description": "Always blocked - harmful content",
"unblock_delay": "never",
"schedule": null
}
{
"domain": "slack.com",
"description": "Work communication - work hours only",
"unblock_delay": "0",
"schedule": {
"available_hours": [
{
"days": ["monday", "tuesday", "wednesday", "thursday", "friday"],
"time_ranges": [{"start": "09:00", "end": "18:00"}]
}
]
}
}
{
"domain": "reddit.com",
"description": "Social media - breaks only",
"unblock_delay": "30m",
"schedule": {
"available_hours": [
{
"days": ["monday", "tuesday", "wednesday", "thursday", "friday"],
"time_ranges": [
{"start": "12:00", "end": "13:00"},
{"start": "18:00", "end": "22:00"}
]
},
{
"days": ["saturday", "sunday"],
"time_ranges": [{"start": "10:00", "end": "23:00"}]
}
]
}
}
{
"domain": "store.steampowered.com",
"description": "Gaming - weekends only",
"unblock_delay": "4h",
"schedule": {
"available_hours": [
{
"days": ["saturday", "sunday"],
"time_ranges": [{"start": "10:00", "end": "22:00"}]
}
]
}
}
{
"blocklist": [
{"domain": "reddit.com", "unblock_delay": "30m", "schedule": {...}},
{"domain": "twitter.com", "unblock_delay": "30m", "schedule": {...}},
{"domain": "facebook.com", "unblock_delay": "30m", "schedule": {...}},
{"domain": "instagram.com", "unblock_delay": "30m", "schedule": {...}},
{"domain": "tiktok.com", "unblock_delay": "4h", "schedule": {...}}
]
}
{
"blocklist": [
{"domain": "store.steampowered.com", "unblock_delay": "4h", "schedule": {...}},
{"domain": "epicgames.com", "unblock_delay": "4h", "schedule": {...}},
{"domain": "twitch.tv", "unblock_delay": "30m", "schedule": {...}},
{"domain": "discord.com", "unblock_delay": "30m", "schedule": {...}}
]
}
{
"blocklist": [
{"domain": "netflix.com", "unblock_delay": "30m", "schedule": {...}},
{"domain": "youtube.com", "unblock_delay": "0", "schedule": {...}},
{"domain": "hulu.com", "unblock_delay": "30m", "schedule": {...}},
{"domain": "disneyplus.com", "unblock_delay": "30m", "schedule": {...}}
]
}
{
"blocklist": [
{"domain": "gambling-site.com", "unblock_delay": "never", "schedule": null},
{"domain": "casino-site.com", "unblock_delay": "never", "schedule": null},
{"domain": "betting-site.com", "unblock_delay": "never", "schedule": null}
]
}

Blocking amazon.com blocks:

  • amazon.com
  • www.amazon.com
  • smile.amazon.com
  • *.amazon.com

Use allowlist for exceptions:

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

Result:

  • amazon.com → Blocked
  • www.amazon.com → Blocked
  • aws.amazon.com → Allowed
  • reddit.com
  • old.reddit.com
  • api.example.co.uk
  • https://reddit.com (no protocol)
  • reddit.com/ (no trailing slash)
  • ❌ Empty string

A domain cannot be in both blocklist and allowlist:

// ❌ Invalid
{
"blocklist": [{"domain": "reddit.com"}],
"allowlist": [{"domain": "reddit.com"}]
}
Terminal window
nextdns-blocker config validate

Currently, use config edit:

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

After editing blocklist:

  1. Save config.json
  2. Wait for auto-sync (within 2 minutes)
  3. Or force sync: nextdns-blocker config push

Use dry run to preview:

Terminal window
nextdns-blocker config push --dry-run