Hourly vs. Project-Based Pricing: Which Should You Use?

Two ways to bill, two very different jobs

Most freelancers pick one billing model early — usually whichever their first client asked for — and then quietly stick with it for years. That’s a mistake. The hour and the project aren’t loyalty teams. They’re tools, and the right one shifts from job to job depending on how clearly you can see the finish line.

Here’s the part nobody tells you when you start: charging by the hour and charging by the project can produce the exact same final invoice and still feel completely different to both sides. The difference is who carries the risk when reality doesn’t match the plan. That, more than anything, is the whole decision.

What each model actually means

Hourly means you sell time. You track the hours, multiply by your rate, and bill what you logged. If the work balloons, your pay balloons with it. If the client keeps adding “just one small thing,” the meter keeps running.

Project-based (or flat-fee) means you sell an outcome. You quote one number for a defined deliverable — “a five-page website, three rounds of revisions, $3,200” — and that number holds whether the work takes you 20 hours or 40. The client knows the cost up front. You absorb the overrun, and you keep the upside if you’re fast.

That last line is the crux. Project pricing rewards efficiency; hourly quietly punishes it. The better you get at a repeatable task, the less you earn per job on an hourly basis. It’s a backwards incentive, and worth keeping in mind every time you set a rate.

A quick scenario for each

The hourly job. A startup founder messages you on a Tuesday: “Our checkout is throwing an error, can you look into it?” You have no idea whether it’s a one-line config fix or two days buried in legacy code. Nobody could quote this honestly. So you agree on, say, $75/hour, you log time as you go, and you send a short note when you cross a threshold — say, five hours — so there are no surprises. The client pays for exactly what the problem turns out to need. That’s the model doing its job: open scope, unknown depth, fair to both sides.

The project job. A bakery wants a one-page menu site — logo placement, a contact form, their hours pulled from a doc you’ve already seen. You’ve built a dozen of these. You know it’s roughly a day and a half of focused work, maybe two with revisions. You quote $1,400 flat. The owner says yes because she can drop that number into a budget. You say yes because you’ll likely beat your own estimate and effectively out-earn what hourly would have paid. Clear scope, familiar work, predictable shape. Flat fee wins.

Notice the pattern. The hourly job was a question mark. The project job was a known quantity. Almost every “which model?” argument comes down to which of those two you’re actually looking at.

The trade-offs side by side

HourlyProject-based
Who eats scope creepThe clientYou
Who keeps efficiency gainsThe clientYou
Best when scope isFuzzy or evolvingClear and well-defined
Client’s biggest worry”How high will this go?""Am I overpaying for fast work?”
Your admin burdenTime tracking, every sessionTight estimating up front
Cash-flow feelPay-as-you-goOften deposit + milestones
Rewards you forThoroughness, complexitySpeed, systems, expertise

There’s a quieter trade-off in there too. Hourly conversations tend to circle around time — clients start watching the clock, questioning a “6-hour” task, asking you to justify the meter. Project conversations center on value — once the price is agreed, nobody cares whether you took an afternoon or a week, only whether the thing works. For a lot of freelancers, that second conversation is simply the nicer one to have.

Why you need a real hourly number either way

Even if you plan to quote flat fees forever, you can’t price a project sensibly without knowing what an hour of your time is worth. A flat fee is really just an honest estimate of hours multiplied by a rate you can live on — plus a cushion for the stuff that always goes sideways.

So the math underneath both models is the same. Start with the annual income you need, subtract the unpaid reality (admin, sick days, the gaps between clients, the self-employment costs you cover yourself), and divide by the billable hours you can realistically sell — not the 2,000 a salaried job assumes. If you’ve never run that, an hourly rate calculator gets you a defensible floor in a couple of minutes. Once you have that floor, flat-fee quoting stops being a guess: estimate the hours, apply your rate, add a buffer, and you’ve got your number.

One caution applies to both models, and it isn’t optional: the income you quote is not the income you keep. What you owe in tax, and how self-employment income is treated, varies a lot from one country to the next — and sometimes by region within a country. Treat every figure here as a pre-tax estimate only. Before you bank on any take-home number, check your actual obligations against your local tax authority’s official guidance or with a qualified accountant. Don’t build your pricing around a rate you haven’t run the tax math on.

The rule for choosing on each job

When a new job lands, ask one question first: can I see the finish line?

Lean hourly when:

  • The scope is genuinely unknown — debugging, “audit our setup,” open-ended consulting, “help us figure out what we need.”
  • The work is ongoing, like a retainer where tasks shift week to week.
  • The client keeps changing direction, and you’d otherwise be re-quoting every few days.
  • It’s a brand-new type of work for you, so any time estimate would be a wild guess.

Lean project-based when:

  • The deliverable is concrete enough to write down in a sentence or two.
  • You’ve done something similar before and your time estimate is trustworthy.
  • The client wants budget certainty (most do).
  • You’re fast at this particular task and want to be paid for the result, not penalized for being quick.

When a job sits on the fence — clear-ish scope, but a nervous, change-prone client — a common middle path is to scope the predictable part as a flat fee and bill anything outside that boundary hourly. Put the boundary in the agreement in plain language: “Includes X, Y, Z and two rounds of revision; work beyond this is billed at [your rate]/hour.” That one sentence heads off most scope-creep arguments before they start, and it lets you hand a client the certainty they want without quietly funding their changing mind.

You don’t have to be a purist about any of this. The freelancers who get paid well tend to be the ones who read each job on its own terms — hourly when the picture is murky, project when it’s sharp — and never feel guilty about switching between the two.

Try the matching tool