Time Card Calculator
Enter your clock-in and clock-out times for each day of the week, and this free time card calculator totals your hours automatically. It handles overnight shifts, deducts unpaid lunch breaks, applies overtime rules, and shows results in both hh:mm and decimal hours — ready to paste into payroll. Nothing to install, no signup, and your entries stay in your browser.
| Day | Time in | Time out | Break (min) | Total |
|---|---|---|---|---|
| Mon | --:-- | |||
| Tue | --:-- | |||
| Wed | --:-- | |||
| Thu | --:-- | |||
| Fri | --:-- | |||
| Sat | --:-- | |||
| Sun | --:-- |
Totals update as you type. Entries are saved in your browser only. Nothing is uploaded.
How to use this time card calculator
Enter clock-in and clock-out times for each day of the week. Overnight shifts are handled automatically — clocking out earlier than you clocked in rolls the shift into the next day.
Enter unpaid break or lunch minutes for each day, or tick “Breaks are paid” to keep them in the total.
Optionally choose an overtime rule (40h/week federal or California daily rules) and enter an hourly rate to see gross pay.
Read each day's total in the right-hand column and the grand total below the table, in h:mm or decimal hours.
Frequently asked questions
How do I calculate hours worked on a time card?
Subtract the clock-in time from the clock-out time for each day, subtract any unpaid breaks, then add the days together. This calculator does all three steps for you and converts the result to decimal hours for payroll.
How do I handle an overnight shift?
Just enter the times as they happened — for example, in at 10:00 PM and out at 6:00 AM. When the clock-out time is earlier than the clock-in time, the calculator treats it as ending the next day.
What is 8 hours and 30 minutes in decimal?
8.50 hours. Divide the minutes by 60 (30 ÷ 60 = 0.50) and add them to the hours. The calculator shows both formats at once.
Is my data saved anywhere?
Your entries are stored only in your own browser (localStorage) so they survive a page refresh. Nothing is sent to a server.