{
    "name": "Time Card Calculator",
    "url": "https://calculators.geekmidst.com/calculators/time-card-calculator",
    "markdown": "https://calculators.geekmidst.com/calculators/time-card-calculator.md",
    "category": "Date, time & lifestyle",
    "description": "Enter start, end and break times for each day of the week to total your hours, split regular and overtime hours and estimate gross pay.",
    "summary": "Fill in each day you worked. The calculator totals the week, treats hours above your weekly overtime threshold as overtime, and multiplies by your rates.",
    "also_called": [
        "Timesheet calculator",
        "Weekly hours calculator"
    ],
    "applies_to": "Worldwide",
    "last_updated": "2026-10-29",
    "computation": "Results are computed in the visitor’s browser on the HTML page. This API describes the calculator; it does not compute results.",
    "inputs": [
        {
            "name": "mon_start",
            "label": "Monday start",
            "type": "time",
            "default": "09:00",
            "optional": true
        },
        {
            "name": "mon_end",
            "label": "Monday end",
            "type": "time",
            "default": "17:30",
            "optional": true
        },
        {
            "name": "mon_break",
            "label": "Monday unpaid break",
            "type": "number",
            "default": "30",
            "unit": "min",
            "optional": true
        },
        {
            "name": "tue_start",
            "label": "Tuesday start",
            "type": "time",
            "default": "09:00",
            "optional": true
        },
        {
            "name": "tue_end",
            "label": "Tuesday end",
            "type": "time",
            "default": "17:30",
            "optional": true
        },
        {
            "name": "tue_break",
            "label": "Tuesday unpaid break",
            "type": "number",
            "default": "30",
            "unit": "min",
            "optional": true
        },
        {
            "name": "wed_start",
            "label": "Wednesday start",
            "type": "time",
            "default": "09:00",
            "optional": true
        },
        {
            "name": "wed_end",
            "label": "Wednesday end",
            "type": "time",
            "default": "17:30",
            "optional": true
        },
        {
            "name": "wed_break",
            "label": "Wednesday unpaid break",
            "type": "number",
            "default": "30",
            "unit": "min",
            "optional": true
        },
        {
            "name": "thu_start",
            "label": "Thursday start",
            "type": "time",
            "default": "09:00",
            "optional": true
        },
        {
            "name": "thu_end",
            "label": "Thursday end",
            "type": "time",
            "default": "17:30",
            "optional": true
        },
        {
            "name": "thu_break",
            "label": "Thursday unpaid break",
            "type": "number",
            "default": "30",
            "unit": "min",
            "optional": true
        },
        {
            "name": "fri_start",
            "label": "Friday start",
            "type": "time",
            "default": "09:00",
            "optional": true
        },
        {
            "name": "fri_end",
            "label": "Friday end",
            "type": "time",
            "default": "19:30",
            "optional": true
        },
        {
            "name": "fri_break",
            "label": "Friday unpaid break",
            "type": "number",
            "default": "30",
            "unit": "min",
            "optional": true
        },
        {
            "name": "sat_start",
            "label": "Saturday start",
            "type": "time",
            "default": "",
            "optional": true
        },
        {
            "name": "sat_end",
            "label": "Saturday end",
            "type": "time",
            "default": "",
            "optional": true
        },
        {
            "name": "sat_break",
            "label": "Saturday unpaid break",
            "type": "number",
            "default": "",
            "unit": "min",
            "optional": true
        },
        {
            "name": "sun_start",
            "label": "Sunday start",
            "type": "time",
            "default": "",
            "optional": true
        },
        {
            "name": "sun_end",
            "label": "Sunday end",
            "type": "time",
            "default": "",
            "optional": true
        },
        {
            "name": "sun_break",
            "label": "Sunday unpaid break",
            "type": "number",
            "default": "",
            "unit": "min",
            "optional": true
        },
        {
            "name": "rate",
            "label": "Hourly rate",
            "type": "number",
            "default": "20",
            "optional": true
        },
        {
            "name": "ot_after",
            "label": "Overtime after (hours per week)",
            "type": "number",
            "default": "40",
            "unit": "h",
            "optional": true
        },
        {
            "name": "ot_multiplier",
            "label": "Overtime pay multiplier",
            "type": "number",
            "default": "1.5",
            "unit": "×",
            "optional": true
        },
        {
            "name": "currency",
            "label": "Currency",
            "type": "currency",
            "default": "USD"
        }
    ],
    "outputs": [
        {
            "key": "total_hours",
            "label": "Total hours (decimal)",
            "format": "number"
        },
        {
            "key": "total_hm",
            "label": "Total in hours and minutes",
            "format": "text"
        },
        {
            "key": "regular_hours",
            "label": "Regular hours",
            "format": "number"
        },
        {
            "key": "overtime_hours",
            "label": "Overtime hours",
            "format": "number"
        },
        {
            "key": "regular_pay",
            "label": "Regular pay",
            "format": "currency"
        },
        {
            "key": "overtime_pay",
            "label": "Overtime pay",
            "format": "currency"
        },
        {
            "key": "total_pay",
            "label": "Gross pay",
            "format": "currency"
        },
        {
            "key": "days_worked",
            "label": "Days worked",
            "format": "integer"
        }
    ],
    "formula": {
        "text": "Daily hours = End − Start − Break;  Overtime = max(0, Weekly total − Threshold);  Pay = Regular × Rate + Overtime × Rate × Multiplier",
        "variables": {
            "Threshold": "weekly hours after which overtime applies",
            "Multiplier": "overtime premium, for example 1.5 for “time and a half”"
        }
    },
    "worked_example": {
        "inputs": {
            "mon_start": "09:00",
            "mon_end": "17:30",
            "mon_break": "30",
            "tue_start": "09:00",
            "tue_end": "17:30",
            "tue_break": "30",
            "wed_start": "09:00",
            "wed_end": "17:30",
            "wed_break": "30",
            "thu_start": "09:00",
            "thu_end": "17:30",
            "thu_break": "30",
            "fri_start": "09:00",
            "fri_end": "19:30",
            "fri_break": "30",
            "sat_start": "",
            "sat_end": "",
            "sat_break": "",
            "sun_start": "",
            "sun_end": "",
            "sun_break": "",
            "rate": "20",
            "ot_after": "40",
            "ot_multiplier": "1.5",
            "currency": "USD"
        },
        "steps": [
            "Monday to Thursday: 09:00–17:30 minus 30 min = 8 h each, 32 h.",
            "Friday: 09:00–19:30 minus 30 min = 10 h, so the week is 42 h.",
            "Overtime = 42 − 40 = 2 h at 20 × 1.5 = 30 an hour = 60.",
            "Regular pay = 40 × 20 = 800, so gross pay = 860."
        ],
        "result": "A 42-hour week at 20 an hour with time-and-a-half after 40 hours pays 860 before deductions."
    },
    "interpretation": "Gross pay is before tax and other deductions. Overtime rules differ by country, state and contract: some use a daily threshold or different multipliers, so enter the figures that apply to you.",
    "assumptions": [
        "Overtime is counted on weekly hours above the threshold you enter.",
        "Each shift is shorter than 24 hours; an end time earlier than the start runs past midnight."
    ],
    "limitations": [
        "Daily overtime, double time, shift premiums and tax withholding are not calculated."
    ],
    "rules": null,
    "faqs": [
        {
            "question": "Is overtime always paid after 40 hours?",
            "answer": "No. The 40-hour week is common (for example under the US Fair Labor Standards Act for non-exempt employees), but rules vary by country, state and employment contract. Enter your own threshold."
        },
        {
            "question": "How do I record a day off?",
            "answer": "Leave its start and end times blank; that day is skipped."
        }
    ],
    "sources": [],
    "related": [
        {
            "name": "Hours Calculator",
            "url": "https://calculators.geekmidst.com/calculators/hours-calculator"
        },
        {
            "name": "Time Calculator",
            "url": "https://calculators.geekmidst.com/calculators/time-calculator"
        },
        {
            "name": "Date Calculator",
            "url": "https://calculators.geekmidst.com/calculators/date-calculator"
        }
    ],
    "disclaimer": null,
    "publisher": "GM¹X CalcVerse"
}