Mythanar647 downloadsTrack time spent on checkbox tasks, stored locally, with manual CSV export compatible with external platforms' importers.
A local-first Obsidian plugin for tracking time directly on the checkboxes in your notes — compatible with the Tasks plugin format, with no external services involved at any point.
Obsidian has no native way to track time on your work. Existing plugins mostly focus on Pomodoro-style sessions, or don't integrate with the checkbox-based task format already used across vaults — and none of them combine tracking with exporting your time to the tools you already use.
➔ Install it from the Obsidian Community Plugins directory.
The play/stop icon and the live counter only appear where Obsidian renders an editable view of the note — that is, in Edit/Source mode on the note itself.
They won't appear in any read-only rendering of the task, even though the task and its recorded time are exactly the same underlying data. This includes:
![[note#^block]])To start or stop tracking, switch to Edit mode on the note, or use the History panel — which works everywhere, regardless of how the task is normally displayed.
The status bar at the bottom of Obsidian always shows the active task (or "No active tracking"). Clicking anywhere on it opens the History panel — this works regardless of the note's mode, and even with no timer running.
Every tracked task gets a short, unique identifier stored inline with the task text ([tt-id:: ...]), so your history stays linked to the right task even if you edit or move it. Keeping your notes uncluttered matters to us, so this identifier is subtle by default — and you're never stuck with how it looks out of the box:
WHERE tt-id = "...") and stylable. Dataview is entirely optional: tracking, history, and export all work exactly the same without it.[tt-id:: a3f9k2mp]) — this is a known limitation of relying on Dataview for the styling, not a bug.Normal — shown as Dataview would normally render any inline field.
Reduced (default) — same information, styled to blend in and stay out of the way while you read your notes.
Hidden — the identifier isn't rendered at all, though it's still there in the note and your Dataview queries on tt-id keep working.
- [ ], * [ ], + [ ]), numbered lists, and nested tasks.Group your tasks by project, and optionally by client, right from Settings.
Add projects one by one, or paste a whole list at once (Project; Client per line) if you're migrating from somewhere else.
Assign a project to any tracked task from its Edit task dialog — pick one from a searchable list, each row showing the project and its client if it has one.
Once you're tracking by project, filter the History panel down to a single one at a time with the Filter button in its header. The filter resets every time you reopen Obsidian, so it's never a setting you forget you left on.
A dedicated view for a no-filter overview of your last 30 days — opened from its own icon in the ribbon, with the total for the window shown right next to its title.
Four blocks share the same row format as the rest of the plugin (name + total time in HH:MM:SS + number of sessions):
Day and task blocks show the top 5 by default, with a "Show all" link loading 50 more at a time. The 30-day window is fixed — no range picker or extra filters, since the four blocks already break the same data down by project, client, day, and task.
All actions are also available from Obsidian's Command Palette (Cmd/Ctrl + P), so you're never dependent on hovering over a checkbox or finding the status bar:
Task Time Tracker never calls an external API — not for tracking, not for exporting, not for anything.
Every session is stored locally in your vault. When you export, the plugin writes a file to disk; nothing is transmitted anywhere. You take that file and upload it yourself, whenever you choose, to the native importer of whichever platform you use.
This isn't a missing feature waiting to be built. It's a deliberate architectural decision: your time data is yours, and it doesn't leave your machine unless you decide to move it. The same philosophy applies to what the plugin puts inside your notes: the task identifier is the only thing it ever writes there, and it stays as unobtrusive as possible by default.
To keep a task linked to its history even if you move or rename its note, the plugin reads across your vault's markdown files looking for its tt-id — this stays entirely on your device, like everything else here, and is never transmitted anywhere. The one-click copy button next to the tt-id in the Edit task dialog uses your operating system's clipboard, exactly like any other copy button you'd find in Obsidian.
Three export formats are available whenever you need them:
Generic CSV exports also include the project and client assigned to each task, if any — ready to use for per-client reporting. (The Toggl and Clockify formats can include them too, each behind its own "Include Project"/"Include Client" toggle in Settings — off by default.)
More export formats (Harvest, Everhour, and others) are planned.
Option A — Obsidian Community Plugins (recommended)
Option B — BRAT (for beta versions ahead of the official release)
Mythanar/obsidian-task-time-tracker.Option C — Manual
main.js, manifest.json, and styles.css from the latest release.task-time-tracker inside your vault's .obsidian/plugins/ directory and place the three files there.Built by Mythanar. This plugin started as something I needed for myself, built alongside AI, because I couldn't find one that did what I actually wanted. If it works for me, maybe it'll work for someone else too.