# How to block websites on a Mac, and what each way costs

To block a website on a Mac you can edit the hosts file, install a browser extension, or run a native app that watches the frontmost window - only the third one also covers the apps you drift into.

- URL: https://swiftfox.studio/blog/how-to-block-websites-on-mac
- About: https://swiftfox.studio/apps/nomore
- Published: 2026-06-27
- Updated: 2026-06-27
- Publisher: Swiftfox Studio (https://swiftfox.studio)

## In short

- NoMore compares the frontmost app and the current browser tab against your list locally: no proxy, no DNS service and no VPN profile.
- The unit is a streak with a name, a day count and a strictness, not a line in a block list - so what you would lose is visible at the moment you drift.
- Opening something anyway is always possible, but the cost escalates: a click on gentle, a countdown that grows through the day on firm, a typed confession on brutal.
- Reading a browser's current tab requires an Automation permission on macOS, which is why setup asks for one per browser.

## The three ways to block a site, and what each costs

**Edit `/etc/hosts`.** Free, and it breaks the site everywhere including the
places you needed it to work. It also takes about four seconds to undo, which is
roughly how long your resolve lasts.

**A browser extension.** Works well inside the browser it is installed in, and
does nothing at all about the desktop chat client, the game, or the second
browser you will open instead.

**A native app that watches the frontmost window.** It sees the browser tab and
the application, so both routes go through the same list. This is what
[NoMore](https://swiftfox.studio/apps/nomore) does, and everything below is in the shipping version.

## How the detection works

NoMore watches two things: which application is frontmost, and - when that
application is a browser - what its current tab is. It asks the browser directly,
through the same scripting interface Safari, Chrome and the Chromium family
expose to macOS, and compares the answer against your list on your own machine.

There is **no proxy, no DNS service and no VPN profile**. Your browsing is not
routed anywhere, and the app has no server-side record of what you open, because
the comparison happens locally and the result never leaves.

macOS gates that scripting access behind an **Automation** permission, which is
why setup asks for one per browser. That prompt is the price of seeing the tab at
all; there is no way to read a browser's current URL on a modern Mac without it.

## What you actually put on the list

The unit is not "a blocked site". It is a **streak** - a thing you are trying to
stop doing, which has a name, a start date, and a set of domains or applications
that count as breaking it.

![The NoMore menu bar popover on macOS listing three streaks, each with its day count and strictness, above a New streak button](https://swiftfox.studio/nomore/shot-1.jpg "Each entry is a named streak with its own domains, apps and strictness, not just a line in a block list.")

One streak might be a single domain. Another might be four news sites. A third
might be an application with no website involved at all. Each carries its own
**strictness** - gentle, firm or brutal - and its own day count, and milestone
notifications fire at 7, 14, 30, 60, 90, 180 and 365 days.

Framing it as a streak rather than a filter is the design decision the rest of the
app follows from. A filter has a binary state. A streak has a length, and a length
is a thing you do not want to lose.

## What happens when you open one anyway

This is the interesting part, because the answer is not "you can't".

![The NoMore friction panel reading 8 days without Reddit, with Step back as the primary button and Open anyway as a small link below it](https://swiftfox.studio/nomore/shot-2.jpg "The day count, then a lopsided choice: a large Step back, and a small link that spells out what opening costs.")

A blurred panel takes over in front of what you opened. It shows how many days
the streak is at, and offers a deliberately lopsided choice: **Step back** is the
large primary button, and **open anyway** is a small link that spells out what it
will cost. Every other escape hatch - pause for an hour, the daily free pass, the
external-link exception - sits behind a **More options** disclosure, so the main
screen stays a calm two-way decision rather than a menu.

The strictness setting changes what "open anyway" costs:

- **Gentle** takes the click. The panel was the friction.
- **Firm** starts a countdown you have to sit through, with a text field asking
  what you are going to do there. The countdown escalates within the same day -
  30 seconds the first time, 60 the second, 120 from the third on - so a bad
  afternoon gets progressively more expensive rather than costing the same every
  time.
- **Brutal** asks you to type out a confession of a minimum length before the
  button unlocks at all.

Stepping back does something real: NoMore asks the browser to go back and then
re-checks the URL to confirm the tab actually left. For an application it hides
the app rather than closing it, which is the honest limit of what a sandboxed app
is allowed to do to a process it did not launch.

## Bypasses, on purpose

Three exist, and they are all counted. **Pause for an hour** suspends a streak
temporarily. A **daily free pass** allows one deliberate visit. An
**external-link exception** covers the case where a link someone sent you happens
to land on a blocked domain.

None of these are oversights. NoMore is friction, not a lock - and software that
traps you out of your own machine gets uninstalled the first time it is
inconvenient at the wrong moment, after which it protects nothing at all. A
bypass you spend on purpose, that gets recorded, is a better outcome than a
workaround you find in a rage.

## What it records, and where it stays

Every trigger, every outcome and every "what are you going to do there" answer is
written to a local store, and the stats screen turns that into which streaks are
holding, what time of day you drift, and how the bypasses got spent.

![The NoMore stats view with total clean days, longest streak, active streaks and a trigger-hours chart](https://swiftfox.studio/nomore/shot-3.jpg "Clean days, the longest streak, and the hour of day the triggers cluster in - computed locally, uploaded nowhere.")

All of it is on your Mac. The only network traffic the app makes is licence
validation and update checks.

## What it costs, and what else to look at

NoMore runs on **macOS 14 or later**, on Apple Silicon and Intel, and takes about
25 MB. It is a **one-time $6 purchase** rather than a subscription, with a 14-day
trial that needs no card and no email. The full specification is on
[the NoMore page](https://swiftfox.studio/apps/nomore).

Blocking solves drifting. It does not solve starting, and it does not solve
choosing. If the problem is that the work never begins, a fixed interval is the
lever - [Pawodoro](https://swiftfox.studio/apps/pawodoro). If it is that you have four things and no
decision, [Anchored](https://swiftfox.studio/apps/anchored) puts one of them in the menu bar for the
day. There is a comparison of the whole category in
[the best focus apps for Mac](https://swiftfox.studio/blog/best-focus-apps-for-mac).
