Why website time tracking skips Safari, and what to use instead

· 6 min read

Safari will tell another app the address of the page in front, but not whether that page is in a Private window. A tracker that promises never to read private browsing therefore cannot read Safari at all and keep that promise, so Punchcard leaves it alone and Safari prints as one line. If you use Safari and want time per website, Screen Time already covers Safari, and Safari’s own web apps give the sites you work in their own line on any app-level record.

What Safari lets other apps ask

Apps on a Mac ask each other questions through Apple Events, the mechanism under AppleScript. Each scriptable app publishes a dictionary of what it will answer. Safari’s covers its windows, each window’s current tab, and the tab’s URL and name (the page title).

You can read that dictionary yourself: open Script Editor (in Applications, Utilities), choose File, Open Dictionary, and pick Safari. Or ask Safari directly from Terminal:

osascript -e 'tell application "Safari" to get URL of current tab of front window'

The first time, macOS asks whether Terminal may control Safari. Allow it and Terminal prints the address of the page in front. You can switch that access off again in System Settings, Privacy & Security, Automation.

Chrome, Brave, Edge and Vivaldi share a different dictionary, Chromium’s, and it has one thing Safari’s lacks: every window has a mode that answers “normal” or “incognito”. A careful app asks that before anything else. Does your time tracker see incognito windows? shows how to ask it yourself.

What we found with a Private window

We tested Safari 26.2. With a Private window in front, asking for the URL of the current tab returned the private page’s address, exactly as it does for a normal window. Nothing in the answer said the window was private, and nothing in Safari’s scripting dictionary marks a window as private at all.

That does not break Safari’s own promise. Private browsing is a promise about what Safari keeps, such as history, not about what it will tell an app you have allowed to ask. The consequence for time trackers is plain, though: an app that reads Safari over Apple Events can read a private page’s address and, from the scripting alone, has no way to know it just did.

Why that rules Safari out for us

Punchcard’s itemized browsing comes with one firm rule about private browsing: Incognito, InPrivate, Private and Guest windows are never read. In Chrome, Brave, Edge and Vivaldi we keep it by asking the window’s mode first and requesting the address only when the browser answers “normal”. For any other answer the address is never requested, and the time stays on the browser’s own line.

In Safari there is no mode to ask. Every request for an address could land on a Private window. Reading the address and throwing it away afterwards would not keep the rule, because the rule is that the address is never requested in the first place. So Punchcard does not ask Safari anything, and Safari time is recorded the way all app time is: one line, called Safari.

Firefox and Arc are not itemized either; each is recorded as one line under its app name.

The menu workaround, and why we pass on it

There is a known way around the gap. An app can read Safari’s Window menu through System Events and infer from its wording whether the front window is private. We do not use it, for two reasons.

  • It needs the Accessibility permission. Accessibility lets an app read and operate the interface of every app on your Mac. Punchcard needs no Accessibility at all, and asking for one of the broadest permissions macOS has, in order to protect your privacy, would be a strange trade.
  • It matches English menu wording. On a Mac set to another language the wording is different, the match fails, and a Private window looks like a normal one. A privacy check that fails silently fails in exactly the wrong direction.

What works if you use Safari

There are three routes, and they combine well.

Screen Time, for the one-off question

Open System Settings, then Screen Time, then App & Website Activity. Screen Time’s website list covers Safari, so it can answer “how long was I on that site” without any extra software. Other browsers appear there as one app each. It is a pane you have to remember to open rather than a record handed to you at the end of the day, which suits occasional questions better than a daily habit.

Safari web apps, for the sites you work in

On macOS Sonoma or later, Safari can turn a site into a web app:

  1. Open the site in Safari.
  2. Choose File, Add to Dock.
  3. From then on, open it from the Dock rather than from a tab.

The web app gets its own icon, window and name in the Dock and the app switcher. Anything that records the app in front, Punchcard included, sees it as its own app. Put your mail, project board and documents in web apps and each is recorded under its own name, competing for its own line on the receipt, while the rest of Safari stays as general browsing. It works one site at a time, so it suits the handful of sites where the hours go rather than the long tail. Your browser is the biggest line on your time report has more on splitting browser time this way.

A supported browser for work

If you want every site itemized, do your work browsing in Chrome, Brave, Edge or Vivaldi and switch on “Itemize websites” in Punchcard’s Settings. macOS asks once per browser whether Punchcard may control it, and Settings shows each browser’s status. Punchcard keeps only the site name, never the full address, path, search terms or page title. Keep Safari for personal browsing, where one line called Safari may be exactly the amount of detail you want on a receipt. The cost is two browsers’ worth of bookmarks and sign-ins. Tracking website time in Brave, Edge or Vivaldi covers the setup.

What Punchcard records for Safari today

Safari is treated like any other app. The time it spends in front appears as one Safari line, competing with your other apps for the top five on the receipt and counting toward the day total. Private window or not, the line looks the same, because Punchcard never asks Safari which page is open. That also means macOS never asks you whether Punchcard may control Safari.

If you would rather Safari not appear on the receipt at all, use “Hide an app…” in Punchcard’s Settings to keep it off. A web app you made with Add to Dock is an app in its own right, so the same option covers it: worth remembering if you turn a site you would rather keep to yourself into a web app.

Questions

Will Punchcard itemize Safari in a later version?

Not by reading Safari over Apple Events, while its scripting cannot tell a Private window from a normal one. In Safari 26.2, which we tested, it cannot.

Does Screen Time show my Chrome sites too?

No. Screen Time’s website list covers Safari, and other browsers appear as one app. That makes the two complementary if you use both browsers: Screen Time for Safari sites, and Punchcard’s itemized browsing for Chrome, Brave, Edge and Vivaldi.

Does a Safari web app tell Punchcard which page I am on?

No. Punchcard records the web app by its name, the same way it records any app. It never sees the address inside it.