Toggl Track

toggl.comcontributed by Samuele Ongaro

YES

Replaceable in one session with an AI coding agent.

Time tracking that stays out of the way: one button, or a timer started from a browser extension, filed against a project and a client. The reporting turns it into billable hours, budgets and a picture of where the time went.

Promptfree, for everyone, and the only version there is
Build me time tracking that replaces Toggl Track: one button, filed against a project, and reports that turn it into billable hours.

STACK
- Node 20+ with Fastify, server-rendered HTML with a little vanilla JS
- SQLite through better-sqlite3, WAL mode
- A browser extension, and a small desktop helper for idle detection
- Caddy in front

THE DATA MODEL
- clients: id, name, currency, archived_at
- projects: id, client_id, name, colour, is_billable, hourly_cents, budget_cents, budget_hours, archived_at
- tasks: id, project_id, name, estimate_hours, archived_at
- users: id, email, name, hourly_cents, internal_cost_cents, role, is_active
- rates: id, scope, scope_id, user_id, hourly_cents, currency, effective_from — an entry bills at the rate in force when the work happened, always
- entries: id, user_id, project_id, task_id, description, started_at, ended_at, duration_seconds, is_billable, tags_json, source, is_locked, invoice_ref, created_at
- entry_revisions: id, entry_id, field, old_value, new_value, changed_by, at — append-only
- Every instant UTC, every amount integer cents with a currency

THE ONE BUTTON
- Start and stop from anywhere: the web interface, the extension, a keyboard shortcut, the API
- One running timer per user, enforced with a partial unique index rather than by hope
- Starting a new timer stops the previous one and says so
- The last few descriptions offered as one-tap repeats, because most tracked time is the same handful of things
- An entry is two instants and the duration is derived. Never store a duration alone, or a day with a clock change will not reconcile

MAKING TRACKING ACTUALLY HAPPEN, WHICH IS THE REAL PROBLEM
- Nobody forgets to work; everybody forgets to start the timer. So the product is mostly about catching that
- Idle detection: when the machine has been idle past a threshold, ask on return whether to keep, discard or split that time. Ask — never decide
- A reminder when no timer has run for a while during working hours, at most once an hour, switchable off
- A reminder at the end of the day if the tracked total is far below the expected one
- Suggestions from window titles and visited pages, if the desktop helper is running: 'you spent 40 minutes in this document, track it?'. Entirely local, never uploaded, off by default, and phrased as a question
- A timer left running overnight is flagged and offered for trimming to the last activity, never trimmed silently
- Filling in yesterday must be as easy as tracking today, because it is what people actually do

THE EXTENSION
- A start button injected into the tools you already work in, carrying the item's title as the description and mapping it to a project
- Per-host adapters, each a small function that reads the page into an identifier and a title, with a fixture and a test — they break when the host changes and a failing test beats a mystery
- The extension talks only to your own server, with per-host permissions rather than access to every site

BILLABLE AND COST
- A billing rate and an internal cost per person. The gap is margin, and a tracker that knows only one of them cannot say whether the work was worth doing
- Billable is a property of the entry, defaulted from the project, changeable per entry
- Non-billable time tracked as carefully as billable, because that is where the week actually goes

REPORTS
- Group by client, project, task, person, tag, day or week, filterable by all of them
- Summary, detailed and weekly views, with amounts and margin
- Rounding applied at report time only. The raw seconds are the record — a tracker that rounds on save has destroyed the evidence
- Export CSV, and a PDF for a client showing exactly what was done
- Everything computed from rows at query time. No stored totals, ever

BUDGETS
- Money or hours per project, one-off or recurring monthly
- Progress visible wherever the project appears, with a projection of the date it runs out
- Alerts at thresholds to the project's owner, once per threshold per period

LOCKING AND INVOICING
- Approve a period and it locks; a locked entry cannot change without an explicit, logged unlock
- Mark entries invoiced with a reference so nothing bills twice
- Locking is what makes the hours usable for payroll or a client dispute, and it is what homemade trackers never build

THE API
- Start, stop, current, and full CRUD on entries, with tokens and scopes
- Which means a shell alias, a keyboard shortcut or a status bar can drive it, and that is how tracking becomes a habit for people who live in a terminal

OPERATIONS
- .env: DATABASE_PATH, BASE_URL, SESSION_SECRET, SMTP_URL
- Migrations on boot, each once
- Nightly backup off the machine, restore script
- Health endpoint

WHAT MATTERS MOST
Idle detection and the reminders. The tracking part is a table with two timestamps; the reason people pay is that the software notices when they forgot. Build that first, live with it for a fortnight, and tune it until it is helpful rather than nagging.

Give me the repository, the extension with one adapter and its fixture, migrations, .env.example, a seed month, and a README with deploy steps behind Caddy.

What you lose

  • Desktop and mobile apps with idle detection and reminders, which is what makes tracking actually happen
  • Browser extensions that put a start button inside the tools you already work in
  • Reports your accountant or client will accept without a conversation
  • Automatic sync across devices when you start a timer on one and stop it on another
  • Calendar integration that turns a meeting into a time entry

If you would rather not build

  • A spreadsheet, honestly, if you are one person

What it costs

read from their page 15 Aug 2026

PlanBilled monthlyBilled yearlyLast read
—$9/mo—15 Aug 2026

Their pricing page is where these came from. Seeing a different price? Tell us.

The escape hatch

open source · no votes, no paid placement

Kimai

$0

Time tracking with projects, rates, invoices and exports; runs on ordinary PHP hosting.

kimai/kimaifree · open source

Traggo

$0

Tag-based time tracking with a very small footprint.

traggo/serverfree · open source

Why this verdict

our own opinion · changed only by a person

84/100

Verdict yes at 84: a start time, a stop time and a sum. The one real trap is computing elapsed time on the client, and the prompt names it. Only the mobile and desktop apps are genuinely missing afterwards.

History

tracked since 6 Aug 2026 · nothing is ever overwritten

Interest · last 30 dayspeak 2/day
views01230 Aug4 Sept9 Sept14 Sept19 Sept24 Sept28 Sept
— views— prompt copies none yet— votes none yet

Questions about Toggl Track

answered from the record above

Is Toggl Track free?

No — the plan we track is $9 a month. Starter, $9 per licence per month on either billing cycle. Premium is $14, renewing at $18 after the first year.

Can you replace Toggl Track by building your own?

YES. Replaceable in one session with an AI coding agent. Replacement score 84 out of 100, build time one session. Read what you lose before you decide.

How much does Toggl Track cost?

$9 a month on Starter — $108 a year. Recorded 6 Aug 2026.

What do you lose by replacing Toggl Track?

Desktop and mobile apps with idle detection and reminders, which is what makes tracking actually happen; Browser extensions that put a start button inside the tools you already work in; Reports your accountant or client will accept without a conversation; Automatic sync across devices when you start a timer on one and stop it on another; Calendar integration that turns a meeting into a time entry. If any of those carry weight for you, keep paying.

Is there an open-source alternative to Toggl Track?

Yes: Kimai, Traggo. The prompt on this page is for when you want it your way instead.

Related entries

same category first, most replaced first

All 18 in Time tracking & invoicing

Not sending yet

Every week, something stops being worth paying for.

New verdicts, prices that moved, entries added. One email a week. Unsubscribe in one click. Nothing is being sent yet — your address is kept here, and the first issue is the first thing it is used for.

free forever · no tracking pixel · stored here, never passed to anyone

Esc