Union Standard (1.5x after 8 hours)
Straight Division (Flat Hourly)
California OT (1.5x after 8, 2x after 12)
How overtime is calculated to derive the base rate.
Rate Breakdown
Base Hourly Rate (1x):–
Overtime Rate (1.5x):–
Double Time Rate (2x):–
Effective "Pay Hours":–
Note: All overtime penalties (Meal Penalties, Forced Calls) should be calculated based on the $0.00 Base Hourly Rate.
Understanding Film Day Rates vs. Hourly Rates
In the film and television production industry, freelancers are typically hired on a "Day Rate." However, for payroll, union compliance, and overtime calculations, this day rate must be reverse-engineered into a specific Base Hourly Rate. Understanding this math is crucial for crew members to ensure they are being paid correctly for hours worked beyond their guarantee.
The "Guaranteed Hours" Confusion
When a producer hires a Key Grip or a Make-up Artist for "$600 for 12," it does not mean the hourly rate is $50 ($600 / 12). This is a common misconception.
Under most labor laws and union contracts (IATSE, Teamsters), overtime begins after 8 hours of work. Therefore, a "12-hour guarantee" actually consists of:
8 Hours at the Base Rate (1x)
4 Hours at Time-and-a-Half (1.5x)
Because of the overtime multiplier, you are not paid for 12 straight hours; you are paid for 14 "pay hours" (8 + 4×1.5). To find your true hourly rate, you divide your day rate by 14, not 12.
Formulas Used in this Calculator
This tool uses the standard industry logic to determine your rate:
1. Union Standard (1.5x after 8)
This is the most common structure for commercials and narrative productions.
Formula: Day Rate ÷ [8 + ((Guaranteed Hours – 8) × 1.5)]
2. California Overtime (Double Time after 12)
In jurisdictions like California, or under specific contracts, hours worked past 12 are paid at Double Time (2x).
Formula: Day Rate ÷ [8 + (4 × 1.5) + ((Guaranteed Hours – 12) × 2)]
3. Straight Division (Non-Union/Flat)
Occasionally, non-union productions may try to calculate rates via simple division. This is generally less favorable to the crew member if the day extends beyond the guarantee.
Formula: Day Rate ÷ Guaranteed Hours
Why Your Base Rate Matters
Knowing your exact base hourly rate ($/hr) is essential because all additional penalties are multipliers of this number. For example:
Meal Penalties: Often accruing every 30 minutes delayed.
6th & 7th Days: Often paid at 1.5x or 2x the base rate for the entire day.
Turnaround Encroachment: Paid at high multipliers of the base rate.
function calculateFilmRate() {
// 1. Get input values
var dayRateInput = document.getElementById('dayRate').value;
var guaranteedHoursInput = document.getElementById('guaranteedHours').value;
var structureInput = document.getElementById('overtimeStructure').value;
// 2. Validate inputs
if (dayRateInput === "" || isNaN(dayRateInput)) {
alert("Please enter a valid Day Rate amount.");
return;
}
var dayRate = parseFloat(dayRateInput);
var guaranteedHours = parseFloat(guaranteedHoursInput);
// 3. Logic variables
var payUnits = 0;
var baseHourlyRate = 0;
// 4. Calculate "Pay Units" based on structure
if (structureInput === "straight") {
// Simple Division
payUnits = guaranteedHours;
}
else if (structureInput === "union") {
// Standard: 1x for first 8, 1.5x after
if (guaranteedHours <= 8) {
payUnits = guaranteedHours;
} else {
var straightHours = 8;
var otHours = guaranteedHours – 8;
payUnits = straightHours + (otHours * 1.5);
}
}
else if (structureInput === "california") {
// CA: 1x for first 8, 1.5x for next 4, 2x after 12
if (guaranteedHours <= 8) {
payUnits = guaranteedHours;
} else if (guaranteedHours <= 12) {
payUnits = 8 + ((guaranteedHours – 8) * 1.5);
} else {
// More than 12 hours
var straightHours = 8;
var otHours = 4; // hours from 8 to 12
var dtHours = guaranteedHours – 12;
payUnits = straightHours + (otHours * 1.5) + (dtHours * 2.0);
}
}
// 5. Calculate Rates
// Avoid division by zero
if (payUnits === 0) payUnits = 1;
baseHourlyRate = dayRate / payUnits;
var otHourlyRate = baseHourlyRate * 1.5;
var dtHourlyRate = baseHourlyRate * 2.0;
// 6. Display Results
document.getElementById('baseHourlyResult').innerHTML = '$' + baseHourlyRate.toFixed(2) + ' /hr';
document.getElementById('otHourlyResult').innerHTML = '$' + otHourlyRate.toFixed(2) + ' /hr';
document.getElementById('dtHourlyResult').innerHTML = '$' + dtHourlyRate.toFixed(2) + ' /hr';
document.getElementById('payHoursResult').innerHTML = payUnits.toFixed(2) + ' Pay Hours';
document.getElementById('baseRateDisplay').innerHTML = baseHourlyRate.toFixed(2);
// Show results area
document.getElementById('resultsArea').style.display = 'block';
}