Every freelancer and consultant has had this moment: you send an invoice, and a few hours later a message comes back — “can you break this down for me?” Now you’re digging through a spreadsheet, trying to remember what “Misc dev work — 4.5h” actually involved three weeks ago.

A good time report prevents this entirely. It’s the difference between an invoice that gets paid same-day and one that triggers a round of clarifying questions. Here’s how to build one that clients actually understand — and what to avoid.

Why most time reports fail

The typical freelancer time log looks something like this:

Mon: 6h — website work Tue: 5.5h — client stuff Wed: 7h — design + revisions

This isn’t a report. It’s a personal memory aid that happens to have numbers in it. It works fine for you, because you remember what “website work” meant. It means nothing to the client, who now has to either trust the total blindly or ask you to explain it — and asking creates friction, even when the hours are completely legitimate.

The goal of a client report isn’t just to record what happened. It’s to make the explanation unnecessary.

What a clear time report actually contains

A report a client can process in under a minute typically has four layers of structure:

1. Client and date range up front. State plainly who this is for and what period it covers. Obvious, but easy to skip when you’re exporting from a tool that doesn’t default to it.

2. Grouped by project, not just listed by date. Clients think in terms of projects (“the website redesign,” “the Q2 campaign”), not in terms of your calendar. A report organized by project lets a client jump straight to the section they care about.

3. Broken down by task within each project. Under “Website Redesign,” separate entries for design, development, and testing tell a very different story than a single lump figure — and they map to the kind of work the client actually asked for.

4. Billable totals, clearly separated. If you tracked any non-billable time (internal meetings, your own admin, time you’re writing off as goodwill), keep it visible but clearly marked as non-billable. This builds trust — it shows the billable total isn’t padded — and avoids the awkward question of “wait, were you tracking everything?”

A report with this structure for, say, a website redesign might show:

Project / TaskHoursBillableAmount
Website Redesign — Design6h 30m$650.00
Website Redesign — Development5h 15m$525.00
Website Redesign — Testing0h 45m$75.00
Total Billable12h 30m$1,250.00

No explanation needed. The client can see exactly what was done, how long it took, and what it cost — and every line maps to something they recognize.

The habit that makes this easy: tag as you go

The biggest reason time reports turn into archaeology is that categorization happens after the work, when memory has already faded. The fix is simple but requires a small habit change: assign the client, project, and task when you start the timer, not when you’re building the report.

This takes seconds in the moment and saves the entire reconstruction process later. If you’re switching between tasks often, even rough categorization (just picking the right project) is far better than an undifferentiated block of “work.”

Reviewing before you send

Before any report goes to a client, do a quick pass:

  • Does every entry have a project and task? Catch anything still sitting in an “uncategorized” bucket.
  • Do the billable/non-billable splits look right? Easy to mis-tag something in a rush.
  • Does the total make sense against your own memory of the week? A quick sanity check catches double-entries or missed time.
  • Is there anything that needs a one-line note? If a task ran long for a good reason (scope change, extra revisions requested), a short note on that line heads off the question before it’s asked.

This review step is also where you catch the small stuff — a forgotten 20-minute call, an entry that got logged to the wrong project — before it either disappears from your invoice or confuses the client.

Exporting: PDF for clients, CSV/JSON for your records

For the client-facing version, a PDF export is almost always the right call. It’s read-only, looks consistent regardless of what software the client has, and feels like a “deliverable” rather than a working file.

For your own records — accounting, taxes, year-end summaries — CSV or JSON exports let you pull the underlying data into a spreadsheet or accounting tool without re-entering anything.

From report to invoice

Once a report is clean, turning it into an invoice should be close to automatic: the billable totals and project breakdown that made the report easy to understand are the same numbers that go on the invoice. If you’re rebuilding this information separately for invoicing, that’s a sign your time tracking and billing tools aren’t talking to each other — and it’s extra manual work that a connected tool can eliminate entirely.

The bottom line

A time report’s job is to answer the client’s question before they ask it. Organize by project and task, separate billable from non-billable clearly, keep the totals visible, and review before sending. Do that consistently, and “can you break this down for me?” stops being a recurring email — because the breakdown was already there.


Timether tracks time by client, project, and task from the start, and turns it into a clean, client-ready PDF report — and an invoice — without rebuilding anything manually. See how it works →