Calculate Average Hourly Wage Multiple Rates

#average-wage-calculator-container { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; max-width: 800px; margin: 0 auto; padding: 20px; color: #333; line-height: 1.6; } .calculator-box { background: #f9f9f9; border: 1px solid #e0e0e0; border-radius: 8px; padding: 25px; box-shadow: 0 4px 6px rgba(0,0,0,0.05); margin-bottom: 40px; } .calc-header { text-align: center; margin-bottom: 25px; color: #2c3e50; } .input-row { display: flex; gap: 15px; margin-bottom: 15px; align-items: flex-end; flex-wrap: wrap; } .input-group { flex: 1; min-width: 140px; } .input-group label { display: block; margin-bottom: 5px; font-weight: 600; font-size: 0.9em; color: #555; } .input-group input { width: 100%; padding: 10px; border: 1px solid #ccc; border-radius: 4px; font-size: 16px; } .input-group input:focus { border-color: #0073aa; outline: none; box-shadow: 0 0 0 2px rgba(0,115,170,0.2); } .row-label { width: 100%; font-weight: bold; color: #0073aa; margin-bottom: 5px; border-bottom: 1px solid #ddd; padding-bottom: 2px; } button.calc-btn { background-color: #0073aa; color: white; border: none; padding: 12px 25px; font-size: 18px; border-radius: 4px; cursor: pointer; width: 100%; margin-top: 10px; transition: background-color 0.2s; } button.calc-btn:hover { background-color: #005177; } .results-area { margin-top: 25px; background: #fff; border: 1px solid #ddd; border-radius: 4px; padding: 20px; display: none; } .results-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; } .result-item { text-align: center; } .result-label { font-size: 0.9em; color: #666; margin-bottom: 5px; } .result-value { font-size: 1.4em; font-weight: bold; color: #2c3e50; } .result-highlight { grid-column: 1 / -1; background: #e6f3fa; padding: 15px; border-radius: 6px; border: 1px solid #bce0fd; margin-top: 10px; } .result-highlight .result-value { color: #0073aa; font-size: 2em; } .article-content h2 { color: #2c3e50; margin-top: 30px; font-size: 1.8em; } .article-content h3 { color: #444; margin-top: 20px; font-size: 1.4em; } .article-content ul { padding-left: 20px; } .article-content li { margin-bottom: 10px; } @media (max-width: 600px) { .input-row { flex-direction: column; gap: 10px; } .results-grid { grid-template-columns: 1fr; } }

Weighted Average Hourly Wage Calculator

Pay Rate 1 (e.g., Regular Pay)
Pay Rate 2 (e.g., Overtime 1.5x)
Pay Rate 3 (e.g., Holiday/Bonus)
Pay Rate 4 (e.g., Second Job)
Total Hours Worked
0
Total Gross Pay
$0.00
Weighted Average Hourly Wage
$0.00

How to Calculate Your Average Hourly Wage with Multiple Rates

Calculating your true hourly earnings can be tricky when you work at different pay rates throughout the week. Whether you are dealing with overtime shifts, earning shift differentials, or juggling multiple freelance gigs, a simple average calculation is often incorrect.

This calculator determines your weighted average hourly wage, which accurately reflects your earnings based on the amount of time spent at each specific pay rate.

Why the "Simple Average" is Wrong

A common mistake is to simply add the pay rates together and divide by the number of rates. This is incorrect because it ignores how many hours you worked at each rate.

Incorrect Example:

  • Job A: $20/hr for 40 hours
  • Job B: $100/hr for 1 hour

If you just averaged the rates ($20 + $100) / 2, you would get $60/hr. This is misleading because you spent almost all your time at $20/hr. The true weighted average is actually around $21.95/hr.

The Weighted Average Formula

To calculate your average hourly wage correctly across multiple pay rates, use this formula:

Average Wage = (Total Gross Earnings) ÷ (Total Hours Worked)

Step-by-Step Calculation:

  1. Calculate Pay for Each Rate: Multiply the hourly rate by the hours worked for that specific rate.
  2. Sum Gross Earnings: Add up the total pay from all rates.
  3. Sum Total Hours: Add up all the hours worked across all rates.
  4. Divide: Divide the Total Gross Earnings by the Total Hours.

Common Use Cases

  • Overtime Calculation: Blending your regular rate with time-and-a-half (1.5x) or double-time (2x) hours.
  • Freelancers: Determining your effective hourly rate when you charge different clients different prices.
  • Shift Differentials: Calculating earnings when night shifts or weekends pay a premium over base pay.
  • Tipped Employees: Averaging base hourly wages with varying tipped hours (provided you convert tips to an hourly equivalent).

Example Calculation

Let's say you worked the following schedule in a single week:

  • Standard: 40 hours at $25.00/hr
  • Overtime: 10 hours at $37.50/hr

1. Calculate Earnings:
(40 × $25.00) = $1,000
(10 × $37.50) = $375

2. Totals:
Total Pay = $1,375
Total Hours = 50

3. Final Result:
$1,375 ÷ 50 hours = $27.50 / hr average

function calculateWeightedWage() { // Initialize totals var totalHours = 0; var totalPay = 0; // Helper function to process each row function processRow(rateId, hoursId) { var rateInput = document.getElementById(rateId); var hoursInput = document.getElementById(hoursId); var rate = parseFloat(rateInput.value); var hours = parseFloat(hoursInput.value); // Only calculate if both inputs are valid numbers if (!isNaN(rate) && !isNaN(hours) && hours > 0) { totalHours += hours; totalPay += (rate * hours); } } // Process all 4 rows processRow('rate1', 'hours1'); processRow('rate2', 'hours2'); processRow('rate3', 'hours3'); processRow('rate4', 'hours4'); // Get display elements var hoursDisplay = document.getElementById('totalHoursDisplay'); var payDisplay = document.getElementById('totalPayDisplay'); var avgDisplay = document.getElementById('averageWageDisplay'); var resultArea = document.getElementById('results'); // Calculate Average var averageWage = 0; if (totalHours > 0) { averageWage = totalPay / totalHours; } // Update DOM hoursDisplay.innerHTML = totalHours.toFixed(2); payDisplay.innerHTML = '$' + totalPay.toLocaleString('en-US', {minimumFractionDigits: 2, maximumFractionDigits: 2}); avgDisplay.innerHTML = '$' + averageWage.toLocaleString('en-US', {minimumFractionDigits: 2, maximumFractionDigits: 2}); // Show results resultArea.style.display = "block"; }

Leave a Comment