To reach your goal, your minimum hourly rate should be:
How to Calculate Your Hourly Rate as a Freelancer
Setting your freelance rate is one of the most critical decisions in your professional journey. Unlike a traditional job, your hourly rate must cover more than just your time; it must account for taxes, insurance, software subscriptions, and the "unbillable" time spent on marketing and administration.
The Core Formula
The math behind a sustainable freelance business follows this logic:
Total Annual Billable Hours: Billable Weeks × Billable Hours Per Week
Minimum Hourly Rate: Total Revenue Needed / Total Annual Billable Hours
Why Billable Hours Are Not Total Hours
A common mistake for new freelancers is assuming a 40-hour billable week. In reality, freelancers spend 25% to 50% of their time on non-billable tasks like sending invoices, prospecting for clients, and learning new skills. If you work 40 hours total, you might only bill for 20-25 hours.
Example Calculation Breakdown
Expense Type
Annual Estimate
Desired Salary
$70,000
Software & Subscriptions
$1,200
Health Insurance
$4,800
Hardware/Office Supplies
$2,000
Total Needed (Pre-Tax)
$78,000 + Taxes
Pricing Strategies to Consider
While the calculator gives you a "floor" rate, you should also consider Value-Based Pricing. If a project takes you 5 hours but generates $50,000 in revenue for the client, charging a flat fee higher than your hourly rate is often appropriate. Use your calculated hourly rate as the absolute minimum you can afford to accept to keep your business solvent.
function calculateFreelanceRate() {
var salary = parseFloat(document.getElementById('desiredSalary').value);
var expenses = parseFloat(document.getElementById('annualExpenses').value);
var tax = parseFloat(document.getElementById('taxRate').value);
var weeklyHours = parseFloat(document.getElementById('billableHours').value);
var vacation = parseFloat(document.getElementById('vacationWeeks').value);
if (isNaN(salary) || isNaN(expenses) || isNaN(tax) || isNaN(weeklyHours) || isNaN(vacation)) {
alert("Please enter valid numbers in all fields.");
return;
}
if (tax >= 100) {
alert("Tax rate must be less than 100%.");
return;
}
if (vacation >= 52) {
alert("Vacation weeks must be less than 52.");
return;
}
// 1. Calculate Gross Revenue Needed (including tax buffer)
var netNeeded = salary + expenses;
var taxMultiplier = 1 – (tax / 100);
var grossRevenueNeeded = netNeeded / taxMultiplier;
// 2. Calculate Billable Time
var workingWeeks = 52 – vacation;
var totalAnnualHours = workingWeeks * weeklyHours;
if (totalAnnualHours <= 0) {
alert("Total billable hours must be greater than zero.");
return;
}
// 3. Final Rate
var hourlyRate = grossRevenueNeeded / totalAnnualHours;
// Display
var resultDiv = document.getElementById('freelance-result');
var rateSpan = document.getElementById('finalRate');
var breakdownSpan = document.getElementById('breakdownText');
rateSpan.innerHTML = "$" + hourlyRate.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2}) + " / hour";
breakdownSpan.innerHTML = "To earn a net profit of $" + salary.toLocaleString() +
", you need to generate a total of $" + Math.round(grossRevenueNeeded).toLocaleString() +
" in gross revenue annually across " + totalAnnualHours + " billable hours.";
resultDiv.style.display = 'block';
resultDiv.scrollIntoView({ behavior: 'smooth', block: 'nearest' });
}