Calculate exactly what you need to charge to meet your financial goals and cover your business costs.
Your Recommended Hourly Rate:
$0.00
How to Use the Freelance Hourly Rate Calculator
Setting your freelance rate is one of the most stressful parts of starting a business. If you set it too low, you'll burn out working long hours for little pay. If you set it too high without justifying your value, you might lose clients. This calculator uses a "bottom-up" approach to ensure you cover your lifestyle, your business overhead, and your tax obligations.
Understanding the Inputs
Desired Annual Net Salary: This is the take-home pay you want for your lifestyle (rent, food, savings).
Monthly Business Expenses: Total up your software subscriptions (Adobe, Slack, Zoom), hardware costs, office rent, and insurance.
Billable Hours: Remember that "working hours" aren't "billable hours." You spend time on admin, marketing, and sales. Most freelancers can only bill 20–30 hours in a 40-hour work week.
Tax Rate: Freelancers must pay self-employment tax. Depending on your location, this is often 20% to 35% of your gross profit.
A Realistic Example
Let's say Sarah wants to take home $65,000 a year. She spends $400 a month on expenses (hosting, Canva, coworking space). She wants 4 weeks of vacation and can realistically bill 25 hours per week. Assuming a 25% tax rate, the math looks like this:
Always consider adding a 10% "buffer" to your calculated rate. This covers the time you spend on unpaid client calls, minor project revisions, and professional development. If the calculator suggests $78/hour, consider charging $85 or $90 to ensure you have a safety net.
function calculateFreelanceRate() {
var salary = parseFloat(document.getElementById("desiredSalary").value);
var monthlyExpenses = parseFloat(document.getElementById("monthlyExpenses").value);
var billableHoursPerWeek = parseFloat(document.getElementById("billableHours").value);
var vacationWeeks = parseFloat(document.getElementById("vacationWeeks").value);
var taxRate = parseFloat(document.getElementById("taxRate").value);
// Validation
if (isNaN(salary) || isNaN(monthlyExpenses) || isNaN(billableHoursPerWeek) || isNaN(vacationWeeks) || isNaN(taxRate)) {
alert("Please fill in all fields with valid numbers.");
return;
}
if (taxRate >= 100) {
alert("Tax rate must be less than 100%.");
return;
}
if (vacationWeeks >= 52) {
alert("Vacation weeks must be less than 52.");
return;
}
// Calculations
var annualExpenses = monthlyExpenses * 12;
var netIncomeNeeded = salary + annualExpenses;
// Adjust for taxes: Gross = Net / (1 – TaxRate)
var taxDecimal = taxRate / 100;
var grossIncomeNeeded = netIncomeNeeded / (1 – taxDecimal);
var workingWeeks = 52 – vacationWeeks;
var totalAnnualBillableHours = workingWeeks * billableHoursPerWeek;
if (totalAnnualBillableHours <= 0) {
alert("Total billable hours must be greater than zero.");
return;
}
var hourlyRate = grossIncomeNeeded / totalAnnualBillableHours;
// Display Results
var resultDiv = document.getElementById("calculatorResult");
var rateOutput = document.getElementById("hourlyRateOutput");
var breakdownOutput = document.getElementById("breakdownOutput");
rateOutput.innerHTML = "$" + hourlyRate.toFixed(2);
breakdownOutput.innerHTML = "To reach your net goal of $" + salary.toLocaleString() + ", you need a gross revenue of $" + Math.round(grossIncomeNeeded).toLocaleString() + " per year. This covers $" + annualExpenses.toLocaleString() + " in business overhead and $" + Math.round(grossIncomeNeeded – netIncomeNeeded).toLocaleString() + " in taxes.";
resultDiv.style.display = "block";
resultDiv.scrollIntoView({ behavior: 'smooth', block: 'nearest' });
}