Freelance Timesheet Template (Free CSV Download)
A freelance timesheet template turns the question "how many hours do I bill this client?" into arithmetic you can trust. This one is a plain CSV with ten columns — date, client, project, task, start and end times, hours, a billable flag, your rate, and the line amount — and you can Download the free CSV template now and open it in any spreadsheet app. If you want the background on why a timesheet matters at all, what a freelance timesheet is covers the concept; this post is about the template itself and how to use it.
What a good freelance timesheet needs
Every column in the template earns its place. Here is what each one holds and why it matters:
| Column | What goes in it | Why it matters |
|---|---|---|
| Date | The day the work happened (YYYY-MM-DD) | Lets you sort entries and scope an invoice to a billing period |
| Client | Who the work is for | Maps every hour to whoever pays for it |
| Project | The specific engagement or deliverable | Groups related entries and becomes your invoice line items |
| Task / Description | One concrete line about what you did | Justifies the charge when a client asks "what was this?" |
| Start | When you began | The raw input for Hours, and a record you can defend |
| End | When you stopped | Pairs with Start so Hours isn't a guess |
| Hours | Duration in decimal hours | The billable quantity — 2h 30m is 2.5, not 2.30 |
| Billable (Y/N) | Whether this entry goes on an invoice | Decides what the client pays for; the column most people skip |
| Rate (USD) | Your hourly rate for this entry | Can differ per client or per project |
| Amount (USD) | Hours × Rate | The money for the line — blank on non-billable rows |
Two columns do the heavy lifting. The Billable (Y/N) flag is the one freelancers most often leave out, and it is the one that decides whether the sheet is useful: mark internal admin, your own learning, and time spent chasing new work as N, and they stay off the invoice without you having to remember the distinction later. The Amount column is just Hours × Rate — at $75 an hour, 2.5 hours is $187.50. Non-billable rows leave Rate and Amount blank, so the column only ever sums money you can actually charge.
How to fill it in
Fill one row per distinct task, while you work or at the end of each day — not on invoice day. A couple of days across two clients might look like this:
| Date | Client | Project | Task / Description | Start | End | Hours | Billable | Rate | Amount |
|---|---|---|---|---|---|---|---|---|---|
| 2026-06-01 | Acme Co | Website redesign | Homepage wireframes | 09:00 | 11:30 | 2.5 | Y | 75 | 187.50 |
| 2026-06-01 | Acme Co | Website redesign | Client kickoff call | 14:00 | 14:45 | 0.75 | Y | 75 | 56.25 |
| 2026-06-02 | Beam LLC | Brand identity | Logo concepts | 10:00 | 12:00 | 2 | Y | 90 | 180.00 |
| 2026-06-02 | Internal | Admin | Invoicing and email | 16:00 | 16:30 | 0.5 | N |
A few mechanics are worth getting right:
- Convert minutes to decimal hours. 30 minutes is 0.5, 45 minutes is 0.75, 20 minutes is 0.33 — divide minutes by 60. If your spreadsheet holds real time values, a formula like
(End − Start) × 24returns decimal hours from the two time cells. For the rounding conventions, how to track billable hours goes deeper. - Let Amount calculate itself. Put
Hours × Ratein the Amount cell so a corrected duration updates the money automatically. The CSV ships with the numbers typed in, but a formula is less error-prone. - Flag billable once, per project. Decide that everything on Acme's website is billable except internal admin, and the
Y/Nchoice stops being a judgment call you make forty times a week.
To total billable hours, sum the Hours column for the rows marked Y. In a spreadsheet that is one formula — SUMIF(Billable, "Y", Hours) — and the billable revenue is the same idea against the Amount column. For the rows above, Acme has 3.25 billable hours over two entries ($243.75); Beam has 2 hours ($180.00); the 30 minutes of admin is real work that nobody pays for, which is exactly why it carries an N and an empty Amount.
Turning the timesheet into an invoice
The invoice is a filtered view of this sheet, not a new document. Four steps:
- Filter to one client and a date range. Keep only Acme's rows for the billing month; everything else stays off this invoice.
- Keep the billable rows. Drop anything marked
N. Because the flag is already there, this is a filter, not a fresh round of decisions. - Group by project and total. Each project becomes a line item — project name, billable hours, rate, and the summed amount. Acme's website redesign is one line: 3.25 hours at $75, $243.75.
- Add the essentials and export. A unique invoice number, issue and due dates, your details and the client's, then save it as a PDF.
Because the template already carries client, project, billable status, and amount, there is nothing to retype — the line items on the invoice are the rows you recorded. For the full field list and payment terms, see how to invoice from your time tracker.
The catch with manual timesheets
The template is honest about one thing: it only works if you fill it in. Every row is a small act of discipline, and the rows that go missing are never the three-hour heads-down blocks — those you remember. It's the five-minute reply, the ten-minute review, the quick call wedged between two other tasks. Each one feels too small to log, and across a month they add up to real, unbilled money.
This is the structural weakness of any manual timesheet, spreadsheet or not. It depends on your memory at exactly the moment memory is worst — when you're busy, mid-task, working the most billable hours. Reconstruct the week on invoice day and you round in the client's favour every time, because the safe guess is always the low one. The sheet is most incomplete precisely when there is the most to capture.
Or let it fill itself
If the discipline is the weak point, the fix is to stop relying on it. BillNotch records your active window in the background and fills a timesheet exactly like this one for you — no timers to start, no rows to type. It sorts your activity into client projects, inherits the billable flag from each project, and keeps the billable total live for any client and date range. When you're ready to bill, it generates a PDF invoice or a CSV export straight from that total, and the Revenue Leak Finder flags time you tracked but never billed — the hours the manual sheet quietly loses.
It's $9/month for Pro and $12/seat/month for Team, with a 14-day trial. If you bill by the hour, see what it does for freelancers. Either way, start with the free CSV template — the columns are the same whether you fill them by hand or let an app do it for you.