How to estimate a project's cost, step by step
- Break the work into tasks you can picture finishing. If a task would take more than about two days, split it. Big, vague tasks are where most estimating error hides. The templates above give you a realistic starting list for common projects.
- Estimate each task three ways. Optimistic is the time if everything goes right. Likely is your honest best guess. Pessimistic is the time if the usual problems happen: slow feedback, a fiddly integration, an extra round of changes. It is a realistic bad case, not a disaster.
- Price the time. Set your hourly rate, and override it on tasks that are worth more to the client or cost you more, such as subcontracted work.
- Add what is not a task. Expenses go in the expenses list, with a markup if you buy and manage them. Project management covers calls, email and admin. Contingency covers the work nobody has listed yet.
- Choose how sure you want to be, then round up. Pick a confidence level and the tool turns the estimate into one fixed price.
- Sanity-check it. Look at what you would earn per hour if the job runs to the high estimate, and check the timeline against your calendar before you send anything.
Three-point estimating, explained simply
A single guess is usually the "most likely" time, and the most likely time is usually optimistic. Tasks rarely finish much faster than planned, but they can run a lot slower. Three-point estimating, also called PERT, keeps most of the weight on the likely case but lets the bad case pull the average up.
Expected = (Optimistic + 4 × Likely + Pessimistic) ÷ 6
Standard deviation (σ) = (Pessimistic − Optimistic) ÷ 6
Worked example. A small website with three tasks, at $90 an hour:
| Task | Optimistic | Likely | Pessimistic | Expected | σ |
|---|---|---|---|---|---|
| Homepage design | 6 | 10 | 20 | 11.0 | 2.33 |
| Build five pages | 12 | 16 | 28 | 17.3 | 2.67 |
| Content and launch | 4 | 6 | 12 | 6.7 | 1.33 |
| Total | 22 | 32 | 60 | 35.0 | 3.79 |
Expected hours simply add up: 35. Uncertainty does not add up directly. You add the squares of each σ and take the square root: √(2.33² + 2.67² + 1.33²) = 3.79 hours. Adding one σ gives 38.8 hours, a figure the project has roughly an 84% chance of coming in under. At $90 that is $3,491. A 10% contingency makes it $3,840, which rounds up to a quote of $3,850.
Now compare the gut-feel number. The likely hours add up to 32, or $2,880. The 84% figure is about 21% more hours than that, and even the plain expected figure is 3 hours higher. Quote the gut-feel number and an ordinary project, with nothing unusual going wrong, already pays you less than your rate.
The calculator does this for every task and adds 0, 1 or 2 standard deviations for the 50%, 84% and 98% confidence levels. Those percentages assume tasks overrun independently. In real projects one problem, such as an unclear brief, often slows several tasks at once, which is the main reason to add contingency as well.
Why add contingency on top
The three-point estimate covers uncertainty in the tasks you listed. Contingency covers the things nobody listed: a stakeholder who joins late and wants changes, content that arrives in the wrong format, a hosting problem on launch day. On a fixed price you carry that risk instead of the client, and contingency is what you charge for carrying it. Use less for work you have done many times with a client you know, and more for a new client, a new kind of project, or a brief with open questions. If the uncertainty is huge, sell a short paid discovery phase first and estimate the rest afterwards.
Fixed price or hourly?
With hourly billing the client carries the risk: every extra hour is paid. It suits ongoing, exploratory or poorly defined work. With a fixed price you carry the risk, but you keep the upside when you work efficiently, and clients like knowing the number up front. Fixed price works when the scope is clear enough to list the tasks, and when you quote at a confidence level of 84% or higher. A common middle path is a fixed price per phase, with changes outside the scope billed hourly.
How to present an estimate to a client
- Lead with the outcome and one price. A client buying a website cares about the website, not your hours. Keep the range and the hours for yourself; a range invites the client to anchor on the low end.
- List what is included, phase by phase. The scope list is your protection against scope creep. Say what is not included, too.
- State your assumptions. Number of revision rounds, who supplies content, how long the price is valid, and the rate for extra work. The notes field and the copied email cover this.
- Cut scope, not price. If the budget is tight, offer fewer pages or one fewer concept rather than the same work for less.
- Tie payments to milestones. The price-by-phase table splits the fixed price for deposit and milestone invoices.
Common estimation mistakes
- Estimating only the making. Design, code and writing get estimated; calls, email, revisions, file prep and invoicing do not. That is what the project management percentage is for.
- Optimistic numbers in the likely column. If you have never actually finished a task that fast, it is not your likely time.
- Pessimistic numbers that are not pessimistic. A worst case only slightly above the likely case usually means the risk has not been thought through.
- Quoting the 50% figure on a fixed price. By definition, about half of projects then go over.
- Never checking actual hours. Compare your time tracking with the estimate after each project. It is the fastest way to estimate better.
This tool gives estimates based on the numbers you enter. It is not financial or tax advice; check which tax rate applies to you.
Frequently asked questions
How do I estimate the cost of a project?
Break the project into tasks, estimate the hours for each one, ideally as a best, likely and worst case, and multiply by your hourly rate. Then add expenses, time for project management and a contingency buffer. The result is a cost range; quote a fixed price at the confidence level you are comfortable with.
What is the PERT formula?
Expected time = (optimistic + 4 × most likely + pessimistic) ÷ 6. The standard deviation is (pessimistic − optimistic) ÷ 6. For a whole project, add up the expected times, and combine the standard deviations by adding their squares and taking the square root.
How much contingency should I add to a freelance project?
There is no universal number. For work you have done many times for a client you know, 5–10% is usually enough. For a new client, a new type of project or a brief with open questions, 15–25% is more realistic. Very uncertain work is better split off into a paid discovery phase.
Which confidence level should I quote at?
For a fixed price, 84% is a sensible default: most projects fit inside the price without you overcharging. Use 98% for risky or unfamiliar work. The 50% level is the plain expected cost, so only quote it when the client pays for overruns, for example on hourly work with an estimate.
How much does a website cost?
It depends on the number of pages, how custom the design is, the features, who writes the content, and the rate of whoever builds it. Load the Website build template, adjust the tasks to the real scope and enter your rate, and the estimator shows the hours and the price. Treat one-size-fits-all price lists with caution.
Should I show the client my hours?
Usually not on a fixed price. Clients who see hours tend to compare hours instead of value and negotiate line by line. Show the scope, timeline and price. The client estimate and the copied email leave hours out unless you tick Show hours to the client.
Is it better to charge a fixed price or hourly?
A fixed price works when the scope is clear enough to estimate: you take the risk and keep the upside if you work efficiently. Hourly suits unclear or ongoing work, where the client carries the risk. Many freelancers fix the price per phase and bill changes outside the scope hourly.
Is my estimate saved, and is it private?
Yes. Everything runs in your browser and is saved in this browser's local storage; nothing is uploaded. Copy link puts the whole estimate inside the link itself, so anyone you send it to can open the same numbers.