Calculation Overtime Rates Malaysia

Malaysia Overtime Rates Calculator .ot-calculator-container { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; max-width: 800px; margin: 0 auto; padding: 20px; background-color: #f9f9f9; border: 1px solid #e0e0e0; border-radius: 8px; } .ot-calc-header { text-align: center; margin-bottom: 30px; } .ot-calc-header h2 { color: #2c3e50; margin-bottom: 10px; } .ot-input-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin-bottom: 25px; } @media (max-width: 600px) { .ot-input-grid { grid-template-columns: 1fr; } } .ot-input-group { display: flex; flex-direction: column; } .ot-input-group label { font-weight: 600; margin-bottom: 5px; color: #444; font-size: 0.9em; } .ot-input-group input { padding: 10px; border: 1px solid #ccc; border-radius: 4px; font-size: 16px; } .ot-input-group input:focus { border-color: #3498db; outline: none; box-shadow: 0 0 5px rgba(52,152,219,0.3); } .ot-section-title { grid-column: 1 / -1; font-weight: bold; color: #2980b9; margin-top: 10px; border-bottom: 2px solid #ddd; padding-bottom: 5px; } .ot-btn-container { text-align: center; margin-top: 20px; } .calculate-btn { background-color: #e74c3c; color: white; padding: 12px 30px; border: none; border-radius: 5px; font-size: 18px; cursor: pointer; transition: background-color 0.3s; } .calculate-btn:hover { background-color: #c0392b; } .ot-results { margin-top: 30px; background-color: #fff; padding: 20px; border-radius: 6px; border-left: 5px solid #27ae60; display: none; box-shadow: 0 2px 5px rgba(0,0,0,0.05); } .result-row { display: flex; justify-content: space-between; margin-bottom: 10px; padding-bottom: 10px; border-bottom: 1px solid #eee; } .result-row.total { border-bottom: none; margin-top: 15px; font-weight: bold; color: #27ae60; font-size: 1.2em; } .result-value { font-weight: 700; color: #333; } .ot-article { margin-top: 40px; line-height: 1.6; color: #333; } .ot-article h3 { color: #2c3e50; margin-top: 25px; } .ot-article ul { margin-bottom: 20px; } .ot-article li { margin-bottom: 8px; } .highlight-box { background-color: #e8f6f3; padding: 15px; border-radius: 5px; border: 1px solid #a2d9ce; margin: 20px 0; }

Malaysia Overtime (OT) Rates Calculator

Calculate your overtime pay based on the Employment Act 1955 formulas.

Salary Information
Overtime Hours Worked
Ordinary Rate of Pay (ORP): RM 0.00
Hourly Rate of Pay (HRP): RM 0.00
Normal Day OT Pay (1.5x): RM 0.00
Rest Day OT Pay (2.0x): RM 0.00
Public Holiday OT Pay (3.0x): RM 0.00
Total Overtime Earnings: RM 0.00

Understanding Calculation of Overtime Rates in Malaysia

Calculating overtime (OT) in Malaysia is governed strictly by the Employment Act 1955. Whether you are an HR manager or an employee, understanding the correct formulas is essential to ensure compliance and fair compensation. This guide explains how to calculate overtime rates in Malaysia for employees covered under the Act (generally earning RM4,000 or below, or engaged in manual labor).

The Golden Formula: Ordinary Rate of Pay (ORP)
To calculate OT, you first need to determine the Ordinary Rate of Pay per day. The Act mandates a divisor of 26 days regardless of the actual working days in the month.

ORP = Monthly Salary / 26
Hourly Rate of Pay (HRP) = ORP / Normal Hours per Day (usually 8)

The Three Categories of Overtime Rates

In Malaysia, overtime rates vary depending on when the work is performed. There are three distinct multipliers applied to the Hourly Rate of Pay (HRP):

  • Normal Work Days (Rate 1.5x): Work performed in excess of normal hours (e.g., staying back after 6 PM). The formula is HRP × 1.5 × Hours Worked.
  • Rest Days (Rate 2.0x): Usually Saturdays or Sundays (depending on the company). Work performed on a rest day is calculated at a higher premium. The formula is HRP × 2.0 × Hours Worked.
  • Public Holidays (Rate 3.0x): Work performed on gazetted public holidays attracts the highest rate. The formula is HRP × 3.0 × Hours Worked.

What constitutes "Wages" for OT Calculation?

When calculating the Ordinary Rate of Pay, you must include the basic salary and any fixed allowances (e.g., fixed transport or mobile allowance). Variable allowances (like attendance incentives that fluctuate) are generally excluded from the base ORP calculation, though specific scenarios may vary based on case law.

Example Calculation

If an employee earns a basic salary of RM 2,600 with no fixed allowances and works 8 hours a day:

  1. ORP: RM 2,600 / 26 = RM 100 per day.
  2. HRP: RM 100 / 8 = RM 12.50 per hour.
  3. 2 Hours OT on a Tuesday (Normal Day): RM 12.50 × 1.5 × 2 = RM 37.50.
  4. 4 Hours OT on a Sunday (Rest Day): RM 12.50 × 2.0 × 4 = RM 100.00.
function calculateMalaysiaOT() { // 1. Get input values var salaryStr = document.getElementById('basicSalary').value; var allowanceStr = document.getElementById('fixedAllowance').value; var hoursNormalStr = document.getElementById('hoursNormal').value; var hoursRestStr = document.getElementById('hoursRest').value; var hoursPublicStr = document.getElementById('hoursPublic').value; var dailyHoursStr = document.getElementById('dailyHours').value; // 2. Parse values (handle empty inputs as 0) var salary = parseFloat(salaryStr) || 0; var allowance = parseFloat(allowanceStr) || 0; var hoursNormal = parseFloat(hoursNormalStr) || 0; var hoursRest = parseFloat(hoursRestStr) || 0; var hoursPublic = parseFloat(hoursPublicStr) || 0; var dailyHours = parseFloat(dailyHoursStr); // 3. Validation if (dailyHours <= 0 || isNaN(dailyHours)) { dailyHours = 8; // Default fallback } // 4. Calculate Base Rates (Employment Act 1955 Formula) // ORP is defined as Monthly Wages / 26 var totalMonthlyWage = salary + allowance; var orp = totalMonthlyWage / 26; var hrp = orp / dailyHours; // 5. Calculate OT Pay by Category var payNormal = hrp * 1.5 * hoursNormal; var payRest = hrp * 2.0 * hoursRest; var payPublic = hrp * 3.0 * hoursPublic; // 6. Calculate Total var totalPay = payNormal + payRest + payPublic; // 7. Display Results // Helper function for formatting currency function formatRM(val) { return "RM " + val.toLocaleString('en-MY', { minimumFractionDigits: 2, maximumFractionDigits: 2 }); } document.getElementById('displayORP').innerHTML = formatRM(orp); document.getElementById('displayHRP').innerHTML = formatRM(hrp); document.getElementById('payNormal').innerHTML = formatRM(payNormal); document.getElementById('payRest').innerHTML = formatRM(payRest); document.getElementById('payPublic').innerHTML = formatRM(payPublic); document.getElementById('totalOT').innerHTML = formatRM(totalPay); // Show the result div document.getElementById('otResult').style.display = 'block'; }

Leave a Comment