How to Calculate Your Rate per Hour

Freelance & Contractor Hourly Rate Calculator

Calculate what you need to charge to meet your financial goals.

$
The "take-home" amount you want after business expenses.
$
Software, insurance, hardware, office, etc.
52 weeks minus vacation, sick days, and holidays.
Hours spent on client work (excludes admin/marketing).

Recommended Hourly Rate

$0.00


How to Calculate Your Rate Per Hour

Transitioning from a traditional salary to a freelance or contractor model requires a shift in how you view your earnings. You aren't just getting paid for your time; you are running a business. This means your hourly rate must cover your personal needs, your business overhead, and your "unbillable" time.

The Hourly Rate Formula

To find your ideal rate, we use the "Bottom-Up" approach:

Hourly Rate = (Annual Desired Salary + Annual Business Expenses) / (Weeks per Year × Billable Hours per Week)

Key Factors to Consider

  • The "Unbillable" Trap: Most freelancers spend 20-30% of their time on administration, marketing, and invoicing. If you work 40 hours a week, you might only "bill" for 25-30 of them.
  • Time Off: Remember to subtract weeks for vacation, sick leave, and public holidays. Typically, using 47 or 48 weeks is more realistic than 52.
  • Taxes: Unlike an employee, you are responsible for both the employer and employee portions of social security or local income taxes. Many experts suggest adding an extra 20-30% to your rate to cover this.

Example Calculation

If you want to earn a $70,000 salary and your expenses (laptop, coffee, coworking, software) total $5,000, your total revenue goal is $75,000. If you plan to work 48 weeks a year and bill 20 hours per week:

$75,000 / (48 × 20) = $75,000 / 960 = $78.13 per hour.

function calculateHourlyRate() { var targetSalary = parseFloat(document.getElementById('targetSalary').value); var annualExpenses = parseFloat(document.getElementById('annualExpenses').value); var billableWeeks = parseFloat(document.getElementById('billableWeeks').value); var billableHours = parseFloat(document.getElementById('billableHours').value); var resultDiv = document.getElementById('rateResult'); var finalRateDisplay = document.getElementById('finalRate'); var breakdownText = document.getElementById('breakdownText'); if (isNaN(targetSalary) || isNaN(annualExpenses) || isNaN(billableWeeks) || isNaN(billableHours) || billableWeeks <= 0 || billableHours <= 0) { alert('Please enter valid positive numbers for all fields.'); return; } var totalRevenueRequired = targetSalary + annualExpenses; var totalAnnualHours = billableWeeks * billableHours; var hourlyRate = totalRevenueRequired / totalAnnualHours; finalRateDisplay.innerHTML = '$' + hourlyRate.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2}); breakdownText.innerHTML = 'To earn $' + targetSalary.toLocaleString() + ' net per year, you need to generate $' + totalRevenueRequired.toLocaleString() + ' in total revenue across ' + totalAnnualHours + ' billable hours.'; resultDiv.style.display = 'block'; resultDiv.scrollIntoView({ behavior: 'smooth', block: 'nearest' }); }

Leave a Comment