Setting the right freelance rate is one of the most critical steps in building a sustainable business. Many new freelancers make the mistake of simply matching their previous "employee" hourly wage, forgetting that as a freelancer, you are responsible for your own taxes, insurance, equipment, and non-billable administrative time.
The "Bottom-Up" Calculation Method
This calculator uses the bottom-up approach, which ensures your business covers all costs while providing you with your desired lifestyle. The formula is:
Non-Billable Hours: Remember that you won't spend 40 hours a week on client work. You must account for invoicing, prospecting, and learning. Most freelancers average 20–30 billable hours per week.
Business Expenses: Include software subscriptions (SaaS), hardware upgrades, health insurance, co-working space fees, and professional accounting services.
The Tax Gap: Unlike employees, you pay the full portion of self-employment taxes. It is generally recommended to add 20-30% on top of your final result to cover tax liabilities.
Profit Margin: Once you find your base rate, consider adding a 10-20% profit margin to allow your business to grow and handle unexpected downtime.
Example Scenario
If you want to earn a $80,000 salary with $10,000 in annual expenses, and you plan to work 25 billable hours per week for 48 weeks a year (allowing 4 weeks for vacation):
Total Revenue Needed: $90,000
Total Annual Billable Hours: 1,200 (25 hours × 48 weeks)
Hourly Rate: $75.00/hour
function calculateFreelanceRate() {
var salary = parseFloat(document.getElementById("desiredSalary").value);
var expenses = parseFloat(document.getElementById("businessExpenses").value);
var hoursPerWeek = parseFloat(document.getElementById("billableHours").value);
var vacation = parseFloat(document.getElementById("vacationWeeks").value);
var resultArea = document.getElementById("resultArea");
var finalRateDisplay = document.getElementById("finalRate");
var breakdownText = document.getElementById("breakdownText");
if (isNaN(salary) || isNaN(expenses) || isNaN(hoursPerWeek) || isNaN(vacation)) {
alert("Please enter valid numbers in all fields.");
return;
}
if (vacation >= 52) {
alert("Vacation weeks must be less than 52.");
return;
}
if (hoursPerWeek <= 0) {
alert("Billable hours must be greater than 0.");
return;
}
var totalRevenueNeeded = salary + expenses;
var billableWeeks = 52 – vacation;
var totalAnnualHours = billableWeeks * hoursPerWeek;
var hourlyRate = totalRevenueNeeded / totalAnnualHours;
// Calculate suggested rate including tax buffer (approx 25%)
var taxAdjustedRate = hourlyRate * 1.25;
finalRateDisplay.innerHTML = "$" + hourlyRate.toFixed(2);
breakdownText.innerHTML = "To reach your goal, you need to generate $" + totalRevenueNeeded.toLocaleString() + " in total annual revenue. Working " + hoursPerWeek + " billable hours over " + billableWeeks + " weeks per year gives you " + totalAnnualHours + " total billable hours. Pro Tip: To account for self-employment taxes and a small safety net, consider charging $" + taxAdjustedRate.toFixed(2) + " per hour.";
resultArea.style.display = "block";
resultArea.scrollIntoView({ behavior: 'smooth', block: 'nearest' });
}