BlockMyself
Profile builder

Build it here, install it in two taps.

Answer a few questions and this page writes a configuration profile for your device: filtered DNS, Apple's built-in adult-content filter, and your own list of blocked sites. It replaces about twenty minutes of poking through Settings.

Runs in your browser Nothing is uploaded No account
Read this first: what a profile can and cannot do.

On an iPhone or iPad you have not supervised, a profile can genuinely block: it filters every app, works on mobile data, and applies to pages opened inside other apps. What it cannot do is stop you from removing it, or from switching DNS back to Automatic. Those settings exist but Apple restricts them to supervised devices, which means erasing the phone first. See Lock the DNS profile.

So this is worth doing, and it is not a lock. Pair it with a Screen Time passcode someone else holds, which is protected as long as the Apple Account entered at the passcode-recovery prompt is the trusted person's or the prompt is skipped, and with a record someone else can see, so that removing this is visible rather than silent.

Watch this: Apple's developer documentation marks the DNS Settings profile payload as deprecated from iOS 27 and macOS 27. Deprecated means still accepted but on notice: iOS 27 and macOS 27 are the first releases to carry the mark, and the replacement is delivered by device management rather than by a profile you tap. This builder was last confirmed on iOS 26; if you install on iOS 27 or later, check that the DNS row appears under VPN & Device Management afterwards, re-test after each update, and expect the route to narrow over time.

Build your profile

iPhone and iPad support Apple's built-in content filter, so you get DNS filtering and site blocking together.

Apple's own adult-content filter, plus your additions. This is the sensible default.

One per line. Just the domain — no https:// needed. Be aware there are no wildcards, so subdomains you do not list may still load. Apple caps the list at 500 entries and each domain takes two (http and https), so keep it under 250 domains.

Only used to label the profile so you can tell it apart later.

What this does not cover