Guide · macOS 14 and later
Three routes, step by step: the built-in Screen Time settings, the hosts file, and a dedicated blocker.
Including the part most guides skip — where each method breaks, and how quickly you can undo it when you change your mind.
Core blocker free forever · v1.22.4 · macOS 14+ · universal binary · Apple-notarised
There are three genuinely different ways to block a website on a Mac, and they are not interchangeable. macOS Screen Time is free, built in and takes two minutes. Editing /etc/hosts is a system-level trick that needs no software at all. A dedicated blocker app is the heavier option, and the only one designed for the case where the person trying to get past the block is you.
Work through them in that order if you are not sure. Start with the free built-in option, notice how you defeat it, and let that tell you how much friction you actually need. The background on how blocking is enforced underneath all three is in the website blocker for Mac explainer.
Method 1
Screen Time is Apple's own parental-controls and self-limiting system, and it is already on your Mac. It can filter adult sites automatically, hold a manual list of sites that are never allowed, and put daily time limits on apps. Nothing to install, nothing to pay.
The restriction lives in System Settings, and whoever is sitting at the Mac can go back and switch it off. That person is you, and the moment you most want to switch it off is precisely the moment the block was supposed to matter. A Screen Time passcode adds a step, but it is a passcode you chose and therefore know.
The second problem is coverage. Screen Time's web filtering is reported to behave inconsistently from one browser to another, so a domain that is properly blocked in one browser may load in another. If you keep a second browser installed, test the block in each one rather than trusting it.
The third is maintenance. The never-allowed list is literal — you are listing hostnames by hand, and the bare domain and the www version count separately, as does every subdomain and every mirror.
Method 2
The hosts file is a plain-text list macOS consults before it asks a DNS server where a domain lives. Point a domain at 127.0.0.1 — your own machine — and requests for it go nowhere. No software, no account, works in every app that uses the normal system resolver.
The two commands
sudo nano /etc/hosts sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
Start with the obvious one: undoing it costs about twenty seconds. There is no timer, no schedule and no lock — nothing stands between you and the delete key except your own resolve, which is the thing that was already failing when you went looking for a blocker.
Then the coverage gaps. It matches exact hostnames, so example.com and www.example.com are two entries, and any subdomain or mirror you did not list still resolves. It does nothing about a site reached by IP address directly. And it only governs traffic going through the normal macOS resolver — a VPN or proxy that resolves names elsewhere routes straight around it.
Finally, it fails opaquely. A blocked site produces a browser connection error, not an explanation, so weeks later you will be debugging why a perfectly innocent domain is broken on this one Mac. It is a good trick for a handful of domains you never want to see again, and a poor foundation for a focus habit.
Method 3
The first two methods block a website. A blocker app is for the different problem underneath: staying blocked once you would rather not be. That is worth naming honestly, because it changes what you should be comparing — not which app has the longest feature list, but which one is hardest for you to defeat.
There is more than one good answer. SelfControl is free and open source, works at the macOS firewall layer so it covers every browser, and once a block is running there is no pause and no early exit — it survives a restart and even deleting the app. Its limits are no scheduling, no app blocking, a 24-hour maximum, and one documented workaround: changing the system clock can end a block early. We compare the free options properly on the free website blockers for Mac page. The steps below are for our own app.
Blocks that hold through the things people actually try. Quitting the app does not lift the block. Force-quitting the background daemon does not lift it. Dragging the app to the Trash mid-block does not lift it either, because a root daemon puts it back. And because timers are measured against a clock that changing the system date cannot move, the classic clock-tampering escape does not work.
You also get scheduling and nine other lock types, so the friction can match the site. A plain timer is right for a Pomodoro; something considerably heavier is right for the site you have already unblocked twice this week.
All of that is in the free version, permanently. Pro is $4.99 paid once — not a subscription, nothing renews — and adds locked mode, Bulletproof Strictness and full statistics. The trial runs 7 days with a card up front, a single $4.99 charge on day 7 unless you cancel, and 14 days to request a refund. Details on the pricing page.
You want the site out of the way, not out of reach. Two minutes, no install, easily reversed — which is a feature until it is the problem.
A handful of domains you are certain about, on a machine you administer, where you are comfortable in Terminal and do not need timers, schedules or a readable block page.
You have blocked this site before and unblocked it. You need the block to outlast the mood that made it, on a schedule, across every browser. That is what lock types and system-level enforcement are for.
These also stack. Nothing stops you leaving a few permanent hosts-file entries in place and running a scheduled block on top for working hours.
More on the full FAQ page.
Screen Time, because it is already installed. Open System Settings, then Screen Time, turn on Content & Privacy, limit web content and add the site to the never-allowed list. It takes about two minutes and costs nothing. The trade-off is that the same two minutes will undo it, since the setting lives in System Settings where you can reach it whenever you want to.
You need something that works below the browser, or something that ships an extension for each one. Editing /etc/hosts is a system-level change so it affects everything using the normal macOS resolver. SelfControl takes the same approach using macOS firewall rules and covers every browser. macOS Screen Time is the weak option here — its web filtering is reported to behave inconsistently from browser to browser. FocusDragon ships extensions for Safari, Chrome and other Chromium browsers, and Firefox, backed by system-level enforcement.
Usually, but not dependably. It works at the name-resolution layer, so anything resolving names through the normal macOS resolver is covered. It does not cover a browser or app reaching the site through a VPN or proxy that resolves names elsewhere, it does nothing about an IP address typed in directly, and it only blocks the exact hostnames you listed — a mirror domain or an unlisted subdomain sails straight through.
It depends how you blocked it. In Screen Time, remove the entry from the never-allowed list. For the hosts file, run sudo nano /etc/hosts, delete the lines you added, save, and flush the DNS cache with sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder. In a blocker app it depends on the lock: some let you stop immediately, and the stricter ones deliberately do not — with SelfControl, for instance, a running block has no early exit at all.
Not with the hosts file, and not with SelfControl, which has no scheduling and a 24-hour maximum timer — every block there is one you start by hand. Screen Time can put daily time limits on apps. FocusDragon has scheduling as one of its 10 lock types, so a block can switch itself on for a recurring window without you deciding again each morning.
By choosing a method whose undo is expensive. The hosts file has effectively no friction — twenty seconds and an admin password. Screen Time can be switched off in System Settings, though a Screen Time passcode adds a step. SelfControl is at the other extreme: once a block is running there is no pause and no early exit, and it survives a restart and even deleting the app, with one documented workaround via changing the system clock. FocusDragon keeps blocks running through quitting the app, force-quitting the daemon and dragging the app to the Trash, and its timers cannot be shortened by changing the system date.
Yes, and with more than one tool. Screen Time is built into macOS. SelfControl is free and open source. FocusDragon's core blocker is free forever — unlimited blocks, all 10 lock types, the Safari, Chrome/Chromium and Firefox extensions, and system-level enforcement. We compare the free options in detail on our free Mac website blocker page.
For the hosts file, yes — editing /etc/hosts requires sudo and an administrator password. Screen Time settings can be changed by the user of the account. Installing any blocker app that enforces below the browser will also need an administrator approval at install time. On a Mac managed by an employer or school you may not have the rights to do any of it.
Unlimited blocks, all 10 lock types, Safari, Chrome and Firefox extensions — free, with no time limit. Set your first block in about a minute.
v1.22.4 · macOS 14+ · Apple Silicon & Intel · Pro is $4.99 once, if you ever want it
Also worth reading: the free Mac blockers compared and the full website blocker explainer.