Time tracking for freelance developers that works from the keyboard.
Freelance development is billed by the hour or by the project, but it happens in fragments between deploys, reviews, and client calls. TrackTimer keeps the timer one keystroke or one sentence away, in Raycast, your AI coding tool, or your own scripts, and turns the hours into an invoice you can check.
At a glance
- Start, switch, and stop timers from Raycast in a few keystrokes.
- Ask Claude Code, Cursor, Codex, or VS Code to start, switch, or stop your timer through TrackTimer’s MCP server.
- Script your own workflow with the REST API and a personal key; retries with the same idempotency key never duplicate a timer.
- Timers run on the server, so a sleeping laptop or a wrong clock does not change recorded time, and one timer always stops the last.
- Track hourly, fixed-price, and non-billable projects, and create unsent invoices in Mercury from reviewed hours.
- Give each client a free, read-only dashboard of your completed hourly billable time.
Where freelance developers lose time and margin
Time trackers that break flow
Switching to a separate app in the middle of debugging is exactly the moment people skip. The timer that gets used is the one that does not require leaving the editor or the terminal.
Several clients in one day
A morning on one client’s API, an urgent fix for another, and a call with a third. Each switch is a chance for time to land on the wrong client or nowhere.
Fixed-price projects that keep growing
A quoted build picks up a payment provider change, a new admin screen, and a performance pass. Without tracked hours, it is hard to show where the price stopped covering the work.
Timesheets rebuilt from git history
Commit logs show when code changed, not how long the thinking, reviewing, and meetings took. Reconstructing a week from them undercounts the work.
How TrackTimer works for freelance developers
Raycast for the fastest switch
The TrackTimer Raycast extension brings up recent timers with a shortcut. Resume one, switch projects, or stop, without leaving what you were doing.
Your AI coding tool as the timer
Connect Claude Code, Cursor, Codex, VS Code, Claude, or ChatGPT to the MCP server and approve access in the browser. Then ask it to start a billable timer on a project with a note, switch to another client, stop, show your day, or correct a completed entry with a reason. It acts only on request and only on your own time.
An API for your own tooling
Create a personal API key bound to one workspace. The REST API lists clients and projects, starts and stops timers, and reads your time entries and daily summary. Start and stop take an idempotency key, so a retried request returns the original result instead of starting a second timer.
Server-side time you can trust
Recorded durations come from the server, not your device. Starting a timer stops the previous one at the same instant, so entries never overlap, even across workspaces. Corrections keep an audit history.
Hourly, fixed-price, and non-billable work
Choose a billing mode per project. Hourly projects show billable value while the timer runs; fixed-price projects show the fee against your tracked time; non-billable projects hold open-source and admin work.
Invoices from reviewed hours
With Mercury connected, choose a client and dates, review billable hours at saved rates or select an agreed fee, and create an unsent invoice in Mercury with one line per project. Send it from Mercury.
Example: a day run from Claude Code
A freelancer bills a fintech client $140 an hour and is building a store migration for a second client at a fixed price. Their day, as requests to a coding assistant connected to TrackTimer:
| Time | You ask | TrackTimer records |
|---|---|---|
| 09:02 | “Start a billable timer on Fintech API, note: webhook retries” | Timer started on Fintech API |
| 11:40 | “Switch to the store migration” | Fintech API stopped at 2h 38m; store migration started |
| 13:15 | “Stop my timer” | Store migration stopped at 1h 35m |
| 17:30 | “Show my day” | A timeline of both entries, with the gaps between them |
- Tracked today
- 4h 13m
- Hourly billable
- 2h 38m
- Fixed-price time
- 1h 35m
- Billable value
- $368.67
Illustrative example with hypothetical clients and rates. 2h 38m at $140 an hour is $368.67. The fixed-price time adds no billable value; it counts toward that project’s fee less cost. Supported hosts can show the day as an inline timeline; others return the same information as text.
Set up your first week
Create your workspace. Set your default billing rate, then add clients and a project per engagement with its billing mode.
Install the Raycast extension. Start and switch timers from anywhere on your Mac with a shortcut.
Connect your AI coding tool. Follow the MCP guide for Claude Code, Cursor, Codex, or VS Code, sign in, and approve the workspace.
Create an API key if you script. Personal keys are shown once and bound to one workspace. Keep them in your secret store.
Invoice at month end. Preview the month’s billable hours and fees in TrackTimer, create the Mercury invoice, and send it from Mercury.
Frequently asked questions
Can I start a timer from Claude Code or Cursor?
Yes. Connect the tool to TrackTimer’s MCP server at https://www.tracktimer.app/api/mcp, sign in, and approve access. Then ask it to start, switch, or stop your timer in plain language.
What happens if my laptop sleeps while a timer runs?
The timer keeps running on the server. Stop it when you are back, and if you forgot, correct the end time with a reason; the audit history keeps both versions.
How do I link time to a ticket or pull request?
Add the ticket key or pull request to the timer note. Notes hold up to 500 characters, so every entry shows what the time was for.
Does TrackTimer read my code?
Timers, the REST API, and MCP receive only what you or your assistant send, such as a project and a note. AI Auto Track is optional: it reads on-screen text on your Mac and sends a short excerpt to TrackTimer’s AI to title and summarize each block, while screenshots stay on your Mac and the timeline stays private to you.
Can I script TrackTimer from the terminal?
Yes. The REST API works with curl and any HTTP client using a personal key, and the OpenAPI specification is published at /openapi.json.
Can I invoice clients in Mercury?
Yes. TrackTimer creates an unsent invoice in your Mercury account from reviewed billable hours or an agreed fee. Review and send it from Mercury.
See what your time earns.
Set up your first client and project in a few minutes. Free during early access.
Written by TrackTimer about its own product and reviewed . Examples use hypothetical people, hours, and rates. Features and planned pricing can change; the pricing section has the current terms.