Most freelancers set their rate by looking at what others charge and picking something nearby. This feels safe. It also creates a systematic problem: you end up pricing based on what the market accepts, not what your business actually needs.
Here is the maths that most rate-setting advice skips.
The utilisation problem
If you work 40 hours a week, you are not billing 40 hours a week.
A realistic breakdown looks something like this:
- Client calls and emails: 4-6 hours
- Proposals and pitching: 3-5 hours
- Admin, invoicing, accounting: 2-3 hours
- Learning and keeping skills current: 2-4 hours
That leaves roughly 22-28 billable hours out of 40. Call it 55-65% utilisation.
A developer billing $40/hr with 20 real billable hours per week is effectively running a ~$40k/year business before taxes and downtime. That number tends to surprise people when they see it written out.
So if you want to earn $80,000 a year, you cannot divide by 2,000 hours and call it your rate. You need to divide by your actual billable hours.
$80,000 / 1,200 billable hours = $66.67/hr minimum
Before taxes. Before slow months. Before the occasional client who costs you two weeks of work and pays nothing.
The slow month multiplier
Freelance income is not linear. If you plan for 48 weeks of full utilisation and you actually get 38, your effective rate just dropped 21% below what you calculated.
The fix is to build slow months into your rate from the start, not to adjust when they happen.
A more conservative model:
- Target: 46 billable weeks per year (not 52)
- Utilisation: 60% of working hours
- Effective billable hours: 46 x 40 x 0.60 = 1,104 hours
For an $80,000 annual target: $80,000 / 1,104 = $72.46/hr before tax
Add 25-30% for self-employment tax and the minimum viable rate is around $90-95/hr. Depending on your market and experience level, that number may feel impossibly high. That's exactly why so many freelancers end up overworked and underpaid — the maths doesn't change because the market is uncomfortable with it.
Why this matters for developers specifically
Frontend and backend developers are particularly prone to undercharging because the market has a wide range and clients often anchor to offshore rates.
That anchor is irrelevant to your cost structure. An offshore developer at $25/hr has different fixed costs, tax obligations, and market positioning. Comparing your rate to theirs is like a restaurant comparing its prices to street food in a different country.
Your rate is a function of your costs and your utilisation. Not of what someone else charges somewhere else.
A simple starting framework
- Calculate your target annual income (include savings, not just survival)
- Estimate your real billable hours (utilisation x working weeks x hours/week)
- Divide income by hours to get your pre-tax minimum
- Add your effective tax rate
- Add 15-20% as a buffer for slow months and difficult clients
That number is your floor. Anything below it usually means the business only works if you absorb the volatility yourself.
I got tired of doing this maths manually every time someone asked me about freelance pricing, so I built a small calculator for different roles: ratecalculator.xyz
No signup, no email, just the numbers.
Top comments (1)
This mathematical reality check should be pinned on every transitioning freelancer's wall. The difference between "working hours" and "actual billable hours" (the utilization rate) is easily the hardest lesson developers learn when going solo.
Your point about the occasional client who costs you weeks of work and pays nothing which is the exact variable that destroys this formula.
If a developer's real billable cap is only 22–28 hours a week, then even a minor project leak is catastrophic. If you waste 5 of those precious hours arguing over out-of-scope features, or if a client defaults on a payment, your effective hourly rate instantly plummets below your survival line.
Your ratecalculator.xyz tool is a friction-free way to find that baseline rate. Once freelancers find that floor, the next challenge is preventing margin leakage.
That’s actually why I built FreelancerGuard.fyi. I wanted to build the protective guardrails around the exact math you laid out:
To protect your non-billable pitching time: Our Red Flag Detector screens client inquiry messages so you don't waste precious hours chasing clients who are likely to ghost, delay payments, or devalue your work.
To protect your billable execution time: Our Scope Creep Email Generator helps you draft warm, firm boundary-setting responses so you actually get paid for "change requests" instead of absorbing the cost of extra work yourself.
Finding your minimum viable rate is step one. Protecting those limited billable hours from boundary-pushing clients is step two. Great share, Nuno!