Tracking freelance hours in a spreadsheet — and when to stop
A spreadsheet gets you surprisingly far. Here’s a free template, the columns it needs, the formulas that turn hours into earnings, and the signs you’ve outgrown it.
Most freelancers start tracking time in a spreadsheet, and for a good while that’s the right call. It’s free, it’s yours, and it bends to however you work. The trouble starts later — usually around the third client and the first late payment.
This is a sheet that holds up until then: the columns, the formulas, and how to tell when it’s time to move on.
A row is one block of work: when it happened, who it was for, which project, what you did and how long it took. Add the rate, and every row knows what it earned.
| Date |
Client |
Project |
Description |
Hours |
Rate |
Earned |
| 1 Sep 2026 |
Studio Noir |
Website |
Homepage layout |
3.5 |
80 € |
280 € |
| 2 Sep 2026 |
Studio Noir |
Website |
Call and revisions |
1.25 |
80 € |
100 € |
| 3 Sep 2026 |
Acme Ltd |
App design |
Onboarding flow |
4 |
75 € |
300 € |
One rate per client is usually enough; give a project its own when it pays differently. Keep descriptions short — you’ll read them again when you write the invoice, and so might the client.
Start and end times look precise, but they make every row a small calculation. Write the duration instead, as a decimal: 1.5 for an hour and a half, 0.25 for a quarter.
Don’t mix in 1:30. To a spreadsheet, 1:30 is a time of day — a fraction of 24 hours — while 1.5 is a number. In one column they add up to nonsense, and 1:30 at 80 € an hour comes out at 5 €. If you do keep start and end times, let a formula turn them into hours: =(End-Start)*24.
The Earned column is one formula, hours times rate, copied down the sheet:
=E2*F2
Then a summary tab adds it up, a row per client. SUMIF totals a column for every row that matches a name:
=SUMIF(Log!B:B, "Studio Noir", Log!G:G)
For one month, SUMIFS checks the dates as well:
=SUMIFS(Log!G:G, Log!B:B, "Studio Noir", Log!A:A, ">="&DATE(2026,9,1), Log!A:A, "<"&DATE(2026,10,1))
If your spreadsheet is set to a European language, the formulas take ; between the parts instead of ,. The template has them in place already, whichever you use.
The template is the sheet above, ready to fill in:
- Log — the six columns, with Earned worked out on every row;
- Summary — hours and earnings per client, added up from the log.
It opens in Excel, Numbers and Google Sheets (File → Import). There’s a CSV version too, without the formulas.
The sheet never forgets an hour. What it can’t do is tell you anything you didn’t ask it. Signs you’ve outgrown it:
- You keep a second tab just for who’s been invoiced and who’s paid.
- A fixed-price project makes the Earned column meaningless — the hours don’t change what it pays.
- A client pays in another currency, and every total needs a conversion.
- You find out a payment is late when you need the money, not when it was due.
- How much did I earn this month? takes ten minutes and a filter.
None of these break the sheet. They just mean you’re doing by hand what a tool could do for you.
You don’t have to start over. Save the sheet as CSV — in Google Sheets it’s File → Download → Comma-separated values, in Excel File → Save As → CSV — and try it on Monotime’s home page. It reads the file in your browser and shows which column it takes for the date, the client and the hours, before you sign up. After that, the import brings your history along — the template’s columns are the ones it looks for.
Of course. Monotime exports everything to CSV whenever you like — during the trial too — so the sheet can stay as a backup.