Determine exactly what you need to charge to meet your income goals.
The take-home pay you want after taxes and expenses.
Software, hardware, internet, insurance, etc.
Hours actually spent on client work (exclude admin tasks).
Vacation, sick days, and holidays.
Self-employment tax + income tax estimation.
Extra buffer for savings or business growth.
Gross Revenue Needed:–
Total Taxes (Est.):–
Total Billable Hours / Year:–
Minimum Hourly Rate:–
How to Calculate Your Freelance Hourly Rate
One of the biggest challenges for freelancers, consultants, and independent contractors is determining the right price for their services. Unlike a salaried employee, a freelancer must account for non-billable time, business expenses, self-employment taxes, and lack of paid benefits. This Freelance Hourly Rate Calculator helps you reverse-engineer your rate based on your lifestyle needs and financial goals.
Why You Can't Just Use Your Old Hourly Wage
Many new freelancers make the mistake of taking their previous salary and dividing it by 2,080 (the standard number of work hours in a year). This approach often leads to burnout and financial struggle because it ignores:
Unpaid Time: You aren't paid for marketing, invoicing, or finding clients.
Overhead: You must pay for your own laptop, software licenses, and health insurance.
Taxes: Employers usually pay half of FICA taxes; freelancers pay the full 15.3% self-employment tax plus income tax.
Understanding the Inputs
To get an accurate result from the calculator above, consider the following definitions:
1. Desired Annual Net Income
This is your "take-home" pay. Think of this as the salary you would want deposited into your personal bank account to cover rent, food, and personal savings.
2. Billable Hours vs. Actual Hours
If you work 40 hours a week, you likely only spend 25-30 hours on client work. The rest is administration. Only input the hours you can actually invoice.
3. The "Weeks Off" Factor
Freelancers don't get paid time off (PTO). If you plan to take 2 weeks of vacation, 1 week for sick days, and 1 week for holidays, enter "4". The calculator adjusts your rate so you earn enough during your working weeks to cover your time off.
The Formula Behind the Calculation
Our calculator uses a comprehensive formula to ensure all your bases are covered:
((Target Net Income + Expenses) / (1 – Tax Rate)) * (1 + Profit Margin) / Total Billable Hours
By factoring in taxes as a divisor, we calculate the Gross Revenue required to leave you with your target net income after the government takes its share.
Tips for Increasing Your Rate
Specialization: Generalists compete on price; specialists compete on value.
Retainers: Offer a slight discount for guaranteed monthly hours to stabilize cash flow.
Value-Based Pricing: Eventually, move away from hourly billing to project-based pricing to stop trading time for money.
function calculateRate() {
// 1. Get Input Values
var targetSalary = parseFloat(document.getElementById("targetSalary").value);
var annualExpenses = parseFloat(document.getElementById("annualExpenses").value);
var billableHoursPerWeek = parseFloat(document.getElementById("billableHours").value);
var weeksOff = parseFloat(document.getElementById("weeksOff").value);
var taxRate = parseFloat(document.getElementById("taxRate").value);
var profitMargin = parseFloat(document.getElementById("profitMargin").value);
// 2. Validation
if (isNaN(targetSalary) || targetSalary < 0) {
alert("Please enter a valid Target Salary.");
return;
}
if (isNaN(annualExpenses) || annualExpenses < 0) {
annualExpenses = 0;
}
if (isNaN(billableHoursPerWeek) || billableHoursPerWeek <= 0) {
alert("Please enter valid Billable Hours per week.");
return;
}
if (isNaN(weeksOff) || weeksOff < 0) {
weeksOff = 0;
}
if (isNaN(taxRate) || taxRate < 0) {
taxRate = 0;
}
if (isNaN(profitMargin)) {
profitMargin = 0;
}
// 3. Calculation Logic
// Calculate Working Weeks
var workingWeeks = 52 – weeksOff;
if (workingWeeks = 1) {
alert("Tax rate cannot be 100% or more.");
return;
}
var baseNeed = targetSalary + annualExpenses;
var grossRevenueNeeded = baseNeed / (1 – taxDecimal);
// Add Profit Margin (Markup on top of gross needed)
grossRevenueNeeded = grossRevenueNeeded * (1 + profitDecimal);
// Calculate Taxes
var totalTaxes = grossRevenueNeeded – (grossRevenueNeeded / (1 + profitDecimal)) + ((grossRevenueNeeded / (1 + profitDecimal)) * taxDecimal);
// Simplified: Taxes = Gross – (Net + Expenses + ProfitAmount)
// Actually, let's keep it simple for display:
var taxesAmount = grossRevenueNeeded * taxDecimal;
// *Correction on tax logic for display consistency*:
// If Gross = 100, Tax = 25%. You keep 75.
// My formula above: Gross = Target / 0.75.
// So Tax Amount = Gross – Target – Expenses (roughly, ignoring profit margin complexity for a second)
// Let's stick to: Gross * TaxRate = Tax Amount.
var hourlyRate = grossRevenueNeeded / totalBillableHours;
// 4. Update UI
// Format currency
var formatter = new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD',
minimumFractionDigits: 0,
maximumFractionDigits: 0,
});
var rateFormatter = new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD',
minimumFractionDigits: 2,
maximumFractionDigits: 2,
});
document.getElementById("resGrossRevenue").innerHTML = formatter.format(grossRevenueNeeded);
document.getElementById("resTaxes").innerHTML = formatter.format(grossRevenueNeeded * taxDecimal); // Approximate tax portion
document.getElementById("resHours").innerHTML = Math.round(totalBillableHours).toLocaleString();
document.getElementById("resHourlyRate").innerHTML = rateFormatter.format(hourlyRate);
// Show result box
document.getElementById("result-box").style.display = "block";
// Scroll to results
document.getElementById("result-box").scrollIntoView({behavior: "smooth"});
}