Fixed-Price vs Hourly Billing for Freelancers: How to Choose
The honest trade-offs between fixed-price and hourly billing, how to compare them with your effective hourly rate, and when each model actually wins.
Ask ten freelancers whether they bill hourly or fixed-price and you’ll get ten confident answers, half of them contradicting each other. The truth is that neither model is better in the abstract. They fail in different places, and the one that suits you depends on how predictable your work is and how good your estimates are. Here’s how to think about it without the dogma.
What each model actually does to your money
Hourly billing is simple. You log time, you multiply by your rate, you send an invoice. The client carries the risk of the project taking longer, because every extra hour is an extra line item. The downside is that your income is capped by the clock. If you get faster, you earn less, which is a strange thing to punish.
Fixed-price flips the risk. You quote a number up front, and you keep whatever’s left after the work is done. Finish in half the time you expected and your effective rate doubles. Blow the estimate and you eat the difference. Fixed-price rewards speed and experience, and it punishes bad estimates without mercy.
So the real question isn’t “which is fairer.” It’s “who should carry the risk of this particular project, given how well I can predict it.”
Compare them with one number: your effective hourly rate
Headline numbers lie. A $8,000 fixed bid sounds better than $90/hour until you know how many hours the bid actually took. The only honest way to compare the two models is to reduce both to the same unit:
effective hourly rate = fee ÷ actual hours worked
This is the number that tells you whether a project was good or bad, regardless of how you billed it. An hourly project at $90/hour earns you $90/hour, every time, by definition. A fixed project earns you whatever the math says after the fact, which could be $150 or $40.
The catch is the word actual. You have to know your real hours, including the unbilled ones: the revisions you didn’t charge for, the “quick call” that ran an hour, the rework. If you’re not tracking time on fixed-price work, you genuinely cannot tell whether the model is making you money. You can run any scenario through the effective hourly rate calculator to see the gap between your quoted rate and your real one.
A worked example: the bid that grew
Say you quote a fixed price of $11,200 for a project you estimate at 80 hours. On paper that’s 11,200 ÷ 80 = $140/hour, which sits comfortably above your target rate. You feel good about it.
Then reality arrives. The client’s requirements were vaguer than the kickoff call suggested. There are three rounds of revisions you didn’t scope. An integration takes two days instead of two hours. By the time you ship, you’ve worked 140 hours, not 80.
Your effective rate is now 11,200 ÷ 140 = $80/hour. You didn’t lose money, but you earned $80/hour on work you priced at $140/hour, and you spent 60 extra hours you can never bill again. Had the same project run hourly at $130/hour, you’d have invoiced 140 × 130 = $18,200. The fixed bid cost you $7,000 in upside, all of it absorbed by an estimate that was off by 75%.
That’s not an argument against fixed-price. It’s an argument for tracking your hours so you can see the leak, tighten your next estimate, and stop quoting blind. This is the exact trap that catches builders most often, which is why time tracking for freelance developers is built around watching the effective rate on fixed-bid work in real time.
When each model fits
Hourly tends to win when:
- The scope is genuinely unknown or likely to change (discovery, ongoing maintenance, “we’ll see where it goes”).
- The client keeps adding requests and you need a fair way to charge for them.
- You’re newer to a type of work and your estimates are still shaky.
Fixed-price tends to win when:
- You’ve done this kind of project enough times that your estimate is reliable.
- The deliverable is clearly defined and the client wants budget certainty.
- You’re efficient, and you’d rather be paid for the outcome than the hours.
The pattern underneath: bill hourly when the risk is high and you can’t price it, bill fixed when the risk is low and the upside is yours to keep. If your estimates aren’t there yet, the honest move is to charge hourly while you collect the data that makes good fixed bids possible later.
Hybrid models that take the edge off both
You don’t have to pick a pure version of either. The useful middle ground:
Capped scope. A fixed price for a clearly bounded deliverable, with the boundary written down. “Three page templates, two revision rounds each.” Anything past that is a separate quote. The client gets certainty, you get protection.
Change orders. When fixed-price work expands, you don’t silently absorb it. You pause, write a short note describing the new request and its price, and the client approves it before you proceed. This is the single biggest thing that keeps fixed bids profitable, and it’s only possible if you can point to the hours the original scope was costing you.
Hourly with a not-to-exceed cap. You bill by the hour but promise not to cross a ceiling without sign-off. The client gets a worst-case number, you keep the simplicity of logging time.
Every one of these depends on the same foundation. You need to know your real hours per project to set the cap, justify the change order, and check afterwards whether the deal actually worked. Pricing strategy without time data is just hoping.
Pick the model, then verify it
The choice between hourly and fixed-price matters less than whether you measure the result. Both models can be excellent or quietly terrible, and the only way to know which one you got is to compare your fee against the hours it really took. If you haven’t set your base rate yet, start with how to calculate your freelance hourly rate, then track every project against it.
CronLoom turns your logged time into your effective rate per client and per project, and flags the moment a fixed bid goes underwater — when it slips below the floor rate you set, while there’s still room to act. Try it free during early access, and it checks every project against your floor, not just the ones you remember to look at.
Put numbers to it
Every hour, accounted for.
You set a floor rate; CronLoom flags the clients and fixed bids that slip below it, and projects where the month lands.
Get started freeNo credit card · later flat €/$9