Reverse Mortgage Rate Calculator

Freelance Hourly Rate Calculator

Note: 100% is unrealistic; most freelancers spend 30-40% on admin/marketing.

Your Recommended Rate


How to Determine Your Freelance Hourly Rate

Setting your freelance rate is one of the most critical business decisions you will make. Unlike a traditional salary, your hourly rate must cover more than just your time; it must account for taxes, health insurance, software licenses, equipment, and the "unbillable" hours spent on accounting and marketing.

Understanding the Calculation

This calculator uses a "Bottom-Up" approach to ensure you meet your financial goals. Here is the logic behind the numbers:

  • Gross Revenue Requirement: We first calculate how much you need to earn before taxes to keep your desired take-home pay. If you want $60,000 and have a 25% tax rate, you actually need $80,000 in profit.
  • Business Overhead: We add your annual expenses (rent, software, hardware) to the gross revenue.
  • Billable Hours: We assume a standard 260-day work year (52 weeks x 5 days). We subtract your desired vacation and sick days. We then multiply by 8 hours per day.
  • Efficiency Factor: No freelancer is billable 100% of the time. You must account for time spent on emails, invoicing, and finding new clients. A realistic billable ratio is usually between 50% and 70%.

Example Calculation

Imagine you want to take home $70,000 annually. You have $400 in monthly expenses ($4,800/year) and estimate a 25% tax rate. You want 25 days off (vacation + holidays) and expect to spend 60% of your time on billable work.

1. Pre-tax profit needed: $70,000 / 0.75 = $93,333
2. Total revenue needed: $93,333 + $4,800 = $98,133
3. Working days: 260 – 25 = 235 days
4. Total work hours: 235 * 8 = 1,880 hours
5. Billable hours: 1,880 * 0.60 = 1,128 hours
6. Result: $98,133 / 1,128 = $87.00 per hour

Pro Tips for Freelancers

  1. Value-Based Pricing: Once you know your minimum hourly rate, consider charging per project based on the value delivered, rather than just hours worked.
  2. Raise Rates Annually: Inflation and increased expertise mean your rates should go up by at least 5-10% every year.
  3. The "PITA" Factor: For difficult clients or rush jobs, don't be afraid to add a 20% premium to your base rate.
function calculateFreelanceRate() { var targetIncome = parseFloat(document.getElementById("targetIncome").value); var monthlyExpenses = parseFloat(document.getElementById("monthlyExpenses").value); var taxRate = parseFloat(document.getElementById("taxRate").value); var vacationDays = parseFloat(document.getElementById("vacationDays").value); var billableRatio = parseFloat(document.getElementById("billableRatio").value); if (isNaN(targetIncome) || isNaN(monthlyExpenses) || isNaN(taxRate) || isNaN(vacationDays) || isNaN(billableRatio)) { alert("Please fill in all fields with valid numbers."); return; } // 1. Calculate Gross Revenue Needed var annualExpenses = monthlyExpenses * 12; var taxDecimal = taxRate / 100; // Formula: Net = Gross * (1 – Tax) -> Gross = Net / (1 – Tax) var grossRequiredForProfit = targetIncome / (1 – taxDecimal); var totalAnnualRevenueNeeded = grossRequiredForProfit + annualExpenses; // 2. Calculate Billable Hours var standardWorkDaysYear = 260; // 52 weeks * 5 days var actualWorkDays = standardWorkDaysYear – vacationDays; var potentialWorkHours = actualWorkDays * 8; var actualBillableHours = potentialWorkHours * (billableRatio / 100); // 3. Final Hourly Rate if (actualBillableHours <= 0) { alert("Your vacation days exceed working days, or billable ratio is zero."); return; } var hourlyRate = totalAnnualRevenueNeeded / actualBillableHours; var formattedRate = hourlyRate.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2}); // Display Results var resultDiv = document.getElementById("rateResult"); var finalRateDisplay = document.getElementById("finalRate"); var breakdownDisplay = document.getElementById("rateBreakdown"); finalRateDisplay.innerHTML = "$" + formattedRate + " / hr"; breakdownDisplay.innerHTML = "To net $" + targetIncome.toLocaleString() + " after taxes and cover $" + annualExpenses.toLocaleString() + " in expenses, you need to bill " + Math.round(actualBillableHours) + " hours per year."; resultDiv.style.display = "block"; resultDiv.scrollIntoView({ behavior: 'smooth', block: 'nearest' }); }

Leave a Comment