Installing Hourmark
Hourmark is not on the Chrome Web Store yet — the listing is still being prepared. Until it is, you can run it from source:
- Download or clone the repository.
- Run
npm install, thennpm run build. - Open
chrome://extensionsand turn on Developer mode (top right). - Choose Load unpacked and select the
.output/chrome-mv3folder.
The toolbar owl appears once it loads. Nothing leaves your machine at any point — see the privacy policy.
What Hourmark is
Most study timers are Pomodoro clocks: they count down to a break. Hourmark counts up, because the thing worth measuring is effort invested, not intervals survived.
You start a session against a course and (optionally) a task. While it runs, Hourmark quietly records which sites you used — domain, page title, path, search terms — and attributes that time back to the work you said you were doing. When you stop, you get a record you can actually defend: "I put 16h 17m into Data Structures this term, 33% of it on LeetCode."
Three things make it different:
- It counts up. Stopping a session and completing a task are separate actions. Finishing work is not the same as running out of time.
- It connects browsing to coursework. Time on
chatgpt.comisn't just "time on ChatGPT" — it's time on Binary search trees, in Data Structures & Algorithms. - It stays on your machine. No account, no server, no sync. Everything lives in
chrome.storage.local.
Who it is for
Hourmark is built for students who need proof of effort, not productivity theatre:
| Audience | Why it fits |
|---|---|
| Competency-based university students (WGU and similar) | Progress is measured in demonstrated work, not seat time. A defensible per-course hour count matters. |
| Online and self-paced learners | No lecture timetable imposes structure, so the record has to come from somewhere. |
| Working students | Study happens in scattered 40-minute windows. Those windows need to add up somewhere visible. |
| Certification and exam candidates | "Have I put enough hours into this domain?" is the whole question. |
| Bootcamp learners | Weekly effort targets per module, with evidence. |
The through-line: people whose motivation depends on seeing the effort accumulate, and who need honest data rather than a gamified streak that punishes a bad week.
Design principles that fall out of that: motivate without shame, never fabricate data, keep starting a session fast, and treat study history as sensitive.
Feature tour
Every screenshot below is the real extension, rendered from the built bundle with a generated preview dataset.
The popup: start a session in two fields
Click the toolbar icon, type or pick a course, optionally a task, press start. That's it — no notes field, no project setup, no friction between deciding to study and studying.


Course is genuinely optional: leave it blank and the session attaches to a shared "Unnamed" course you can rename later, rather than blocking you at the door.
While a session runs, the popup becomes the live card — elapsed time, the course and task, totals, your goal, what you're currently looking at, and the owl:


Notes are collected after the work, not before it. Stopping shows the completion screen with a prompt — and the auto-dismiss only counts down while the box is empty, so it never closes a half-written note:


Studied offline? The Manual tab is a three-step wizard for adding time after the fact — course and task, then the time, then the date, with overlap protection:


The floating timer
While a session runs, a draggable widget rides along on the page you're studying on. It shows live/paused state, the count-up, the course, pause/resume, and stop.


Collapse it and it becomes a slim capsule docked to the nearest screen edge — still showing the owl, status and elapsed time, still able to pause and resume, but you have to expand it to end a session:


Where you put it sticks. Position, collapsed state and dock side persist in local storage, so the widget reappears exactly where you left it after a reload and on every other page you open.
Overview: where your time went
The headline question — where did my time actually go? — has three answers, and Hourmark refuses to collapse them into one. The same donut switches between Courses, Tasks and Websites:


Rows are two-stage. The first press on a course opens its tasks in place; a second press walks into the course:


Tasks mode ranks every task across every course, each labelled with the course it belongs to:


Websites mode drills into the individual pages behind a domain — the actual titles, paths and search terms Hourmark saw. Every site icon is drawn locally: Hourmark never asks a favicon service for them, because that request would tell a third party exactly which site you just visited:


Courses and tasks
Courses have three saved layouts (cards, list, compact grid), a status filter, and completed courses split into their own section — a finished course should read as a small badge of honour, not get lost in the pile.


Any card expands in place into its task checklist without leaving the page:


Course detail and task analytics
Each course gets progress, time spent, goal, status, a task-or-website breakdown, its task table, notes, and recent sessions:


Each task gets its own analytics page — real totals, session count, goal, a website breakdown, a per-session bar chart and history, all derived from that task's own sessions:


Session history
Every session, searchable and filterable, with CSV export. The seven-day chart is clickable: selecting a day scopes the history below it and splits that day's bar into its real activity mix, coloured by site.


Personalisation
Courses and tasks each carry an icon and a colour. That colour is one source of truth: it tints the icon, the progress bars and that entity's slice in every donut. Press a course's icon anywhere it appears — a card, a list row, or the course header — to edit just its look:


Tasks work the same way from their own page, with an extra Auto option that hands the colour back to the automatic palette:


Auto and the spectrum chip sit together at the head of the row, ahead of the twelve presets; the chip opens the system colour picker for anything the palette misses.
Data and privacy
Settings owns the whole data story: what counts as idle, how long detailed activity is kept, JSON backup and restore, CSV export, and two levels of deletion.


Light and dark
Every surface — dashboard, popup and the injected floating widget — follows the theme.


Privacy model
What it does:
- Records activity only while a tracked session is running — paused and stopped means nothing is captured.
- Stores domains, redacted URLs, paths, page titles, extracted search queries and timestamps, in
chrome.storage.localon your machine. - Redacts before storage: URL credentials, fragments and secret-looking query parameters are dropped.
- Ships per-site icons as hand-drawn local SVGs — no favicon service is called, because that request would leak the domain you visited to a third party.
- Lets you delete activity detail (keeping durations) or everything, and export a full JSON backup at any time.
What it does not do:
- No account, no server, no cloud sync.
- No passwords, cookies, keystrokes, form values, payment data, screenshots, camera or microphone.
- No analytics, telemetry or remote assets — the mascot GIFs are bundled, not fetched.
- No Incognito or other-profile collection.
Honest limitations: "Outside Chrome" means Chrome lost window focus — Hourmark cannot see which other application you switched to, and does not claim to. Being local-first is not the same as being anonymous or encrypted; anyone with access to your browser profile has access to this data.