Skip to content
FreelanceTime trackingBilling

How to Track Billable Hours as a Freelance Developer

Alex Drankou

Every freelance developer has experienced this: month-end arrives, you open your time tracker, and the numbers don't add up. You remember working on that API integration for hours, but Toggl shows 47 minutes. Where did the rest go?

The answer is simple: you forgot to start the timer. Or stopped it for a "quick break" that became an hour. Or got interrupted and never resumed.

Manual time tracking has a fundamental flaw—it requires you to remember to track time while you're focused on complex technical work. And your brain can't do both well.


What is the best way to track billable hours?

Session-based tracking is the most accurate method for freelance developers—work in focused 60-90 minute sessions with a single timer, and track time to tasks within each session. This eliminates the "forgot to start timer" problem while capturing work naturally.

Why session-based works:

Instead of starting and stopping timers dozens of times daily, you:

  1. Start a focus session (one action)
  2. Select what you're working on
  3. Work until the session ends or task completes
  4. Switch tasks within the same session as needed

Your billable time is the session duration, broken down by task. Simple, accurate, and doesn't require constant timer management.

The key insight: You're not tracking time as a separate activity—tracking happens automatically as part of your focused work structure.


How accurate is manual time tracking?

Research shows manual time tracking underestimates actual work by 40-60%. Freelancers who rely on start/stop timers consistently lose billable hours to forgotten tracking, interrupted sessions, and reconstruction errors.

Where the hours disappear:

  • Timer not started: You dive into a bug fix, solve it 45 minutes later, realize you never started tracking
  • Timer not stopped: You take a break but forget to pause—now your 30-minute task shows 2 hours
  • Timer interruptions: Someone pings you, you stop the timer, answer quickly, forget to restart
  • End-of-day reconstruction: "I think I worked on the auth system for about 2 hours?"

The math hurts:

If you bill $100/hour and lose just 5 hours per week to tracking errors, that's $26,000 per year in uncaptured revenue. Most freelancers lose more.

One freelancer's reality check: "I switched from Toggl to session-based tracking and discovered I was billing 6.2 hours/day instead of 5.1. I wasn't working more—I was just finally capturing the work I was already doing."


Should freelancers track by task or by hour?

Track by task, bill by hour. Task-based tracking provides context (what you actually did) while hour-based billing gives clients the granularity they expect. The combination produces accurate invoices that are easy to justify.

Why task-based is better:

For accuracy:

  • You know when you started and finished specific work
  • Multiple short tasks don't blur together
  • Client can see exactly what they're paying for

For context:

  • "3 hours: API integration" is clearer than "3 hours: development"
  • Notes attached to tasks explain the work
  • Disputes are rare because the breakdown is transparent

For your workflow:

  • Selecting a task focuses your attention
  • Switching tasks creates natural tracking boundaries
  • You build a work history without extra effort

The invoice difference:

❌ Without task tracking: "Development: 24 hours - $2,400"

✅ With task tracking:

  • "User authentication system: 6 hours - $600"
  • "Payment API integration: 8 hours - $800"
  • "Bug fixes (auth redirect, form validation): 4 hours - $400"
  • "Code review and documentation: 6 hours - $600"

Same total, completely different client perception. The detailed invoice builds trust and justifies your rate.


How do I track time for multiple clients?

Separate your work by client using projects or workspaces, then track sessions to specific client tasks. Review weekly to catch any cross-contamination before invoicing.

The system:

  1. Organize by client: Each client gets a project/workspace
  2. Tasks live under clients: "Acme Corp > API integration"
  3. Sessions assign to tasks: When you work, the time goes to the right client automatically
  4. Weekly review: 5 minutes to verify nothing is miscategorized

Common mistakes to avoid:

  • Mixing client work in one session: If you switch clients, end the session and start a new one
  • "General" time buckets: Every minute should be assigned to a specific task
  • Waiting until month-end: Review weekly so errors are fresh

The meeting problem:

Don't forget to track client meetings. That 30-minute call is billable—but it's not in your coding sessions. Track meetings separately using your calendar as the source of truth.


What tools do freelance developers use for time tracking?

The most effective time tracking tools for developers combine session-based work structure with automatic task assignment—eliminating manual start/stop while providing detailed breakdowns for invoicing.

Tool categories:

Manual timer tools (Toggl, Clockify, Harvest):

  • Start/stop for each task
  • Requires constant attention
  • Easy to forget, hard to reconstruct
  • Best for: short tasks, administrative work

Automatic trackers (RescueTime, Timing):

  • Track app usage automatically
  • Often inaccurate for development (VS Code open ≠ productive)
  • Privacy concerns
  • Best for: general productivity awareness, not billing

Session-based tools (Locu):

  • Work in focused sessions
  • Track to tasks within sessions
  • Natural boundaries, accurate capture
  • Best for: developers doing deep work

Calendar-based (Sunsama, Akiflow):

  • Time-block tasks on calendar
  • Track if you followed the plan
  • Rigid—doesn't match how development actually works
  • Best for: people who love calendars

What matters most:

  1. Low friction: If tracking requires constant attention, you'll skip it
  2. Task context: Knowing what you did, not just how long
  3. Easy export: Getting hours into invoices without manual work
  4. Matches your workflow: Deep work ≠ administrative task switching

How do I create accurate invoices from time tracking?

Export your tracked time grouped by task, add brief descriptions of what was accomplished, and include dates. The goal: a client should understand exactly what they're paying for without asking questions.

Invoice structure that works:

Project: Website Redesign
Period: January 1-31, 2026

Date       Task                              Hours   Rate    Amount
--------------------------------------------------------------
Jan 3      Homepage hero section             3.5     $100    $350
Jan 4      Navigation component              2.0     $100    $200
Jan 5-6    Product listing page              5.5     $100    $550
Jan 8      Mobile responsive fixes           2.5     $100    $250
Jan 10     Client feedback revisions         1.5     $100    $150
Jan 12     Code review meeting (call)        0.5     $100    $50
--------------------------------------------------------------
Total                                        15.5            $1,550

Tips for clean invoices:

  • Group small tasks: "Bug fixes" instead of 8 separate 15-minute entries
  • Include dates: Shows work distribution, prevents "all at once" suspicion
  • Add context: "Client feedback revisions" not just "revisions"
  • Separate meetings: Clients appreciate transparency about what's development vs. communication
  • Round reasonably: 2.25 hours → 2.25 or 2.5, not 2 hours (you did the work)

The monthly prep:

With session-based tracking, invoice prep takes 20-30 minutes:

  1. Export time by client and date range
  2. Group related entries
  3. Add any notes for unusual items
  4. Send

Compare to reconstructing hours from memory at month-end: 3-4 hours of frustrating guesswork.


How do I handle time tracking when interrupted?

When interrupted during a billable task, either pause and resume (if tracking manually) or let the session capture the full block and deduct break time at review. The key is having a system that doesn't require perfect real-time discipline.

Two approaches:

Approach 1: Strict pause/resume

  • Pause timer when interrupted
  • Resume when returning
  • Problem: you'll forget

Approach 2: Session-based (recommended)

  • Work in defined sessions (60-90 minutes)
  • Interruptions happen within sessions
  • At session end, review and adjust if needed
  • "That session was 90 minutes but I had 15 minutes of interruptions" → 75 minutes billed

Why session-based handles interruptions better:

You're not trying to track real-time seconds. You're tracking blocks of focused work with reasonable adjustments. A 60-minute session with minor interruptions is still roughly 60 minutes of work for the client.

The honesty principle: If an interruption was significant (30+ minutes), deduct it. If it was minor (quick Slack response), don't obsess. Clients are paying for your focused time on their project, and reasonable interruptions are part of working.


Frequently Asked Questions

How many billable hours should a freelance developer work per day?

Most freelance developers sustainably bill 5-6 hours per day. This accounts for non-billable time (admin, marketing, breaks) while maintaining quality. Attempting 8+ billable hours daily leads to burnout and lower-quality work.

Should I track time in 15-minute or 6-minute increments?

Track in the smallest increment that makes sense—most developers use 15-minute blocks. Anything smaller creates accounting overhead without meaningful accuracy improvement. A 23-minute task becomes 30 minutes; clients understand rounding.

What if I forget to track time for a whole day?

Reconstruct from artifacts: git commits, PR activity, Slack messages, calendar. Write it down immediately so you don't forget again. Consider switching to session-based tracking where forgetting is harder—you're working in sessions, not remembering to start timers.

Should I track time spent learning for a client project?

If the learning directly enables client work (studying their codebase, reading their API docs), bill it at full or reduced rate depending on your agreement. General skill development (learning a new framework) typically isn't billed. Be transparent about learning time in your invoices.

How do I track time when working on my own projects?

Use the same system but don't categorize as billable. Tracking time on personal projects helps you understand where your hours actually go—many freelancers are surprised how much "side project" time competes with client work.


Track time while you focus, not instead of it

Session-based time tracking that captures every billable minute. Invoice prep in 20 minutes, not 4 hours.

No credit card required
10-day free trial