Short answer: it works for a while, and then it stops working on the night you most need it to. Opal is good at putting a wall in front of a habit. It is not built to stop the person who set the wall up.
Here is what it does, where it breaks, and what has to change for a block to hold.
What Opal actually blocks
Opal is a focus app that runs on Apple's Screen Time system. You pick apps and websites to block, set a schedule or start a session, and Opal keeps them from opening. Because it uses Screen Time rather than a browser extension, the block applies across the phone instead of inside one app.
For porn specifically, that means you can add sites to a blocked list, block whole categories, or run an always-on block so the sites simply do not load. On day one it works. You open a site out of habit, you hit a block screen, and the loop breaks. That is real, and for a lot of people it is enough to get through the first week.
Where it breaks
Three gaps, in the order people usually find them.
1. You can end the session. Opal's harder modes add steps before you can stop a block, and the paid tier adds more steps than the free one. They are still steps you are allowed to take. A block you can end is a block you will end at 1am, and the extra taps become part of the ritual rather than a barrier.
2. You can delete the app. Opal lives on your home screen. Holding down the icon and deleting it removes every block it was enforcing. There is no version of Opal that survives its own deletion, which is why "app blocker you can't uninstall" is such a common search. We wrote about what it takes to build a blocker you cannot uninstall, and the answer is never the blocker app itself.
3. Blocking sites by name is a losing game. A blocked-list approach only covers the addresses on the list. New domains, mirrors, image search, social feeds, and any browser that is not covered all leak. This is the gap Apple's own content restriction closes better than a list does, because it filters by category instead of by name.
All three lead back to one thing: you hold the Screen Time passcode. Every block on the phone, Opal's included, is a setting behind those four digits. If you can type them, none of the blocks are load-bearing.
The setup that does hold
You do not need Opal for the blocking part. iOS does it for free and does it at a lower level:
- Screen Time › Content & Privacy Restrictions › Content Restrictions › Web Content › Limit Adult Websites. This filters by category, not by a list you maintain, and it applies system-wide.
- Set the App Store age rating to 13+. This removes third-party browsers and closes the "install Chrome instead" route. There is a full walkthrough of the 13+ restriction here.
- Turn off Private Browsing and lock the restrictions so they cannot be switched back.
Now the honest part. You just built all of that behind a passcode you know. Everything above takes about ninety seconds to undo, and you know it does. That knowledge is what makes the block feel optional even while it is switched on.
Closing the last gap
The block only becomes real when you cannot turn it off. That means the Screen Time passcode has to be something you do not know.
WaitToUnlock is built for that one job. It generates a random Screen Time passcode and walks you through typing it into your phone without ever showing you the whole thing, so you cannot memorise it. It stores the passcode encrypted. When you genuinely need it back, you request it and then wait several hours before it is shown to you.
The wait is the point. Wanting to remove a block and still wanting it removed six hours later are two different things, and almost nothing survives the gap between them.
So, does Opal work for this?
Opal works as friction. If a block screen and a few extra taps are enough to redirect you, it will do the job, and the design and stats are genuinely good. Plenty of people use Opal for daily structure and are happy with it.
If you have already ended a session you set for yourself, or deleted a blocker and reinstalled it the next morning, more features will not fix that. Set up the iOS content restrictions, lock the Screen Time passcode away, and keep Opal for structure if you like it. The lock is what makes the rest count.