Ansu Samanta25 downloadsTrack time, activities, goals, and productivity with local-first analytics, charts, comparisons, and a simple or advanced dashboard.
You log what you did. My Tracker does the mathematics. Totals, averages, comparisons, trends, targets and charts are calculated for you from the raw entries. You never add up hours by hand.
Everything stays in your vault. There is no account, no cloud service, no telemetry and no AI. (The only possible network call is to your own ActivityWatch app on this computer, and only if you switch that feature on.)
My Tracker 0.1.2 includes a redesigned dashboard experience, with Simple and Advanced views for different levels of detail. You can customize dashboard sections and charts to focus on the information that matters to you.
Requirements: Obsidian 1.7.2 or later.
If My Tracker is listed in the Community Plugins browser:
Obsidian can install compatible updates automatically when they are published through the Community Plugins directory.
main.js, manifest.json, and styles.css from its assets..obsidian/plugins/my-tracker/ inside your vault if it doesn't already exist.Updating a manual installation: Download the files from a newer release and replace the existing copies. Back up your vault before updating.
A setup window opens.
Tracking. You can rename it or use a path like Life/Tracking.It creates this structure and touches no other files in your vault:
Tracking/
├── Database/ your events (do not edit by hand)
├── Subjects/
├── Templates/ examples for embedding stats in notes
├── Dashboard/
├── Reports/ generated report notes
└── Backups/ automatic backups and exports
Open the Command Palette and run My Tracker: Track Activity. (Tip: Settings → Hotkeys → search "Track Activity" and give it a shortcut.)
Type one line and press Enter:
| You type | Saved as |
|---|---|
Math Algebra 45m A |
Academic › Mathematics › Algebra · 45 min · result A |
Physical Science 1h 20m |
Academic › Physical Science · 80 min |
English 30 min B |
Academic › English · 30 min · result B |
Programming JavaScript 2h A |
Technology › Programming › JavaScript · 120 min · A |
A live preview under the box shows exactly what will be saved. Parts that don't exist yet are marked new and are created when you save.
20m, 20 min, 20 minutes, 1h, 1 hour, 1h 30m, 1h30m, 1.5h, 90m, 01:30, 1:30. A bare number (Math 45) uses your default unit (minutes unless you change it).MATH, Maths, Mathamatics all become Mathematics. JS becomes JavaScript. Multi-word names work (Physical Science, quadratic equations).A.#exam-preparation@14:30, @9pm, yesterday, 2026-09-01. Default is right now.kind:recall (or just the word recall): Study, Recall, Revision, Practice, Test, Reading, Research, Writing.planned:1h (powers "planned vs actual").recall:8/10, accuracy:85%.- or notes:, e.g. Math Algebra 45m A - practiced 12 problems.Switch any time with the Simple | Advanced control at the top of the dashboard (or in Settings → Dashboard). Same data, different amount of detail. Your first-run choice is the starting point.
Recent activity cards, key numbers (consistency, averages, median, longest session/gap, streak, trend), a detailed comparison table, goals with pace and history, colour-stacked charts (activity over time, weekly, monthly), distribution, cumulative time, planned vs actual, longest sessions and gaps, peaks, results and recall. It also adds a date-range picker, a subject filter and Like-for-like. Click totals and chart bars to see the events behind them.
Settings → My Tracker → Subjects, aliases and hierarchy
All values are computed from your raw entries; nothing is stored as a "total".
| Metric | Meaning |
|---|---|
| Total time | Sum of event durations in the range |
| Active days | Days with at least one event, out of days elapsed so far |
| Consistency | Active days ÷ days elapsed (future days never count) |
| Avg per active day | Total ÷ active days |
| Avg per calendar day | Total ÷ days elapsed (idle days count as zero) |
| Avg / median session | Average / middle event duration |
| Longest gap | Most fully idle days between two active days |
| Streak | Consecutive active days ending now (an empty today doesn't break it) |
| Trend | Slope of daily time (needs ≥ 7 days and ≥ 3 active days); "flat" if the change is under 10% of an average day |
| Change % | (current − previous) ÷ previous × 100. If previous is 0 it shows new instead of inventing a percentage |
| Weekly / monthly average | Per-day average × 7 / × 30.44 (rates) |
Hover any metric card for its definition. Like-for-like: if this month is only 10 days old, last month is cut to its first 10 days for the comparison.
Example check (September 29th): 12 active days of 29 elapsed → consistency 41.4%.
Your own result grades (A–D or your scale) and measurements are shown as counts and averages. They describe your sessions; they are not an objective measure of ability. A performance index appears only if you opt in, and its exact formula is displayed in settings.
```my-tracker
subject: Mathematics
range: last 14 days
compare: true
chart: true
```
Optional metrics: total, sessions, consistency.Reports/ with properties (frontmatter) you can query.My Tracker can't know which apps you used, so it can read them from ActivityWatch if you run it.
app | discord | Technology > Discord.Imported data are daily totals per app, not individual sessions. Everything else works without ActivityWatch.
Tracking/Database/events-YYYY.jsonl: plain text, append-only, so past entries are never rewritten.Tracking/Backups/. Back up now, Export JSON/CSV, Import… are in the Command Palette and settings.import-rejects file.Database/quarantine.jsonl and you're told. Nothing is silently deleted.Folder · default category · date/time format · week start · default duration unit · view mode and visible sections · subjects, aliases & colours · result scale · measurements · session types & recall types · performance-index weights · targets · neglect thresholds · spaced-repetition intervals · dashboard sections and metrics · moving-average window · ActivityWatch · backups · import/export.
| Problem | Fix |
|---|---|
| Typed subject became a new subject | Add it as an alias of the right subject in settings |
| "Duration not understood" | Use 45m, 1h 20m or 1:30 |
| Dashboard doesn't update after editing files outside Obsidian | My Tracker: Reload data from disk |
| Changed the tracking folder name | Move the folder yourself, then reload Obsidian |
| ActivityWatch can't connect | Make sure it's running; default address http://localhost:5600 |
Known limitations: undo lasts for the current session; the same vault open on two devices at the same time can create sync conflicts in the database file.