Post

Calculate a freelance hourly rate you can defend

Back into a defendable rate from income target, real billable hours, and overhead. Utilization traps, raise notice script, and a quarterly review cadence.

Use it

Rate worksheet

Target income divided by hours you can actually sell, then a cushion you can explain. Planning math, not tax or legal advice.

Walkthrough and traps: Calculate a freelance hourly rate you can defend.

On this page

The first rate I quoted was a salary divided by 2,080

The first website I built for a paying client, I quoted 35 euros an hour. I had a yearly figure in my head, roughly what a decent developer job paid, and I divided it by 40 hours and 52 weeks. That came to about 35. It felt fair, slightly modest even, and I was proud of how scientific it looked.

The job was a small business site estimated at 40 hours, so 1,400 euros. It took 62. A content delay pushed half the build into a second month, the client wanted two extra rounds on the homepage, and I spent an evening on hosting setup I had never mentioned in the quote. Divide 1,400 by 62 and you get about 22.60 an hour. Then I noticed something worse. In that same month I had spent days on a proposal that went nowhere, on invoicing, and on learning a form plugin. None of it was on any invoice.

The mistake was not the number 35. It was the denominator. Dividing by 2,080 assumes every working hour of every week gets sold, with no holidays, no admin, no sales, and no week where the client goes quiet. Nobody running a one-person practice has that year. I've rebuilt my rate several times since, and the method below is what I use now. It is not clever. It just refuses to lie about hours.

A rate you can defend is one you can recompute in front of someone: from the gross you need, the hours you can actually sell, and one cushion for the friction that never appears on an invoice. If your calendar is full and your account is not, fix the hours before you touch the sticker.

If your calendar is full and your account is not, fix the hours before you touch the sticker.

Step 1: Pick one gross target for one period

Write one figure in one period, yearly or monthly, not both. Include living costs, the tools you pay for, and a reserve for slow months. Do not start from a competitor's public rate. You have no idea what their hours, costs, or client mix look like, and copying their number imports all of that blind.

The worksheet at the top of this page runs the next three steps for you. Its default is example A: a 72,000 gross yearly target, 46 working weeks, 22 billable hours a week, and a 15 percent cushion. If you change the period to a month, it resets the week count, so you do not end up dividing a monthly target by a year of weeks. Treat every figure here as planning math, not as tax or legal advice.

Before the target, name your minimum viable revenue: living costs, whatever you already set aside for tax, and the tools you cannot work without. That is the floor. The income target sits above it and pays for savings, gear, and the occasional week off without panic. As a sense check, a 72,000 yearly target is 6,000 a month, so a three-month contract at that pace is 18,000 gross.

Put known costs in the target. Put uncertainty, like late payment and absorbed revisions, in the cushion later. Mixing them is how people end up double counting one thing and forgetting another. How large a cash reserve should be is its own question, covered in how much buffer a freelancer needs.

Step 2: Count the hours you can sell, not the hours at your desk

This is where my 2,080 fell apart, and it is where most rates go wrong. Start with weeks. Fifty-two weeks, minus holidays, public holidays, a short shutdown at the end of the year, and a few days for being ill, often lands near 46. If you will take longer breaks, use the weeks you will actually work.

Then estimate billable hours per week. Billable means time you can put on an invoice without an argument. My own weeks land nearer 22 than 40, and when I compare notes with other freelancers the honest figure is rarely much above 25. Forty hours at a desk are not forty hours on an invoice. Use last quarter's typical week, the median, not the heroic one where everything went right.

Here is a worked week with the assumptions spelled out. You work 45 hours in total. Admin, sales, and learning average 12 of them. That leaves 33 hours that could be billed before life gets involved. Hold about 20 percent of that as schedule buffer for feedback delays and overrun: 20 percent of 33 is 6.6, call it 7. Sellable hours land near 26 a week. The rate formula needs 26, or your tracked median, in the denominator. Dividing by 45 hours times 46 weeks, which is 2,070, prices a year that does not exist.

Overbooking is the same error in the calendar instead of the spreadsheet. If you book 35 billable hours in a week when you reliably deliver 28, you get rush work, late evenings, and a client who notices the quality dip before you do. Quote start dates from the capacity you can keep up. Why the gap between the desk clock and the invoice clock is normal, not a personal failing, is in billable hours lower than working hours.

TrapWhat you seeWhat to change
Pricing as if every hour sellsThe rate looks reasonable and income still missesUse last quarter's real billable average
Raising the rate while utilization fallsThe calendar stays busy and the balance does notCut a non-billable leak or drop weak work
Ignoring unpaid revisionsThe effective rate falls after the invoiceCap rounds in the scope and price the extra
Matching a salary one to oneBenefits, idle time, and sales risk stay invisibleCompare with loaded cost and your real hours
Free quick callsThey eat the billable ceilingA batched call window and a written status

If last quarter averaged 18 billable hours a week and the plan says 28, recompute at 18. The plan is the error, not your discipline. Trying harder rarely produces ten extra billable hours a week unless a whole category of work leaves the week entirely.

Step 3: Divide by those hours, then cushion once

Divide the gross target by honest billable hours. That quotient is your floor. Then add one cushion, somewhere between 10 and 20 percent, for revisions you absorb, payment delay, and scope that drifts. Apply it to the target or to the rate, not to both, or you have quietly cushioned twice and will wonder why leads keep balking.

Example A: annual target

Assumptions: a 72,000 gross target, 46 working weeks, 22 billable hours a week, and a 15 percent cushion. These are the numbers the worksheet at the top of the page starts with.

Billable hours in the year are 46 times 22, which is 1,012. The floor is 72,000 divided by 1,012, which is 71.15, about 71 euros an hour. The cushion is 71.15 times 0.15, about 10.67. Add it and you get about 82 euros an hour. You land in the same place if you cushion the target instead: 72,000 times 1.15 is 82,800, and 82,800 divided by 1,012 is 81.82, still about 82. Pick one place to apply the 15 percent and stick to it.

Now the version I used to run without admitting it. If you secretly believe you will bill 35 hours every week, 46 times 35 is 1,610 hours, and 72,000 divided by 1,610 is about 45 euros an hour. That sticker looks friendlier and misses the target every single year, because you never had 1,610 sellable hours. Rerun the math at 22 before you publish 45. If the worksheet is set to a month, divide by the monthly hours it shows. Do not reuse 1,012.

Diagram · 16:9rate formula as gross target divided by working weeks times weekly billable hours, then one 15 percent cushion, from 72000 and 46 weeks and 22 hours to about 82 euros, labeled equation, ratio 16:9, diagram

Example B: monthly cash need

Assumptions: you need 5,000 euros in the month, the month has four working weeks, and 80 billable hours is realistic at 20 a week. The floor is 5,000 divided by 80, which is 62.50 euros an hour.

If last quarter actually averaged 60 billable hours a month, the honest floor is 5,000 divided by 60, which is 83.33. The floor jumps above 83 just by telling the truth about hours. Quote from the 60-hour month. Treat an 80-hour month as a pleasant surprise.

Example C: part-time freelance

Assumptions: 24,000 of side income, 20 weeks of active client work, 12 billable hours a week while active. Hours are 20 times 12, which is 240. The floor is 24,000 divided by 240, which is 100 euros an hour. A 10 percent cushion adds 10 euros, so the quote is about 110.

People are often startled that part-time work needs a higher rate, not a lower one. Sales calls, onboarding, and switching between a day job and client work eat a larger share of a small week. If you leave 46 weeks in the formula out of habit, 46 times 12 is 552 hours, and 24,000 divided by 552 is about 43 euros an hour. You miss the target by more than half, because you are only active for 20 weeks. The employed week does not donate its evenings for free.

Say the number like a fact

Once you have it, say it as a sentence, not a question. "My rate is 82 euros an hour. That covers focused delivery. Admin and meetings outside the agreed rhythm are scoped separately."

Photograph · 3:2a freelancer on a video call stating an hourly rate as a finished sentence, showing the number said like a fact, natural photo, ratio 3:2, stock

A rising tone at the end invites a haggle. I learned this on calls where I heard myself say "around 60, if that works?" and watched the other person start negotiating before I had finished. Unpaid extras shrink what you actually collect faster than any sticker discount: cheap freelance rates shrink real income.

Step 4: Compare the sticker rate with the effective rate

The sticker is what the proposal says. The effective rate is the money you collected divided by the hours the work actually took, including the ones you wrote off. My first site had a 35 euro sticker and a 22.60 effective rate. The gap is where the real information lives.

A worked month, assumptions stated. You billed 90 hours at 80 euros and still missed your cash target, because about 30 more hours went on unpaid scope creep and quick calls. Invoiced revenue is 90 times 80, which is 7,200. Hours actually spent are 120. The effective rate is 7,200 divided by 120, which is 60 euros. The sticker said 80. Those 30 unpaid hours are more than a full week of sellable time given away.

Repair in this order:

  1. Put an hours cap and a revision count on the next contract.
  2. Track non-billable hours as their own category for one month, so the 30-hour leak has a name and a client attached.
  3. Raise the rate only once the effective rate is close to the sticker.

Use a practical tolerance. If effective lags the sticker by more than about 15 percent, find the leak before you celebrate a raise. At an 82 euro sticker, a 15 percent lag means you are collecting about 70. That is roughly the example A floor with the cushion stripped off. You are working at the uncushioned number and telling yourself it is 82.

The salary comparison trips people up in a similar way. Say a comparable job pays 60,000 and the employer's real cost, with benefits and overhead, is about 25 percent more: 75,000. Divide that by a full-time year of about 1,760 working hours and the employee costs about 42.60 an hour. It is tempting to treat that as your benchmark. But you do not sell 1,760 hours, you sell about 1,012. To collect the same 75,000 on 1,012 hours you need about 74 euros an hour. The hourly numbers look far apart. The yearly money is the same.

Worksheet for the monthly effective rate

Worksheet for the monthly effective rate

Month:
Revenue collected (same definition every month):
Billable hours invoiced:
Write-off hours (unpaid revisions, free calls, absorbed overage):
Hours actually worked on delivery:
Sticker rate:
Effective on invoiced hours = revenue / billable hours invoiced
Effective after write-offs = revenue / (invoiced hours + write-off hours)
Gap = sticker minus effective after write-offs
One leak to fix before any raise:

Fill it from your invoices and an hour log at the end of each month, and keep one revenue definition, invoiced or received, so months are comparable. It takes about fifteen minutes once the log exists. The first time I filled it in honestly, the write-off line was the longest number on the page.

Another monthly version, assumptions stated and not an industry average. Monthly costs, plus your tax set-aside, plus a modest profit you need collected: 6,500 euros. Honest sellable hours in the month, after admin, sales, and a sick buffer: 110, roughly 25 a week. The floor before cushion is 6,500 divided by 110, about 59 euros an hour. A 20 percent cushion takes the quote floor to about 71. If a lead wants 55, 110 hours collect 6,050 and miss 6,500 by 450. Cut scope until the hours you would spend still clear the floor, or walk away.

List every client currently below your floor, with an end date for that arrangement. A permanent exception becomes your real rate without anyone deciding it. The same goes for subcontracting: if you pay someone 50 euros an hour and bill the client 50, your own coordination, review, and client management are priced at zero.

Decide which pricing shape carries the rate

The hourly figure is an input. The shape is how you attach it to a promise, and the shape matters as much as the number.

ShapeUse it whenWatch for
HourlyThe scope moves and the work is research-heavyCreep with no change order
Fixed feeThe deliverable is defined and you can verify doneDependencies you never priced
Day rateThe day is on-site or a workshopA day that runs past the hours you assumed
RetainerAccess is steady and boundedUnlimited quick questions

Hourly fits when you cannot see the end. Quote the cushioned rate and cap the hours. A sentence clients can accept: "Includes up to 15 hours a month and two revision rounds on the agreed deliverables. Additional hours at the same rate with 48 hours of notice."

Build a fixed fee from the same math, not from a round number that feels right. If the work is 40 hours at 82 euros, the fee is 3,280. Quote that when the scope is bounded. When the client adds a second audience or a new page type halfway through, price the extra hours or remove something of equal size. Had I done this on that first site, the two extra homepage rounds would have been a short change note instead of a free week.

A day rate is the cushioned hourly times the hours you will genuinely work. Six focused hours at 82 is 492. Eight at 82 is 656. Write the six hours into the proposal, so a nine-hour workshop day is visibly over. A retainer needs a written hour cap or a response window, or it turns into a second job with a flat fee. A hybrid that works well for builds is a fixed discovery week followed by a capped build. Where each shape breaks is covered in fixed price vs hourly when each works.

Rush work that displaces other clients can carry a 25 percent surcharge: 82 times 1.25 is 102.50. Discounts run the other way, and fast. Thirty percent off 82 is about 57, well under the 71 floor, so a discount has to remove hours, not just euros. A portfolio piece or a favour needs a written hour cap, or every one of those hours pays zero. And do not improvise a tax percentage on a sales call. Say you will confirm the figures in writing.

Decide when to raise and what notice to send

Raise when the calendar stays full, when scope has grown into bigger work, when your costs have moved, or when minimum viable revenue is no longer met at your real hours. Resentment is a reason to open the worksheet, not a new rate by itself. If you only reprice when you are annoyed, you are already late.

Send the notice without an apology tour:

I am updating my rate to X for work starting after [date]. Current projects in flight stay at the contracted rate through completion. Retainer renewals on [date] use the new rate. I am happy to discuss scope if the budget is fixed.

WhoWhat you do
New clientsNew rate on the next proposal
Existing clientsWritten notice and an effective date. You may honour one more cycle
In-flight fixed projectsHonour the bid. Raise on the next statement of work

A usable raise has a date, a number, and a scope sentence. Update your proposal text the same day, so the next quote does not go out at the old figure by accident.

Check what the raise does with your real hours, not your hopeful ones. Moving from 82 to 90 adds 8 euros on 1,012 hours, about 8,100 a year. But if your billable week slips to 16 hours, 46 times 16 is 736 hours, and 736 times 90 is 66,240, which misses 72,000. A higher rate on fewer hours can still leave you short. The hours are half the formula.

Step 5: Build a week that can produce the hours

The sticker only survives if the week still contains the billable blocks you divided by. Protect the denominator as carefully as the number. Here is a week built to hold about 22 billable hours at an 82 euro rate.

DayWhat you protectWhat you cap
MondayMorning delivery: two 45-minute slices on the primary deliverableClient chat only after lunch
TuesdayA standing call window of 60 minutesNo ad-hoc quick calls
WednesdayMorning deep deliveryAdmin in a batch from 16:00 to 16:30
ThursdayReviews and revisions inside the scoped roundsAn extra round is a change order
FridayThe invoice and a short status with one askUnpaid polish you invented after the scope was met

Four delivery days at five billable hours each is 20. The last two sold hours have to come from somewhere inside those caps, usually the call window or the scoped review time on Thursday. Do not invent Friday polish to fill the gap. It feels productive and pays nothing.

The shape of a single day is in structure a remote workday, and how long each focus slice should be for client work is in choose focus length for real client work. Late client reviews are a cost you either buffer or price: client feedback delays and pricing.

Keep the rate on a calendar, not in your memory

A rate you never revisit slowly becomes a pay cut. Costs creep, your work gets better, and your hours shift. I keep three checks in the calendar so the number does not depend on remembering.

WhenWhat you checkWhat you leave with
Monthly, 20 minutesBillable hours against the hours in the formulaA yes or no: did the denominator hold?
Quarterly, about 15 minutesBilled versus plan, one expense line, any client below the floorOne leak to fix, or a note that the floor still holds
Yearly, for example January, about 90 minutesExported billed hours, expense changes, the formula rerunA new quote rate and the renewals you will notify

Leave the January session with an actual quote rate and a list of renewal notices, not a vague intention. Rerun sooner if a large new cost appears, or if three months in a row sit near 90 percent of your planned hours. At 22 planned hours a week, that is about 20.

Decide to quote, cut scope, or walk

Before the next proposal goes out, find your row. A discount with a hope attached is not one of the options.

SituationDecision
The lead wants a price below the floor after you used honest hoursCut scope until the budget clears the floor, or walk
Effective rate lagged the sticker by more than 15 percent last monthFix the leak before you raise the sticker
The calendar is full and minimum viable revenue is still missedRaise on the next statement of work and notify retainers, or drop the lowest-fit client
The plan says 35 billable hours and delivery is 22Rerun the floor at 22 and quote from that number

If I could hand one sentence to the version of me who quoted 35 euros on that first site, it would be this: the rate is only as honest as the hours underneath it. Get the denominator right, cushion once, check the effective rate every month, and the number you say out loud stops being a guess you hope nobody questions.

End of this piece

Writer

PrimedEcho

Independent notes on remote work, focus, and freelance practice. About this site.

All posts