Follow the instuctions below to set up CleanBrowsing on your device, browser or router.
Select your filter:
Blocks adult content, pornography, and mixed content sites. Also forces Safe Search on Google, Bing, and YouTube.
Only works on routers that can run executables
Our Help repository at CleanBrowsing Help provides specific instructions for different routers.
We use the Free Filtering service in the examples below. Paying customers should use the values issued in the dashboard.
If your network supports IPv6. Can also disable IPv6 on router and device.
Windows 10 and Windows 11 (64-bit)
We use the Free Filtering service in the examples below. Paying customers should use the values issued in the dashboard.
One-click setup — no command-line needed
The CleanBrowsing Desktop App configures DNS filtering automatically on all your network interfaces. It includes browser hardening, captive portal detection, password protection, and automatic network monitoring.
For full setup instructions, see the Windows App Setup Guide. For a complete feature overview, see Windows Desktop App — Features and Overview.
Windows 11
Your network supports IPv6
Set-DnsClientServerAddress -InterfaceAlias "Ethernet" -ServerAddresses 185.228.168.168,185.228.169.168
Set-DnsClientServerAddress -InterfaceAlias "Ethernet" -AddressFamily IPv6 -ServerAddresses 2a0d:2a00:1::,2a0d:2a00:2::
netsh interface ipv4 set dns name="Ethernet" static 185.228.168.168 & netsh interface ipv4 add dns name="Ethernet" 185.228.169.168 index=2
netsh interface ipv6 set dnsservers "Ethernet" static 2a0d:2a00:1:: & netsh interface ipv6 add dnsservers "Ethernet" 2a0d:2a00:2:: index=2
Only works on routers that can run executables
Our Help repository at CleanBrowsing Help provides specific instructions for different MacOS configurations.
We use the Free Filtering service in the examples below. Paying customers should use the values issued in the dashboard.
macOS Big Sur or higher
Use our Apple DNS Configuration Profile Generator to create a custom profile with your filter and device name.
sudo networksetup -setdnsservers "Wi-Fi" 185.228.168.168 185.228.169.168 2a0d:2a00:1:: 2a0d:2a00:2::
Paying customers need to configure a scheduler so the system can track the public IP when using IPv4.
$ crontab -e
*/10 * * * * /usr/bin/curl -fsS https://my.cleanbrowsing.org/dynip/MYCODE >/dev/null 2>&1
Update MYCODE with the code provided in your dashboard.
Requires familiarity with Terminal and sudo (administrator) rights.
This script installs a background service that locks your DNS settings to CleanBrowsing. If anyone changes the DNS on this device, the service will automatically revert it back within 60 seconds. It configures both IPv4 and IPv6, and for paid accounts it also keeps your public IP registered with CleanBrowsing.
sudo bash -c "$(curl -sL https://cleanbrowsing.org/download/macos/cb-macos-lockdown.sh)"
That's it. The service starts immediately and persists across reboots. For the strongest protection, use a Standard (non-admin) account for daily use.
To uninstall, run the same command, select option 4, and contact support@cleanbrowsing.org for your support code.
Android 9 or higher
Configuring DNS filtering on Android can be tricky. You have two options: use the CleanBrowsing app to automate the setup (note: some Android versions restrict sideloaded apps), or configure Private DNS manually without any app.
Automates Private DNS + VPN fallback
The CleanBrowsing Android app automates DNS filtering setup, provides VPN fallback when Private DNS is blocked, and locks down settings to prevent tampering.
For full setup instructions, see the Android App Setup Guide. For a complete feature overview, see Android App — Features and Overview.
No app required — Android 9 or higher
See our Android Private DNS guide for detailed instructions with free filter hostnames.
If you're not using the app, see our Lock Down Mobile Settings guide for ways to prevent users from changing DNS settings manually.
Only works on routers that can run executables
Our Help repository at CleanBrowsing Help provides specific instructions for different iOS configurations.
We use the Free Filtering service in the examples below. Paying customers should use the values issued in the dashboard.
iOS 14 or higher
Use our Apple DNS Configuration Profile Generator to create a custom profile with your filter and device name.
ChromeOS devices (personal and managed)
Our Help repository at CleanBrowsing Help provides detailed instructions for Chromebook configurations.
We use the Free Filtering service in the examples below. Paying customers should use the values issued in the dashboard.
Personal or unmanaged Chromebooks
Note: If you connect to a different Wi-Fi network, you will need to repeat these steps for that network.
Fleet deployment via Google Workspace Admin Console (DoH)
For the full step-by-step guide with verification steps, see our Google Workspace Chrome DoH guide.
tvOS 15 or higher
Apple TV supports DNS configuration profiles, the same .mobileconfig files used on iPhone and Mac. You can push a profile from another Apple device or use Apple Configurator.
Requires another Apple device signed into the same Apple ID
Note: Both devices must be signed into the same Apple ID and connected to the internet for the profile to sync.
For schools, businesses, or bulk device management
Covers all devices on the network including Apple TV
This approach protects every device on the network but does not encrypt DNS queries unless your router supports DoH/DoT.
Multiple configuration methods available
Choose the method that best fits your Linux distribution and setup. We use the Free Filtering service in the examples below. Paying customers should use the values issued in the dashboard.
Most modern Linux distributions (Ubuntu 18.04+, Fedora, Arch, etc.)
Use the following in /etc/systemd/resolved.conf:
[Resolve]
DNS=185.228.168.168#family-filter-dns.cleanbrowsing.org
DNS=2a0d:2a00:1::#family-filter-dns.cleanbrowsing.org
DNS=185.228.169.168#family-filter-dns.cleanbrowsing.org
DNS=2a0d:2a00:2::#family-filter-dns.cleanbrowsing.org
DNSOverTLS=yes
Then restart the service:
sudo systemctl restart systemd-resolved
Simple DNS configuration via resolv.conf or NetworkManager
Change your DNS servers to 185.228.168.168 and 185.228.169.168.
Or edit /etc/resolv.conf directly:
nameserver 185.228.168.168
nameserver 185.228.169.168
If your network supports IPv6
Change your DNS servers to 2a0d:2a00:1:: and 2a0d:2a00:2::.
Lightweight DNS forwarder, commonly used on routers and servers
Use the following in dnsmasq.conf:
no-resolv
bogus-priv
strict-order
server=2a0d:2a00:2::
server=185.228.169.168
server=2a0d:2a00:1::
server=185.228.168.168
DNS Privacy stub resolver using DNS-over-TLS
Use the following in stubby.yml:
round_robin_upstreams: 1
upstream_recursive_servers:
- address_data: 185.228.168.168
tls_auth_name: "family-filter-dns.cleanbrowsing.org"
- address_data: 2a0d:2a00:1::
tls_auth_name: "family-filter-dns.cleanbrowsing.org"
- address_data: 185.228.169.168
tls_auth_name: "family-filter-dns.cleanbrowsing.org"
- address_data: 2a0d:2a00:2::
tls_auth_name: "family-filter-dns.cleanbrowsing.org"
Make sure Stubby is linked with OpenSSL 1.1.1 or higher.
Encrypted DNS proxy supporting multiple protocols
Use the following in dnscrypt-proxy.toml:
server_names = ['cleanbrowsing-family']
[static]
[static.'cleanbrowsing-family']
stamp = 'sdns://AgMAAAAAAAAAAAAVZG9oLmNsZWFuYnJvd3Npbmcub3JnEy9kb2gvZmFtaWx5LWZpbHRlci8'
For more configuration options, visit our DNSCrypt with CleanBrowsing guide.
High-performance recursive DNS resolver with TLS forwarding
Use the following in /etc/kresd/custom.conf:
policy.add(policy.all(policy.TLS_FORWARD({
{'185.228.168.168', hostname='family-filter-dns.cleanbrowsing.org'},
{'2a0d:2a00:1::', hostname='family-filter-dns.cleanbrowsing.org'},
{'185.228.169.168', hostname='family-filter-dns.cleanbrowsing.org'},
{'2a0d:2a00:2::', hostname='family-filter-dns.cleanbrowsing.org'}
})))
Cloudflare's DNS-over-HTTPS proxy daemon
Use the following in /usr/local/etc/cloudflared/config.yml:
proxy-dns: true
proxy-dns-upstream:
- https://doh.cleanbrowsing.org/doh/family-filter/
Validating, recursive, and caching DNS resolver
Use the following in unbound.conf:
forward-zone:
name: "."
forward-tls-upstream: yes
forward-addr: 185.228.168.168#family-filter-dns.cleanbrowsing.org
forward-addr: 2a0d:2a00:1::#family-filter-dns.cleanbrowsing.org
forward-addr: 185.228.169.168#family-filter-dns.cleanbrowsing.org
forward-addr: 2a0d:2a00:2::#family-filter-dns.cleanbrowsing.org
As a recursive resolver, Unbound chases CNAMEs. This may result in unexpected behavior when used with a blocking DNS resolver. See github.com/NLnetLabs/unbound/issues/132.
Configure DNS-over-HTTPS directly in your browser
Most modern browsers support Secure DNS (DoH) natively. This protects your DNS queries on that specific browser, regardless of the system DNS settings.
Windows, macOS, and Linux
Paid customers should replace the DoH URL above with their custom URL from the CleanBrowsing Dashboard:
https://doh.cleanbrowsing.org/doh/custom-filter/[code]
Replace [code] with the code from your dashboard.
Secure your DNS queries with encryption
Encrypted DNS prevents your DNS queries from being intercepted or modified. CleanBrowsing supports both DNS-over-HTTPS (DoH) and DNS-over-TLS (DoT). Learn more in our What is Encrypted DNS? guide.
Sends DNS queries over HTTPS (port 443) — Learn more about DoH
Sends DNS queries over TLS (port 853) — Learn more about DoT
After configuring CleanBrowsing on a device, it's important to prevent users from changing the DNS settings and bypassing your filters. Our lock settings guide covers multiple approaches for both iOS and Android: