Guide · Any country · Clients and projects

How to estimate how long a freelance project will take (and check it against your real hours)

Most freelance estimates run short, and not because freelancers are bad at their jobs. People in general underestimate how long their own tasks will take. Here's a simple way to estimate that leans on your own logged hours instead of your memory: break the job into tasks, give a range, track hours against the estimate while you work, and use the gap to make the next estimate better.

General information. The method, the steps, the example, the checklist and the wording to copy are ours (general practice). There's no official rule for estimating freelance work. The research quoted below is about people in general (mostly students and everyday tasks), not freelancers specifically; see Where the sources differ.

The short answer

  1. List every task, including the ones that aren't "the work": calls, emails, review rounds, handover and admin.
  2. Look up what similar jobs actually took in your hours log, and relate each one to the task in front of you. Don't rely on memory.
  3. Give each task a range (low, likely, high) and write down the unknowns that would push it to the high end.
  4. Pick the budget hours you'll track against, then price it with our fixed price vs hourly guide and quote guide.
  5. Log hours as you go and check them against the budget at set points. Tell the client early if it's running over.
  6. Compare estimate and actual afterwards, task by task, and adjust how you estimate the next one.
Want this in a ready-made spreadsheet? Our paid Client & Project Tracker by Small Rows (US$12, one-time) keeps the budget hours for each project, adds up the hours you log against it, and shows the hours left and the share of the budget hours used; the dashboard counts projects that have gone over their budget hours. The budget is per project, not per task, and it doesn't make the estimate for you.

On this page

1. Why estimates run short

Psychologists call it the planning fallacy. In a 1994 paper, Buehler and colleagues (1994) put it this way: "The tendency to hold a confident belief that one's own project will proceed as planned, even while knowing that the vast majority of similar projects have run late, has been termed the planning fallacy" (Buehler, Griffin, Ross, 1994).

Practical reading (ours): the fixes are to list the parts of the job, check what similar jobs really took in a written log, and keep checking during the job. The rest of this page does exactly that.

2. Break the job into tasks

Write the job down as tasks you could each finish in a sitting or two. If you've written a statement of work or a proposal, start from its deliverables. Then go through the tasks people often leave out (our list):

Often missedWhat it includes
Getting startedKickoff call, reading the brief, setting up files, access and tools.
Talking to the clientEmails, calls, status updates and waiting for answers you need before you can go on.
Review roundsEach round of feedback you agreed to, and the changes that come with it.
Content or input from the clientChasing, checking and fitting in what the client sends, often late or in a different form.
Checking your own workTesting, proofreading, fixing what you find.
HandoverFinal files, formats, a short handover note and the sign-off.
Admin for this jobThe quote, the invoice, logging hours, a change order if the scope moves.
Learning something newA tool, a platform or a subject you haven't worked with before.

Not every job has all of them. The point is to decide, task by task, rather than leave them inside one big number.

3. Use your logged hours, not your memory

Buehler and his co-authors found that "people make more realistic completion estimates when they use their past experiences to inform their predictions." But "leading people to remember past experiences did not, in itself, reduce the optimistic bias." "The bias was attenuated only when subjects were induced both to consider their past experiences and to relate the experiences to the task at hand." (Study 4, Buehler and colleagues, 1994).

Practical reading (ours):

4. Give a range, not one number

For each task, write three numbers of hours (ours):

Add up each column. The gap between the likely and high totals is your honest picture of the risk. Write down the unknowns behind it; that list is what you'll use when you choose a price or talk to the client about changes. We don't suggest a standard percentage to add, because it depends on your own log.

5. A made-up example

A small design job, in hours only. The numbers are invented to show the method, not typical figures.

TaskLowLikelyHighLogged after the job
Kickoff and brief1232.5
First draft681210
Two review rounds2465.5
Client emails and calls1243.5
Final files and handover11.532
Total1117.52823.5

In this example the job took 23.5 hours: more than the likely total of 17.5, inside the high total of 28. The review afterwards shows where the gap came from (the draft and the client emails), so next time those tasks start from the logged hours, not the old guess.

6. From estimate to budget hours and a quote

Pick the number of hours you'll track against (the budget hours). Then the pricing step is covered elsewhere, so we don't repeat it here:

If you quote hourly, say it's an estimate, show the range and say what it assumes. Lines to copy are in section 9.

7. Track hours against the estimate while you work

Our project tracking guide shows the columns and formulas for budget hours, hours logged and hours left if you'd rather build the spreadsheet yourself.

8. Review it afterwards

When you wrap up the project, take ten minutes (ours):

Over a few jobs this gives you your own pattern (which tasks you tend to underestimate, and by roughly how much), which is more useful than any general rule.

9. A worksheet and emails to copy

Replace everything in [brackets]. These are ours.

Estimate worksheet

Estimate lines for a quote

Hours update to the client

10. Checklist

Free tools and kits

Where the sources differ

Sources

Checked . Found a mistake? Tell us via Support.