Trac — User Manual

Trac is a time tracker for freelancers. It runs entirely in your browser, stores everything on your own machine, and needs no account. This guide covers every screen, from starting your first timer to sending an invoice.

Screenshots:
💡

Every screenshot below comes in both desktop and phone versions. Use the switch above to see the layout for whichever device you are using — it stays set as you scroll.

Getting started

Your first timer in under a minute.

Reports

Where your hours actually went.

Invoicing

Turn tracked time into a PDF invoice.

Backups

Your data is yours. Keep a copy.

1 · Getting started

Trac needs no sign-up. Open it, and it is ready. Everything you track is written to your browser's own storage on your device — not to a server.

⚠️

Because your data lives in this browser, it can be lost with this browser. Clearing site data, using private browsing, or switching to another machine leaves your history behind. Read Backups before you have months of work to lose.

1

Install it (optional but recommended)

Use the Install button in the top bar to add Trac to your desktop or home screen. It then opens in its own window and works offline.

2

Type what you are working on

Click the task box, type a name, and press Enter. If the task does not exist yet, Trac offers to create it — you do not have to set up projects first.

3

Hit Start, and get on with it

The green strip at the top shows what is running and for how long. Press Space or click Stop when you are done.

2 · Tracking time

The Track tab is the one you will live in. A task picker and a Start button at the top; everything you have logged today underneath.

The Track tab with a timer running
The Track tab: task picker, goal bars, the running timer, and today's entries grouped by project.

The running strip

While a timer runs, a strip pins itself below the header showing the project, the task and a live clock. It is visible from every tab, so you can be on Reports and still see that the clock is going.

The running timer strip
The running strip. The browser tab title shows the same clock, so you can see it without switching to Trac.
💡

Only one timer runs at a time. Starting a new task does not silently stop the old one — stop what you are on first.

Today's entries

Finished entries are grouped by project, newest first, each showing its duration and the exact times it ran. The pencil on a row lets you add a note. Anything you tracked without picking a task appears as [unassigned] with a Tag now prompt so you can attach it to a project afterwards.

3 · Goals & streaks

Set a daily target, a weekly target, or both, from the ⚑ Goal button. Leave a field blank to switch that one off; leave both blank and the whole strip disappears.

Daily and weekly goal bars with a streak chip
Daily bar above, weekly below. Both turn green at 100%. The chip counts your streak.
The hour goals dialog
Setting the targets. Anything from half an hour upwards.

How the streak actually works

This is worth understanding, because most streak counters get it wrong:

The weekly streak works the same way against the weekly target, and the current week only ever adds to it. Streaks appear once you reach two — a streak of one is just "today".

4 · Projects & tasks

Manage opens everything: projects, the tasks inside them, and sub-tasks inside those. Time is always logged against a task, and tasks always belong to a project.

The Manage projects and tasks dialog
Projects with their tasks. Each project carries a colour used consistently across every chart and invoice.
ControlWhat it does
RateAn hourly rate for this project. Overrides the client's default rate. No rate anywhere means the time is tracked but never billed.
EstAn hours budget for the project — see Estimates.
+ TaskAdds a task; a task can then have sub-tasks for finer breakdown.
PinKeeps a project or task at the top of the list, above the normal newest-first order.
ArchiveHides a finished project without deleting its history. Archiving a project archives its tasks.
⚠️

Archive, do not delete. Deleting a project removes its tasks; entries that referenced them become unassigned. Archiving keeps every hour intact and simply gets the project out of your way.

5 · Estimates

Give a project an hours budget and Trac shows how much of it you have burned — on the project card, and in an Estimates section on the Report tab sorted worst-first.

Setting an hours estimate on a project
Setting a budget. Trac tells you how much is already tracked against the project.
The estimates section on the Report tab
Green under 75%, amber to 100%, red beyond. Over budget, the bar stops at full but the percentage keeps counting.
💡

Estimates ignore the report date range. A budget covers the whole job, so progress is always measured against every hour ever tracked on that project. Switching between "This week" and "This month" will not move these numbers — everything else on the Report tab does follow the range.

6 · The Log

Every entry you have ever recorded, grouped by day with daily totals. This is where you fix things.

The Log tab
Entries grouped by day. Manually added entries are marked so you can tell them from timed ones.

Editing an entry

The pencil opens the row for editing in place: project, task, date, start, end, notes and tags. Change the times and the duration recalculates.

Editing an entry inline in the log
Inline editing. The tag box suggests tags you have already used.

Adding time you forgot to track

Press N or use Add entry for work you did away from the keyboard. Pick the project, task, date and times, and add notes or tags.

7 · Tags

Tags are free-form labels on individual entries — #meetings, #admin, #deep work. They cut across projects, so you can ask "how much of this month went to meetings?" regardless of who it was for.

Searching the log by tag
Searching #meetings. A bare word searches projects, tasks, notes and tags together.

Add them wherever you edit an entry, separated by commas. A few things Trac does for you:

⚠️

There is no rename. Because the tag list is derived from your entries rather than stored separately, changing #mtg to #meetings means editing the entries that use it.

8 · Reports

Pick a range — this week, this month, or custom dates — and everything below it follows.

The Report tab
The full Report tab: totals, billable split, trend, estimates and a per-project breakdown.

The four numbers

The four stat cards
Total hours, billable value, days worked and billable share.

The trend

The trend chart
Daily columns up to a month; beyond that Trac switches to weekly. Green is billable, grey is unpaid.

Days you did not work stay as gaps rather than collapsing, so the shape of your week is honest.

💡

The chart and the split always show time actually tracked, never rounded billing time. Rounding is a billing rule and belongs on the invoice, not on a picture of how you spent your week.

Filtering by tag

The report filtered by a tag
Filtering by #meetings: every figure on the tab narrows to that tag.

Export CSV gives you the raw per-entry data — date, client, project, task, tags, times, duration, billable value and notes — for a spreadsheet or your accountant.

9 · Clients & rates

Clients are optional. Turn them on in Settings → Features if you want a rate and billing details shared across several projects.

The clients dialog
Each client carries a default rate, a currency and contact details used on invoices.

Trac works out an hourly rate in this order:

  1. The project's own rate, if it has one.
  2. Otherwise the client's default rate.
  3. Otherwise the work is not billable — still tracked, still in your totals, just never charged.

10 · Invoicing

From the Report tab, 🧾 Invoice turns tracked time into a document you can print or save as PDF.

The invoice builder with live preview
Choose the scope and period on the left; the invoice updates live on the right.

Scope

An invoice covers one project (a line per task) or, with Clients enabled, one client (a line per project). Set your business name, numbering, tax rate and payment terms once in Settings → Invoicing.

Rounding

You can bill in 6, 15 or 30 minute increments, rounding to the nearest unit or always up.

💡

Rounding applies to each invoice line, never to individual entries. That distinction matters: twenty separate 4-minute entries rounded up to 15 would invent nearly four hours you never worked. Rounding the line the client actually sees costs at most one increment per line and stays defensible if they query it. The invoice states the rule it used.

Not billing the same hour twice

Each invoice remembers exactly which entries it covered, and new invoices exclude already-invoiced time by default. Untick that box if you deliberately need to re-bill something.

The list of saved invoices
Saved invoices with their status. Print or delete from here.

Invoices move through Draft → Sent → Paid; a paid invoice is stamped as such when printed.

⚠️

A saved invoice is frozen. Rates, names, totals, the rounding rule and the accent colour are all captured at the moment you save. Changing a project's rate afterwards never rewrites an invoice you have already sent — so a reprint always matches what the client received.

Printing

The printer icon opens your browser's print dialog. Choose Save as PDF as the destination. Trac has no PDF library of its own — this keeps it working offline and keeps your invoices off anyone else's server.

💡

If the printed invoice comes out plain white, enable Background graphics in your browser's print options.

11 · Todo list

A plain checklist for things that are not worth tracking time against. Items can be linked to a project, and a task can be pushed onto the list from the Manage screen.

The Todo tab
The Todo tab. Completed items drop to the bottom.

12 · Timer safety nets

Two features exist purely to stop a forgotten timer becoming a wrong invoice.

If Trac closed while a timer was running

A running timer writes a heartbeat every few seconds. If Trac dies — a crash, a power cut, an update that restarts your machine — the heartbeat stops, and the gap tells Trac exactly how long nobody was there. On reopening, you are asked what to keep.

The crash recovery dialog
Started, last active, and four ways out. The highlighted option keeps only time Trac can vouch for.
ChoiceUse it when
Keep [time]The safe default. Saves an entry ending at the last heartbeat — the last moment Trac knows you were at the machine.
Keep all [time]You genuinely were working the whole time and the machine simply died at the end.
Still workingYou are carrying on right now. The timer keeps running from its original start.
DiscardThe timer was left on by mistake. Nothing is saved.
💡

The default keeps less time rather than more, deliberately. Time you lose costs you a few minutes you can add back by hand; time you invent gets billed to a client and surfaces when they query the invoice.

If a timer has been running a long time

After four hours (configurable, or off), Trac asks whether you are still tracking — with a banner and a browser notification, so it reaches you even when Trac is not the tab you are looking at.

The long-running timer banner
Stop it, or dismiss it. Dismissing buys you another full interval before it asks again.
Configuring the long timer reminder
Settings → Reminders → Long timer reminder.

This is separate from the break reminder, which is about your wellbeing rather than your data: it fires on elapsed wall-clock time whether or not a timer is running, and suggests stepping away.

13 · Backups & your data

Trac stores everything in this browser on this device. Nothing is uploaded. That privacy has a cost: nobody else has a copy.

The settings dialog
Settings, with backup and data options at the top.
OptionWhat it does
Download backupSaves a JSON file with everything — projects, tasks, entries, clients, invoices, settings. Do this before changing browser or machine.
Restore from fileLoads a backup file back in.
Auto-backupPeriodic snapshots kept inside the app, so you can roll back a mistake.
Daily file backupDownloads a dated backup file once a day.
Folder sync (Vault)Points Trac at a real folder on your disk — a Dropbox or OneDrive folder, for example — and keeps a copy written there automatically.
🛑

Clearing your browser's site data deletes your entire history, and there is no server copy to restore from. Take a backup you can find later. Folder sync into a cloud-synced folder is the least effort for the most protection.

Moving to a new machine: download a backup on the old one, open Trac on the new one, restore from the file.

14 · Keyboard shortcuts

These work whenever you are not typing in a field.

KeyAction
SpaceStop the running timer
SJump to the task box, ready to start
TTrack tab
LLog tab
RReport tab
DTodo tab
MManage projects & tasks
PAdd a project
NAdd a manual entry
Ctrl + KCommand palette — search every action
EscClose the open dialog

15 · FAQ & troubleshooting

I updated Trac and something looks wrong

Hard-reload the page: Ctrl + Shift + R (Cmd + Shift + R on a Mac). Trac caches itself to work offline, and occasionally an old file lingers.

My Report total does not match my invoice

Almost always rounding. The Report shows time actually tracked; the invoice applies your rounding rule. A client-scoped invoice groups by project, so it can differ from a project-scoped one by up to one rounding increment per project.

Why is my billable total empty?

No rate resolves for that work. Set a rate on the project, or on its client. Time with no rate is tracked but never billed.

Can I use Trac on my phone and my laptop?

You can use it on both, but they are separate stores — there is no account syncing between them. Move data across with a backup file, or point both at the same synced folder with Folder sync.

Does anything I track leave my machine?

No. There is no account and no server to send it to. That is the whole design, and it is why backups are your responsibility.

What is free and what is paid?

Tracking, projects, tasks, the log, reports and backups are free, with a limit of three projects. A one-off purchase removes the limit and unlocks CSV export and automatic backups. There is no subscription.