Skip to main content
aibizhub
Hand-written methodology As of 2026-04-24

How Freelance Rate + Capacity Planner works

What the tool assumes, what data it pulls from, and what it cannot tell you.

Education · General business information, not legal, tax, or financial advice. Editorial standards Sponsor disclosure Corrections

1. Scope

The Freelance Rate + Capacity Planner converts a target annual take-home income into hourly, day, and project rates that clear cost-of-doing-business, taxes, and realistic utilisation, with an optional safety buffer. It is a pure cost-plus planning model. It does not pull wage data or estimate market-clearing rates for your specific client segment; published wage tables are offered only as an external sanity-check you look up yourself.

2. Inputs and outputs

Inputs: target annual net income, annual overhead (software, insurance, workspace), effective tax rate, a safety buffer (%), working weeks per year, working hours per week, billable utilisation (%), and a project size in hours. You net out PTO, holidays, and admin from working weeks yourself; there is no BLS occupation-code input.

Outputs: required gross revenue (with and without the buffer), billable hours per year, minimum-viable / target / stretch hourly rates, an 8-hour day rate, a project rate, and a utilisation-sensitivity table (required rate at 50 / 60 / 70 / 80 / 90% utilisation). It does not surface a BLS wage percentile.

Engine source: src/lib/freelance-rate/engine.ts.

3. Formula / scoring logic

tax_factor          = 1 - tax_rate_percent / 100
revenue_no_buffer   = (target_net_income + annual_overhead) / tax_factor
revenue_with_buffer = revenue_no_buffer * (1 + buffer_percent / 100)

# working_weeks_per_year is a direct input (you net out PTO/holidays/admin)
available_hours     = working_weeks_per_year * working_hours_per_week
billable_hours      = available_hours * (billable_utilization_percent / 100)

minimum_hourly      = revenue_no_buffer   / billable_hours
target_hourly       = revenue_with_buffer / billable_hours
stretch_hourly      = target_hourly * 1.15
day_rate            = target_hourly * 8              # standard 8-hour day
project_rate        = target_hourly * project_hours

4. Assumptions

  • Utilisation is the biggest lever. Published freelance benchmarks (Upwork, MBO Partners, academic labour-economics studies) cluster at 60–70% for established independents; new freelancers often sit 30–50%. Overestimating utilisation is the single biggest driver of rate under-pricing.
  • Overhead is comprehensive. Software licences, liability insurance, professional-services (accountant, legal), workspace, subscriptions, equipment depreciation. Excluding any of these guarantees a rate that doesn't cover true cost.
  • Tax rate is effective, not marginal. US freelancers should include self-employment tax (see Freelance Tax Estimator) on top of federal/state income tax. EU freelancers need to account for VAT registration thresholds and social-insurance contributions.
  • Day rate uses an 8-hour day. The day rate is target hourly × 8, not a billable-hours-per-day figure. If you bill fewer productive hours per day, treat the day rate as a ceiling and quote from the hourly instead.
  • Single currency / jurisdiction. Cross-border freelancing (working from low-COL jurisdiction for high-COL clients) is out of scope — enter the rate-earning-jurisdiction's cost structure.

5. Data sources

The planner ingests no external data — every figure is user-entered. These public BLS OEWS wage tables are offered only as a self-serve sanity-check: they show where an equivalent employee salary sits, and freelancers typically charge well above it. The tool does not read them or compute a percentile.

Each link points to the "current" BLS page, which always redirects to the latest published year.

6. Known limitations

  • BLS OEWS reports employee wages, not freelance rates. Freelancers typically charge 1.5–2.5× the equivalent employee hourly wage to cover taxes, benefits, and capacity risk. Use the BLS anchor as a floor, not a target.
  • Utilisation is a forecast. A rate set at 65% utilisation that actually realises 45% misses the income target by ≈ 30%. Track actuals and re-run quarterly.
  • No geographic cost-of-living adjustment. A $100/hr rate means different things in Manhattan and rural Tennessee. The tool does not adjust.
  • Emerging-market data is thin. Outside the US/EU, published wage medians are patchy, so even the external sanity-check anchor may be unavailable. The rate-floor math still works from your own income, overhead, tax, and utilisation figures.
  • No client-segment differentiation. Agency rates, direct-to-startup rates, and direct-to-enterprise rates often differ 2–3×. Segment explicitly and run the tool once per segment.

7. Reproducibility

Input
target_net = $120,000, overhead = $20,000, effective_tax = 30%, buffer = 0%, working_weeks = 46 (52 less 4 PTO and 2 holiday), hours_per_week = 40, utilisation = 65%.

Expected output
revenue_no_buffer ≈ $200,000 (= $140,000 / 0.70). available_hours = 1,840, billable_hours ≈ 1,196. With buffer 0%, minimum and target rates coincide: hourly ≈ $167.22, day rate ≈ $1,337.76 (× 8 hours), stretch ≈ $192.30/hr (× 1.15).

8. Change log

  • 2026-04-24methodology page first published.

Worked example

Run live against the same engine this site ships (/engines/freelance-rate-capacity-planner.js). The inputs and outputs below are recomputed on every build and independently re-verified in CI — they are never hand-authored.

Input

tool
freelance_rate_capacity
target_annual_income
140000
annual_business_overhead
22000
tax_rate_percent
28
buffer_percent
15
working_weeks_per_year
46
working_hours_per_week
40
billable_utilization_percent
65
project_hours
35

Output

minimumViableHourlyRate
188.13
targetHourlyRate
216.35
stretchHourlyRate
248.8
requiredHourlyRate
216.35
requiredDayRate
1730.8
requiredProjectRate
7572.25
billableHoursPerYear
1196
utilizationSensitivity[0].utilizationPercent
50
utilizationSensitivity[0].requiredHourlyRate
281.25
utilizationSensitivity[1].utilizationPercent
60
utilizationSensitivity[1].requiredHourlyRate
234.37
utilizationSensitivity[2].utilizationPercent
70
utilizationSensitivity[2].requiredHourlyRate
200.89
utilizationSensitivity[3].utilizationPercent
80
utilizationSensitivity[3].requiredHourlyRate
175.78
utilizationSensitivity[4].utilizationPercent
90
utilizationSensitivity[4].requiredHourlyRate
156.25
warnings[0]
Required hourly rate is high. Re-check scope, utilization, and target assumptions.
assumptionsEcho.annualRevenueNeededNoBuffer
225000
assumptionsEcho.annualRevenueNeededWithBuffer
258750
assumptionsEcho.availableHoursPerYear
1840
assumptionsEcho.billableUtilizationPercent
65
assumptionsEcho.taxRatePercent
28

Frequently asked questions

What does the Freelance Rate + Capacity Planner do?
It converts a target annual take-home income into an hourly or daily rate that clears cost-of-doing-business, taxes, and realistic utilisation, anchoring rates to US BLS OEWS wage data where available with an EU fallback via Eurostat LCI.
Does it predict market rates?
No. It is a cost-plus planning model — it does not estimate market-clearing rates for your specific client segment.
Can I verify it with a worked example?
Yes. With target_net = $120,000, overhead = $20,000, effective_tax = 30%, pto_weeks = 4, holidays = 2, hours_per_week = 40, utilisation = 65%: working_weeks = 46, billable_hours ≈ 1,196, hourly_rate ≈ $167.22/hr, day_rate ≈ $1,337.76/day (hourly × 8).