Every feature, in detail

What Tracky actually does.

No dashboards to configure, no team settings to ignore. Tracky is a focused set of tools for tracking billable time alone, built to disappear into your workflow and hold up when you invoice at the end of the month.

01

Menu bar & HUD

Tracking time

Everything you need to start, adjust, and stop work lives one click below the menu bar. The main window stays closed all day if you want it to.

One-click start from the menu bar

Click the icon in the status bar to start a timer instantly, or pause and resume one that's already running: no popover required. Clicking the time itself, or right-clicking, opens the full HUD.

Live time in the menu bar

The status item shows an orange icon while a timer runs and turns white when paused or stopped. Optionally show the elapsed hours and minutes right next to it.

The HUD popover

A floating panel under the menu bar shows the active timer large, with pause, resume, and stop controls, plus a quick "+" to start a new timer, which automatically stops the current one.

Week strip

A seven-day Monday–Sunday overview inside the HUD, showing total tracked hours per day. Click any day to inspect it, and step through weeks with a "back to today" shortcut.

Day view inside the HUD

See every entry for the selected day, with client, project, description, and duration, plus start, pause, stop, or edit actions right there and a right-click menu for quick changes.

Fast manual entry

A compact form with autocomplete search across client and project, notes, a duration field, and a billable toggle. On today it starts a timer; on any other day it saves a completed entry directly.

Flexible duration input

Type duration however it comes to mind: 1:30, 1.5, 1,5, 90m, 2h. Tracky parses it correctly every time.

Edit the active timer inline

Change project, description, billable status, or duration on a timer that's still running, without stopping and restarting it.

Resume past work

"Start Timer" on an existing entry resumes that entry as the active timer instead of creating a new one, handy for picking up a task you stepped away from.

Multi-segment sessions

Pause and resume a timer as many times as you like. Every run is stored as its own segment and summed into the entry's total duration.

Recovers a running timer on launch

If Tracky quit or the Mac restarted while a timer was active, it offers to continue or stop that timer the next time the app opens. Nothing is silently lost.

Confirms before closing a running timer

Closing the HUD while a timer runs asks whether to stop and close, or leave the timer running in the background.

Idle detection

After a configurable period without input (5, 10, 15, 30, or 60 minutes, or off) while a timer runs, Tracky flags it and lets you stop at the last-active moment, keep counting, or skip the idle stretch entirely, cleanly removed from the session.

Quotes in the empty state

When nothing is running, the HUD shows a quiet, rotating quote instead of an empty box, fully editable in Settings.

02

Main window

Entries

A proper table for reviewing and correcting time, once the day is done and you're looking at everything at once.

Searchable, sortable table

Every entry with date, client, project, description, duration, log count, billable, invoiced, and invoice number, with date, client, and project editable inline, right in the table.

Grouped view

Switch from the flat table to a client → project view with subtotals rolled up at each level.

Filters that actually narrow things down

Date presets (today, yesterday, this/last week, this/last month, custom range, all time), client, project, billable state, invoiced state, and free-text search across client, project, description, and invoice number.

Bulk actions

Select multiple entries and mark them invoiced or not, assign an invoice number, toggle billable, export, or delete, all in one pass.

Inline description editing

Fix a description right in the row: it saves the moment you press Enter, no dialog needed.

Full edit sheet

Adjust client, project, date, duration, description, billable, invoiced status, and invoice number, including the individual time logs behind an entry, each removable on its own as long as one stays behind.

Duration overrides, tracked honestly

Type a duration that differs from the logged segments and Tracky keeps both: the override is what's used, but the table still shows the raw tracked time underneath.

Confirmed deletes

Single or bulk deletes ask first, with a reminder that this can't be undone without a backup.

Automatic time rounding

Round entries to the nearest 5, 10, or 15 minutes, up or down, set globally or overridden per project. It applies to display, reports, and export without touching the underlying tracked time.

03

Organization

Clients & projects

Keep active work visible and old work out of the way, without ever losing the history behind it.

Clients, created and archived freely

Add, rename, and archive clients at will. Archiving a client archives its projects with it, with a confirmation so it's never accidental.

Projects tied to a client

Create, rename, and archive projects under each client, without breaking any of the time entries already logged against them.

Active / archived / all filter

Switch visibility for both clients and projects so the list only shows what you're currently working on, or everything, when you need to look back.

Per-project defaults

Set a default billable state, rounding interval, and rounding direction per project, each one overriding the app-wide default, and saved the moment you change it.

Split-view management

A client list with project counts on the left, a detail table of that client's projects on the right. Fast to scan, fast to edit.

04

Before you invoice

Reports

A clean read on billable and invoiced time, grouped the way an invoice actually needs it.

Grouped by client → project

See entry counts and rounded totals per project, rolled up into a total per client: the same shape most invoices need.

The same filters, tuned for reporting

Date range, client, project, billable, and invoiced filters, scoped to completed entries only, so a report never includes a timer that's still running.

Four totals per client

Total, billable, invoiced, and uninvoiced time, each shown as its own HH:MM:SS figure: enough to know exactly what's left to bill.

Export straight from the report

One click sends the filtered report to Excel or CSV, with a filename built from the date range you're looking at.

05

CSV & Excel

Export

Built for handing time off to bookkeeping, or an invoice template, without a manual cleanup pass afterward.

CSV or native XLSX

Export as plain CSV or a real Excel file, built natively with proper worksheet styling: no third-party library, no dependency on Excel being installed.

Choose your columns

Date, client, project, description, start time, end time, duration, billable, invoiced, and invoice number: toggle each on or off for the export.

Three duration formats

HH:MM:SS, plain minutes, or decimal hours like 1.5. Pick whichever your invoicing tool expects.

Group billable and non-billable separately

Split the export into billable and non-billable sections, each with its own subtotal, no manual sorting after the fact.

Combine matching entries

Entries that share a project, description, billable state, invoiced state, and invoice number get merged into one row with the durations summed: a tidier export with no loss of detail.

Live Excel subtotal formulas

When billable groups are split out, XLSX exports can use real =SUM(...) formulas for each subtotal instead of a static number, so the sheet recalculates itself if you tweak a row in Excel.

Bold headers and subtotals

Independently toggle bold styling for column headers and subtotal rows in the Excel output.

A filename that writes itself

Set a prefix template with a {Client} placeholder. Tracky fills in the client name (or "Multiple Clients" for a mixed export) and appends the date range automatically.

Export from anywhere

Export all filtered entries, just a selection, or a full report. Each goes through a native macOS save panel with the correct file type already set.

Safe filenames and sheet names, automatically

Invalid characters get cleaned up automatically, and Excel sheet names are kept within its 31-character limit: one less thing to think about.

06

Make it yours

Settings

A short, honest settings page: five groups, no hidden toggles buried three menus deep.

General

Show elapsed time in the menu bar, default new entries to billable, set the idle-reminder threshold, choose the default date filter for Entries on launch, and enable Launch at Login.

Time rounding

Set the app-wide default rounding interval and direction. Every project can still override it individually.

Export

Filename template, file format, duration notation, Excel styling, grouping behavior, and column selection: all the export options from one place.

Data

Manual backup export and import, right inside Settings. See Data & backups below.

About

See the app name and current storage mode at a glance, whether that's local-only or local plus iCloud.

Quotes, in their own tab

Edit the HUD's empty-state quotes as free text, one per line, with a reset button that restores the seven built-in defaults from Franklin, Covey, Drucker, Gandhi, Jim Rohn, and William Penn.

07

Ownership

Data & backups

No account, no company server. Your data lives on your Mac, and a full backup is always one click away.

Local storage by default

Everything is stored on your Mac using Apple's SwiftData framework. Nothing leaves the machine unless you export it yourself.

Optional iCloud sync, planned

CloudKit sync is already built into the storage layer, waiting for a public toggle. When it ships, it will run through your own Apple account, off by default, and never through a Tracky server.

One-file backup and restore

Export every client, project, entry, time log, and setting to a single readable JSON file, and restore it later through the same panel, with a clear warning before a restore overwrites current data.

Careful migrations

Tracky's storage layer has already been rebuilt once, with a dedicated migration path that moved every existing user's data across without loss. The same care applies to anything that comes next.