A Chrome screen time tracker that doesn't over-report
If a tracker tells you that you spent nine hours on one site today, it's probably counting a tab you left open. Here's what goes wrong, and what counting honestly actually requires.
Why the numbers are usually wrong
Most browser trackers ask one question: is this the selected tab in its window? If yes, count a second.
That gives you three ways to be wrong, and they all happen daily:
- The window is behind something. Your browser is the selected tab of a window sitting behind your editor. You haven't looked at it in an hour. It counts.
- You walked away. Lunch, a meeting, the end of the day. The tab is selected, the screen may even be on. It counts.
- The tab is open overnight. Come back in the morning to a report claiming eight hours on one docs page.
Numbers like that get you to install a tracker and then ignore it, because you know they're wrong. A screen-time tool is only worth anything if you believe it.
What counting honestly requires
Three conditions, all of them, before a second is counted:
- The page is visible —
document.visibilityState === 'visible'. Rules out background tabs. - The window has focus —
document.hasFocus(). This is the one most trackers skip, and it's the one that catches a browser window sitting behind your editor. Visibility alone will happily count that. - You're not idle. No mouse, keyboard or scroll for 90 seconds and counting stops until you come back. This is what stops an overnight tab reporting a full night's sleep as research.
Smaller numbers than other trackers give you — and true ones. Two hours of genuine attention is a more useful fact than nine hours of tab.
The permission nobody mentions
Here's something worth checking before you install any tracker. To read tab URLs
from the background, an extension needs Chrome's tabs permission —
and that makes Chrome show this at install:
"Read your browsing history"
Which is exactly what it sounds like. For a feature whose entire job is telling you that you spent 40 minutes on one site, that's a steep price.
It's avoidable. Count inside the page instead — a small content script that watches its own visibility, focus and idle state, and reports only a hostname and a number of seconds. The background never needs to see a URL, so the permission is never requested, and the install prompt stays clean.
That's why this one asks for activeTab and storage
rather than tabs. Same feature, no history warning.
Where the data lives
In chrome.storage.local, on your machine, shaped like this:
wp_time_2026-08-23 : { "github.com": 1840, "gmail.com": 620 }
Hostnames and seconds. No URLs, no page titles, no content. The last 14 days are kept and older days are pruned automatically. None of it is ever sent to a server — there is no endpoint for it to go to.
Screen time and per-site limits cost nothing on every plan, and work with no account.
Limits: a nudge, not a nag
Set a per-site limit in hours and minutes — 45 minutes, or 1h 30m, whatever's honest for you. When you pass it you get one alert. Then silence until the next multiple, so a 30-minute limit speaks at 30, 60 and 90 rather than every few seconds after 30.
Nothing is blocked. No countdown you have to click through, no lock screen, no guilt-tripping copy. Blocking extensions get uninstalled within a week because at some point you genuinely need the site, and an extension that fights you loses. A single honest number at the moment you pass your own limit is the part that actually changes behaviour.
The alert appears as a card on the page you're on, for the same reason reminders do — Windows silently drops system notifications when Focus Assist is on, with no error, so anything relying on them alone appears broken. There's more on that in the reminders guide.
How it compares
| WriterPi | Typical time trackers | Site blockers | |
|---|---|---|---|
| Counts only when focused | Yes | Rarely | N/A |
| Stops when you're idle | Yes, 90s | Rarely | N/A |
| Needs browsing history permission | No | Usually yes | Usually yes |
| Uploads your data | Never | Often | Often |
| Blocks you out of sites | No, by choice | No | Yes |
| Price | Free | Free / $3–8/mo | $5–12/mo |
Common questions
Does it work across devices?
No, and that's the trade for keeping it local. Screen time is per browser profile and never uploaded. If it synced, it would have to leave your machine.
Does it slow pages down?
No. It's a tick on a timer plus a couple of state checks, and it reports totals in batches rather than per second.
Can I clear the history?
Yes — one button in the screen time panel wipes it. Old days go automatically after 14.