Tracking website time in Brave, Edge or Vivaldi on a Mac
· 6 min read
Brave, Microsoft Edge and Vivaldi are built on Chromium, and they answer scripting questions the same way Chrome does. So a Mac tool that can split Chrome time by website can do the same for them, including telling a private window apart from a normal one. In Punchcard you switch on itemized browsing once, macOS asks you once per browser, and from then on each site you used prints as its own line.
What macOS gives you on its own
Start with what is already on the Mac. System Settings, Screen Time, App & Website Activity shows how long each app was in use, but Screen Time’s website list covers Safari: Brave, Edge and Vivaldi each appear as one app with one total.
Browser history records the pages you opened and when, not how long you stayed: visits, not time.
Browser extensions that time your browsing are the third route. As a category they see every page you open, so check what they keep, and where it goes, before installing one.
Why Brave, Edge and Vivaldi work like Chrome
All four browsers share Chromium’s AppleScript dictionary: the list of things another app is allowed to ask a browser. It covers windows, each window’s active tab, that tab’s URL and title, and a window mode that is either “normal” or “incognito”. Each browser’s dictionary documents only those two values, so a private window is described as “incognito” whatever the browser calls it in its own menus.
You can see this for yourself in Terminal. With the browser open, run:
osascript -e 'tell application "Brave Browser" to get mode of window 1'
Use "Microsoft Edge" or "Vivaldi" for the others, and "Google Chrome" for Chrome. In these browsers window 1 is the front window, the one you used most recently, so the answer describes that window. The first time, macOS asks whether Terminal may control the browser. Once you have your answer, you can switch that off again in System Settings, Privacy & Security, Automation.
Setting it up, step by step
- Open Punchcard’s Settings and switch on Itemize websites. It is off by default.
- Bring Brave, Edge or Vivaldi to the front and browse as usual. Punchcard only checks while a supported browser is the app in front and you are not idle.
- macOS shows its prompt, which names the browser, in the form “Punchcard wants access to control Brave Browser”. Allow it.
- Repeat for each browser you use. macOS stores the decision per pair of apps, so allowing Punchcard to control Chrome says nothing about Brave. Each browser asks once.
From then on, browser time prints as the sites you used, each competing with your apps for the receipt’s top five lines. Punchcard keeps the site name only: the host, lower-cased, with a leading www. removed, so https://www.GitHub.com/a/b?c#d becomes github.com. Never the full address, the path, search terms or the page title. Sites Punchcard does not recognize print as their bare name with a globe. New tabs, settings pages and sites you spent under a minute on stay on the browser’s own line, so the day total never changes.
What each status in Settings means
With itemizing on, Settings lists each supported browser with one of four labels.
- Itemizing. You allowed it. Sites from this browser print on the receipt.
- Blocked, with a Fix in Settings button. macOS has a “no” on record for this browser, usually from a prompt that was declined. macOS will not ask again by itself, so the button takes you to the Automation list in System Settings, where Punchcard has a switch for each browser. Turn that browser’s switch on.
- Waiting for your OK. macOS has no answer yet. Bring the browser to the front and the prompt appears.
- Checks in when you open it. The browser is not running, so there is nothing to ask yet. The status updates once you open it.
If you would rather have the prompts back than flip switches, run tccutil reset AppleEvents app.punchcard.mac in Terminal. That clears Punchcard’s Automation decisions for every browser at once, and macOS asks again as each one comes to the front. Automation permission on a Mac explains the permission itself.
Beta, Dev, Canary and Nightly builds
Pre-release builds work too: Chrome Beta, Dev and Canary; Brave Beta and Nightly; Edge Beta, Dev and Canary. To macOS each one is a separate app with its own name and its own Automation switch, so each gets its own prompt and its own row in Settings.
For the Terminal check, use the build’s name as it appears in your Applications folder, for example "Google Chrome Canary".
Private windows stay off the record
We tested the private kinds these browsers offer: Brave’s Private window, Private window with Tor and Guest window; Edge’s InPrivate and Guest windows; Vivaldi’s Private window; and Chrome’s Incognito. None of them answered “normal”; Chrome’s and Brave’s answer, which we read directly, is “incognito”.
Punchcard asks for the front window’s mode first and requests the address only when the browser answers “normal”. In our testing it never asked any of those windows for an address. Time spent in them stays on the browser’s own line, so the receipt shows that you were in Brave, not where. Does your time tracker see incognito windows? shows how to check this for any tool, ours included.
When it does not work
The browser is missing from Settings. The usual cause is a browser running straight from its downloaded disk image or from Downloads. macOS then runs a hidden, read-only copy and does not treat it as installed, so apps that list installed apps can miss it. It is the likely explanation for a report we had about Punchcard 1.3.0, where Settings said “No supported browser on this Mac yet” for a customer using Brave. Version 1.3.1 also lists supported browsers that are running, whatever macOS reports. The lasting fix is still to quit the browser, drag it into Applications in Finder, eject the disk image and open it from Applications. Running a Mac app from its disk image explains why, and how to see where any app runs from.
It says Itemizing, but a site is missing. Punchcard reads only the front tab of the front window, every few seconds, while the browser is in front. A video playing in a background tab while you work in another app is not counted as that site. Sites under a minute fold into the browser line. If you hid the site with Hide a website…, it is left off the receipt; if you hid the browser itself with Hide an app…, every site seen in it is hidden too.
You use Arc or Firefox. Neither is supported for itemizing, so its time stays one line under the browser’s name. Safari is left out as well, for a specific reason: its scripting cannot tell a Private window from a normal one. Why website time tracking skips Safari covers what Safari users can do instead.
Questions
Does allowing Automation let Punchcard do anything it likes in my browser? No. An app can only do what the target app’s scripting dictionary offers, which is far narrower than the system-wide control Accessibility grants. Punchcard uses it to ask for the front window’s mode and, only when that is “normal”, the front tab’s address, of which it keeps the site name.
Do I need to turn on Allow JavaScript from Apple Events? No. Running JavaScript inside pages needs that separate switch, which in Chrome lives under View, Developer and is off by default. Reading a tab’s address does not need it, so leave it off.
Can I stop itemizing one browser and keep another? Yes. In System Settings, Privacy & Security, Automation, turn off that browser’s switch under Punchcard. Its time goes back to a single line while the others keep itemizing. To stop everywhere, switch off Itemize websites in Punchcard’s Settings.