How To.calculate Hourly Rate

Hourly Rate Calculator for Freelancers & Contractors .hr-calculator-container { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; max-width: 800px; margin: 0 auto; background: #fff; padding: 20px; border-radius: 8px; box-shadow: 0 2px 10px rgba(0,0,0,0.1); } .hr-calc-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; } @media (max-width: 600px) { .hr-calc-grid { grid-template-columns: 1fr; } } .hr-input-group { margin-bottom: 15px; } .hr-input-group label { display: block; margin-bottom: 5px; font-weight: 600; color: #333; } .hr-input-group input { width: 100%; padding: 10px; border: 1px solid #ddd; border-radius: 4px; font-size: 16px; box-sizing: border-box; } .hr-input-group .input-wrapper { position: relative; } .hr-input-group .prefix { position: absolute; left: 10px; top: 50%; transform: translateY(-50%); color: #666; } .hr-input-group .suffix { position: absolute; right: 10px; top: 50%; transform: translateY(-50%); color: #666; } .hr-input-group input.has-prefix { padding-left: 25px; } .hr-input-group input.has-suffix { padding-right: 30px; } .hr-btn { background-color: #2c3e50; color: white; border: none; padding: 12px 24px; font-size: 16px; border-radius: 4px; cursor: pointer; width: 100%; margin-top: 10px; transition: background-color 0.3s; } .hr-btn:hover { background-color: #34495e; } .hr-results { margin-top: 25px; background-color: #f8f9fa; padding: 20px; border-radius: 6px; border-left: 5px solid #27ae60; display: none; } .hr-result-item { display: flex; justify-content: space-between; align-items: center; margin-bottom: 10px; padding-bottom: 10px; border-bottom: 1px solid #eee; } .hr-result-item:last-child { border-bottom: none; margin-bottom: 0; padding-bottom: 0; } .hr-result-label { color: #555; font-size: 14px; } .hr-result-value { font-weight: 700; font-size: 18px; color: #2c3e50; } .hr-highlight { font-size: 24px; color: #27ae60; } .hr-article { margin-top: 40px; line-height: 1.6; color: #333; } .hr-article h2 { color: #2c3e50; border-bottom: 2px solid #eee; padding-bottom: 10px; } .hr-article h3 { color: #34495e; margin-top: 25px; } .hr-article ul { padding-left: 20px; } .hr-article li { margin-bottom: 10px; } .hr-tooltip { font-size: 0.8em; color: #7f8c8d; margin-top: 2px; }
$
Your goal take-home pay per year
$
Software, internet, insurance, etc.
%
Extra markup for growth & savings
Hours actually charged to clients
Vacation, sick days, and holidays
Total Revenue Goal (Annual): $0.00
Total Billable Hours (Annual): 0
Break-Even Rate: $0.00 / hr
Recommended Rate (+Margin): $0.00 / hr

How to Calculate Your Hourly Rate

Calculating a sustainable hourly rate is one of the most critical tasks for freelancers, consultants, and contractors. Unlike a salaried employee, your rate must cover not just your desired income, but also your taxes, overhead costs, and non-billable time (such as marketing and administration).

The Formula Breakdown

This calculator uses a reverse-engineering approach to determine what you need to charge clients to meet your financial goals. The core logic involves these steps:

  1. Determine Total Revenue Requirement: This adds your desired annual salary to your annual business expenses (Monthly Overhead × 12).
  2. Calculate Capacity: We calculate your total billable hours by subtracting weeks off (vacation, sick leave, holidays) from the standard 52-week year, then multiplying by your realistic billable hours per week.
  3. Break-Even Analysis: Dividing your Total Revenue Requirement by your Total Capacity gives you the minimum rate needed to keep the lights on and pay yourself.
  4. Profit Margin: Finally, we add a profit margin (typically 10-30%) to ensure business growth and a financial safety net.

Why You Should Charge for "Billable" Hours Only

A common mistake is dividing a desired salary by 2,080 (the standard 40-hour work week × 52 weeks). This is dangerous for freelancers because:

  • You cannot bill 40 hours a week consistently; administrative tasks, accounting, and sales take up 20-40% of your time.
  • You are not paid for vacation, sick days, or public holidays.
  • You must pay for your own equipment, software, and self-employment taxes.

By inputting realistic "Billable Hours" (usually 25-30 hours/week) and accounting for "Weeks Off," this calculator provides a rate that protects your income even when you aren't working every single hour of the day.

Example Calculation

If you want to earn a net income of $80,000, have $500/month in expenses, work 30 billable hours a week, and take 4 weeks off:

  • Total Expenses: $6,000 ($500 × 12)
  • Total Revenue Goal: $86,000
  • Working Weeks: 48 (52 – 4)
  • Total Billable Hours: 1,440 (48 × 30)
  • Base Rate: $59.72/hour

Adding a 20% profit margin brings the final recommended rate to approximately $71.66/hour.

function calculateRate() { // 1. Get Input Values var salary = parseFloat(document.getElementById('desiredSalary').value); var overhead = parseFloat(document.getElementById('monthlyOverhead').value); var profitMargin = parseFloat(document.getElementById('profitMargin').value); var weeklyHours = parseFloat(document.getElementById('billableHours').value); var weeksOff = parseFloat(document.getElementById('weeksVacation').value); // 2. Validate Inputs if (isNaN(salary) || salary < 0) salary = 0; if (isNaN(overhead) || overhead < 0) overhead = 0; if (isNaN(profitMargin) || profitMargin < 0) profitMargin = 0; if (isNaN(weeklyHours) || weeklyHours < 0) weeklyHours = 0; if (isNaN(weeksOff) || weeksOff < 0) weeksOff = 0; // 3. Perform Calculations var annualOverhead = overhead * 12; var totalRevenueGoal = salary + annualOverhead; var workingWeeks = 52 – weeksOff; // Prevent negative working weeks if (workingWeeks 0) { breakEvenRate = totalRevenueGoal / totalBillableHours; // Add profit margin (e.g., if 20%, multiply by 1.20) finalRate = breakEvenRate * (1 + (profitMargin / 100)); } // 4. Display Results document.getElementById('resultsArea').style.display = 'block'; document.getElementById('resultTotalRevenue').innerText = '$' + totalRevenueGoal.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2}); document.getElementById('resultTotalHours').innerText = totalBillableHours.toLocaleString(); document.getElementById('resultBreakEven').innerText = '$' + breakEvenRate.toFixed(2) + ' / hr'; document.getElementById('resultFinalRate').innerText = '$' + finalRate.toFixed(2) + ' / hr'; }

Leave a Comment