Free Employee Attendance Template for Excel (2026) — Calendar, PTO Balance, Auto-Holidays
TEMPLATE · BUSINESS · HR

Free Employee Attendance Template for Excel (2026)

A calendar-driven attendance tracker that defaults every workday to Present — you only log exceptions (PTO, Sick, WFH, Absent). Company holidays auto-apply, weekends grey out, and the PTO Balance Report rolls up used vs. remaining per person across any date range. Built in Excel with 540 formulas across 6 sheets — zero setup, works offline, no add-ins.

Download the Attendance Template

Free .xlsx download — no email required. Opens in Microsoft Excel, Excel Online, Google Sheets, and LibreOffice Calc.

Download employee-attendance-2026.xlsx

Excel 2007+ compatible · Also works in Google Sheets & LibreOffice

File size31 KB
Format.xlsx
LicenseFree — personal & commercial
Last updatedJanuary 2026
6Sheets included
540Live formulas
10US holidays pre-loaded
EXCEPTLog only, Present is default

Monthly Calendar — the showpiece

The calendar renders one row per employee, one column per day. Color-coded automatically: green Present, blue PTO, amber Sick, light-green WFH, red Absent, purple Holiday, grey weekends. Change the Year and Month input cells and the whole grid recalculates.

employee-attendance-2026.xlsx — Monthly Calendar
Monthly Calendar — January 2026
Year: 2026 · Month: 1 · 6 employees × 31 days = 186 formula-driven cells
Employee 12345678910 11121314151617181920 2122232425262728293031
TFSSMTWTFS SMTWTFSSMT WTFSSMTWTFS
Emma Thompson HOLPPPPPP PPPTOPTOPHOLP PSCKPPPPPP
David Kim HOLPPPPPP PTOPTOPTOPPHOLP PPPPPPPP
Sofia Rodriguez HOLPPPPSCKP PPPPPHOLP PPPPPPPP
Michael Chen HOLPPPPPP PPPPPHOLWFH PPPPWFHPPP
Aisha Patel HOLPPPPPP PPPSCKSCKHOLP PPPPTOPPPP
James Wilson HOLPPPPPP PPPPPHOLP PPPPPPPABS
PPresent
PTOPaid Time Off
SCKSick Leave
WFHWork From Home
ABSUnpaid Absence
HOLCompany Holiday
Weekend

Each cell is one formula: =IF(WEEKDAY(day,2)>5,"—", IF(ISNUMBER(MATCH(day,HolidayDates,0)),"HOL", IFERROR(INDEX(LogCode,MATCH(Emp&"|"&TEXT(day,"yyyy-mm-dd"),LogKey,0)),"P"))). Weekend first, then holiday, then exception lookup, then default Present.

Attendance Dashboard — team metrics at a glance

Five headline KPIs plus a per-employee leave summary and a leave-type distribution. Change the start/end dates at top and every number recalculates against the Attendance Log via COUNTIFS.

employee-attendance-2026.xlsx — Attendance Dashboard
Attendance Dashboard
Period · Jan 1 – Jan 31, 2026 · 6-person team
Team Size6
PTO Days6
Sick Days4
WFH Days2
Absences1
Leave Summary by Employee
EmployeePTOSickWFHAbs
Emma Thompson2100
David Kim3000
Sofia Rodriguez0100
Michael Chen0020
Aisha Patel1200
James Wilson0001
Leave Type Distribution
CodeDays%
PTO646.2%
SICK430.8%
WFH215.4%
ABS17.7%

PTO Balance Report — remaining days per person

Set a start and end date; the report pulls PTO used, sick used, WFH days, and absences per employee via COUNTIFS, then computes remaining balance from the roster allocation. Below is the full year 2026 range with all 13 January exceptions rolled in.

employee-attendance-2026.xlsx — PTO Balance Report · Jan 1 – Dec 31, 2026
EmployeeDepartment PTO AllocUsedLeft SickWFHAbsTotal OOO
Emma ThompsonOperations152131003
David KimEngineering153120003
Sofia RodriguezDesign150151001
Michael ChenMarketing200200202
Aisha PatelSupport151142003
James WilsonAnalytics100100011
TOTAL9068442113

Grab the free Attendance Template — no strings.

Ready-to-use .xlsx · 6 sheets · 540 formulas · Auto-holiday calendar · PTO rollup.

Download .xlsx

What's inside — 6 sheets

Six sheets, one clean flow: default to Present, log exceptions, watch the calendar and dashboards refresh.

01Setup Guide

Welcome, 5-step quick start, attendance-code legend (P/PTO/SICK/WFH/ABS/HOL/weekend), and cell color legend.

02Attendance Dashboard

5 KPI tiles + Leave Summary by Employee + Leave Type Distribution + Holidays in Period. All powered by COUNTIFS against the log.

03Monthly Calendar

The showpiece — 6 employees × 31 days = 186 formula cells. Change Year and Month and the whole grid recalculates.

04Attendance Log

Exception-only log with 13 pre-filled entries. Dropdown validations on Employee + Code (PTO/SICK/WFH/ABS/BEREAVEMENT/JURY/MILITARY).

05Employee Roster

6 sample employees with PTO/yr allocations (15/15/15/20/15/10) plus 10 US federal holidays for 2026.

06PTO Balance Report

Date-range rollup: PTO Alloc / Used / Left / Sick / WFH / Absences / Total OOO. Red highlight on any employee with unexcused absences.

Features

What sets this apart from a manual grid.

Present is the default

You only log exceptions. Fill in a whole month for a whole team in 10 minutes instead of an hour.

📅

Auto-applied holidays

Add a date to the Holiday list — every employee's cell for that day flips to HOL. No per-person copy-paste.

🎨

Color-coded calendar

Conditional formatting paints Present green, PTO blue, Sick amber, WFH light-green, Absent red, Holiday purple, weekend grey.

📊

Real-time dashboard

Team-level KPIs + per-employee breakdown + leave-type distribution. Change the date window; everything follows.

🏖

PTO balance rollup

Set annual allocation per person, log PTO days as you go, see remaining balance instantly. Bradford-Factor ready.

📱

Works everywhere

Excel 365, 2021, 2019, 2016, 2013, 2010, 2007. Google Sheets. Excel Online. LibreOffice Calc. No add-ins.

Who this is for

Built for teams too small for BambooHR but too structured for a paper wall calendar.

Small business owners

You have 5–30 employees and don't want to pay $6/person/month for an HR suite. Log exceptions weekly, review the dashboard monthly, run PTO balances at review time.

HR & office managers

You need a clean audit trail for PTO, sick, and absence patterns. The Attendance Log doubles as a documentation record; the PTO Balance Report satisfies most auditors.

Remote / hybrid team leads

You need to know who's in the office vs. remote vs. out. The WFH code + calendar view give you a same-day answer without pinging Slack.

Exception-based attendance — the design decision

The single reason this template is faster to maintain than every other attendance tracker you've used.

Why "log only exceptions" beats "log every day"

The common approach — one row per employee per workday, mark P/A each morning — is slow and error-prone. For a 20-person team over a year that's 5,200 rows of mostly "P". Nobody keeps that up for more than a month.

The alternative is exception-based: assume everyone is Present unless the log says otherwise. Log only the PTO, sick, WFH, and absence events. For that same 20-person team over a year, you might have 300 log entries total — a 17× reduction in data-entry work.

Every calendar cell resolves in this order: 1. Weekend? → "—" (via WEEKDAY) 2. Company holiday? → "HOL" (via MATCH against HolidayDates) 3. Exception logged? → return that code (via INDEX/MATCH on Emp|Date key) 4. Otherwise → "P" (default)

Three practical benefits:

  • Fast to maintain. Log an exception when it happens; skip the daily P-marking ritual.
  • Add a holiday once. Add a date to the Holiday list and every employee's cell for that day auto-updates. No per-person duplication.
  • Audit trail lives in the log. Every exception has a date, code, reason, and approver — that's the record HR and auditors want to see.

The INDEX/MATCH lookup that powers the calendar

Every calendar cell needs to check: "does the log have an exception for THIS employee on THIS day?" Since we can't use dynamic arrays (Excel 2007+ compat), the template builds a concatenated helper key on the log — Employee&"|"&TEXT(Date,"yyyy-mm-dd") — and uses INDEX/MATCH to look it up:

On Attendance Log column H (helper key): =C5&"|"&TEXT(B5,"yyyy-mm-dd") On Monthly Calendar (single cell): =IFERROR( INDEX(LogCode, MATCH(EmpName&"|"&TEXT(DayDate,"yyyy-mm-dd"), LogKey, 0)), "P")

The IFERROR catches the "no match" case — meaning no exception was logged for that person that day, so the default "P" (Present) fires. This pattern works in Excel 2007+ and Google Sheets identically, no dynamic arrays required.

PTO accrual policies — lump-sum vs. per-period accrual

Federal law does not require paid time off, but once you offer PTO, state law and your own policy govern how it accrues, rolls over, and pays out. Two common models:

Policy How it works Pros Cons
Lump-sumFull annual PTO available Jan 1 (or on hire anniversary).Simple to track. Employee-friendly.Cash-flow exposure — employee could take all 15 days in January then quit.
Per-pay-period accrualFraction accrues each pay period. 15 days ÷ 26 bi-weekly = 0.577 days per paycheck.Employees earn PTO as they work. Lower risk.Slower ramp for new hires. More math for HR.
Front-loaded with capGive a partial lump-sum (e.g., 8 days) at start of year; accrue the rest per pay period.Hybrid balance of simplicity and safety.Explains poorly to employees who just want a clean number.

Rollover, use-it-or-lose-it, and cash-out

  • Use-it-or-lose-it: unused PTO expires at year end. Illegal in California — vacation there is treated as earned wages that can't be forfeited. Legal in most other states with proper notice.
  • Rollover with cap: unused PTO carries into next year up to a maximum (e.g., 5 days or 1× annual accrual). Most balanced approach.
  • Unlimited PTO: increasingly popular in tech. No accrual, no balance to track. Legally simpler but empirically leads to LESS PTO taken than accrual-based policies.
  • Cash-out at termination: some states (CA, IL, MA, NC, others) require accrued unused PTO to be paid out on the final paycheck. Others let you keep it in the company.

This template's PTO Balance Report shows Allocated / Used / Left per employee — you decide whether Left carries over, expires, or gets cashed out based on your state and policy.

Sick leave state mandates — where paid sick is legally required

As of 2026, most Americans work in a jurisdiction with mandatory paid sick leave. Rules vary by state, county, and city — check yours before setting policy.

California

Minimum 40 hours (5 days) paid sick leave per year. Front-loaded or accrual (1 hr per 30 worked). Cap of 80 hours accrued. Employer-friendly cap of 40 hrs usage/year permissible.

New York

Employers with 100+ workers: 56 hours/year paid. 5–99 workers: 40 hours paid. 4 or fewer + <$1M net income: 40 hours unpaid.

Massachusetts

Employers with 11+ employees: 40 hours paid sick per year. Smaller employers: 40 hours unpaid. Accrues at 1 hr per 30 worked.

Washington

1 hour of paid sick leave per 40 worked, no cap on annual accrual. Rollover of up to 40 hours to the next year.

Illinois & Chicago

Illinois: 40 hours paid leave for any reason (2024+). Chicago: additional 40 hours paid sick + 40 hours paid leave, totaling 80.

Colorado

1 hour per 30 worked, 48-hour annual cap. Broad "public health emergency" provision that added extra leave during COVID.

Other states with paid sick mandates: Arizona, Connecticut, Maine, Maryland, Michigan, Minnesota, Nevada, New Jersey, New Mexico, Oregon, Rhode Island, Vermont, plus DC and Puerto Rico. Many additional cities layer their own rules on top (Seattle, Portland, San Francisco, Philadelphia, etc.). Confirm with your CPA or employment attorney.

Attendance rate & the Bradford Factor

Two metrics that turn attendance data into an early-warning system for burnout, disengagement, and reliability problems.

Attendance Rate

The percentage of scheduled workdays actually worked. Simple to compute, easy to trend.

Attendance Rate = (Days Worked / Days Scheduled) × 100% Days Scheduled = Business days in period − Company holidays Days Worked = Days Scheduled − PTO − Sick − Absences (WFH counts as worked)

Benchmarks: 95%+ is healthy for salaried staff. 90–95% is normal for hourly workforce. Below 88% consistently is a signal to investigate — burnout, disengagement, or a personal-life crunch worth a manager conversation.

Bradford Factor — patterns that matter

Developed at Bradford University's business school, the Bradford Factor weights frequency of absences more heavily than total days lost. It captures the pattern that many short unplanned absences disrupt work more than one long planned absence.

Bradford Factor = S² × D S = Number of separate absence occurrences in period D = Total days absent in period

Examples over a rolling 52-week window:

  • One 10-day illness: S=1, D=10 → BF = 1 × 10 = 10 (low concern)
  • Five 2-day absences: S=5, D=10 → BF = 25 × 10 = 250 (elevated concern)
  • Ten 1-day absences: S=10, D=10 → BF = 100 × 10 = 1,000 (major red flag)

Common trigger thresholds: 100 (informal chat), 200 (formal review), 400+ (performance improvement plan or disciplinary process). Use judgment — Bradford scores don't distinguish between a chronic health condition and a reliability problem.

ADA and FMLA — the two federal laws that limit attendance discipline

Before you use attendance data to discipline or terminate, know these two laws. Both create protected leave that generally cannot be counted against employees in "no-fault" attendance policies.

Family and Medical Leave Act (FMLA)

Federal law providing eligible employees up to 12 weeks of unpaid, job-protected leave per year for specific family and medical reasons — with continuation of group health insurance during leave.

  • Who's covered: Employers with 50+ employees within 75 miles. Employees with 12+ months of service and 1,250+ hours worked in the prior year.
  • Qualifying reasons: Employee's serious health condition, care for a family member with serious health condition, birth or adoption of a child, certain military family caregiving.
  • FMLA leave time cannot be counted as an "occurrence" in a no-fault attendance system, and cannot be used as a factor in termination decisions.

Americans with Disabilities Act (ADA)

Federal law prohibiting discrimination against qualified individuals with disabilities. Impacts attendance in one key way: leave beyond FMLA can be a required reasonable accommodation.

  • Who's covered: Employers with 15+ employees.
  • Reasonable accommodation: Additional unpaid leave beyond FMLA may be required if it enables an employee with a disability to perform their essential functions, unless it creates undue hardship for the employer.
  • Practical impact: Before terminating an employee for excessive absences, engage in the "interactive process" — a documented conversation about whether more time off or another accommodation would enable the employee to return to reliable attendance.

Neither law prevents fair, consistent attendance policies — but both create tripwires around termination decisions. When Bradford scores get high, involve HR or an employment attorney before acting.

How to use the template in 5 steps

Zero setup — open the file and start on the Setup Guide sheet.

1

Update Employee Roster + Holidays

Replace the 6 sample employees with your team (name, dept, role, PTO/yr, Sick/yr). Edit the 10 pre-loaded 2026 US federal holidays for your jurisdiction.

2

Log exceptions in Attendance Log

Only when someone is out. Date, Employee (dropdown), Code (dropdown: PTO/SICK/WFH/ABS), Hours, Reason, Approved By. Present is automatic — no daily entry needed.

3

View the Monthly Calendar

Change the Year and Month input cells at top and the 6-employee × 31-day grid recalculates instantly. Color-coded automatically via conditional formatting.

4

Check the Attendance Dashboard

5 KPI tiles + per-employee leave breakdown + leave-type distribution + upcoming holidays. Move start/end dates to any window.

5

Run the PTO Balance Report

Year-to-date view: PTO allocated, used, remaining, plus sick/WFH/absence counts. Set any date range. Red highlight flags employees with unexcused absences.

Customize it your way

Every formula and layout is open — nothing is protected. Six common edits.

Add attendance codes

The Attendance Log Code dropdown already includes BEREAVEMENT, JURY, and MILITARY beyond the main 4. Add JURY-DUTY, TRAINING, TRAVEL — edit the Data Validation list (Data ▸ Data Validation ▸ Source).

Track half-day PTO

The Hours column defaults to 8. Enter 4 for half days. Update PTO Balance to divide COUNTIFS by 8 hours to convert hours-based tracking into equivalent days.

Different work-week schedule

Calendar formula uses WEEKDAY(day,2)>5 for weekends. For a Sun–Thu workweek (Middle East), change to OR(WEEKDAY(day,2)=5, WEEKDAY(day,2)=6).

Add a Bradford Factor column

On PTO Balance Report add: =COUNTIFS(LogEmp,B8,LogCode,"SICK")^2 * COUNTIFS(LogEmp,B8,LogCode,"SICK",LogHours,">=8"). Rough approximation — replace S² with the count of distinct sick occurrences for full accuracy.

Multi-month view

Duplicate the Monthly Calendar sheet. Change the Month cell on the copy to 2, 3, etc. The formulas reference the input cells on each sheet, so each duplicate becomes its own month.

Grow the team roster

Add rows to Employee Roster. Extend the EmpName named range (Formulas ▸ Name Manager) or add rows in the middle of the range. Add a matching row on the Monthly Calendar with the formulas copied down.

Functions used in this template

Every formula here is documented on Sheets & Cells — click any function to open its deep-dive guide.

Stop chasing PTO requests in Slack.

Free download · Excel + Google Sheets + LibreOffice · No email · No account · No watermark.

Download .xlsx

Frequently asked questions

Fourteen questions covering setup, math, policy, and troubleshooting.

Is this attendance template really free?

Yes. Free for personal and commercial use. Download the .xlsx, use it for as many employees and years as you need, and modify it however you want. No email required, no watermark, no attribution needed.

Does it work in Google Sheets?

Yes. Upload the .xlsx to Google Drive and open with Google Sheets. All 540 formulas convert cleanly because we intentionally use only Excel 2007-compatible functions (INDEX, MATCH, IF, IFERROR, COUNTIFS, VLOOKUP, TEXT, DATE, WEEKDAY, ISNUMBER) — no XLOOKUP, FILTER, or dynamic arrays that would break.

Why do I only need to log exceptions?

Every calendar cell has a formula that resolves in this order: is it a weekend? → is it a company holiday? → does the log have an exception for this employee on this date? → default to Present. So if you don't log anything for someone on a workday, they're Present. This saves ~90% of the data-entry effort compared to logging every day.

How does the calendar look up the log so fast?

The Attendance Log has a helper column that concatenates Employee & "|" & TEXT(Date,"yyyy-mm-dd") into a unique key. The calendar cell does an INDEX/MATCH against that key. Fast, works in every Excel version, no dynamic arrays needed.

Can I add company holidays for the whole year?

Yes. On the Employee Roster sheet, scroll down to the Company Holidays section. Add dates and names. The named range HolidayDates covers the standard 10 slots — if you need more, edit the range in Name Manager. Every calendar cell for those dates automatically flips to HOL for every employee.

How do I change the month or year the calendar shows?

Top of the Monthly Calendar sheet: two yellow-tinted cells for Year and Month. Change them (2026 → 2027, 1 → 6, etc.) and the entire 6-employee × 31-day grid recalculates. The formulas use DATE(Year, Month, 1..31) throughout.

Can I track PTO as hours instead of days?

The template ships with days-based tracking (COUNTIFS counts entries). To switch to hours, change PTO Balance formulas to =SUMIFS(LogHours, LogEmp, ...) / 8 — that converts hours logged into equivalent days. Or track everything in hours and update the PTO Alloc column to reflect annual hours (e.g., 15 days × 8 = 120 hours).

Does the template handle multiple leave policies?

Yes at the roster level — each employee has their own PTO/yr and Sick/yr allocations, so Michael can have 20 days while a new hire has 10. For more complex policies (accrual-based, tiered by tenure), add a helper column with the formula that computes each person's current entitlement, then reference it in the PTO Balance sheet.

What about half-day PTO?

Log the exception with Hours = 4 instead of 8. PTO Balance currently counts entries (each = 1 day). If half days are common, switch PTO Used to SUMIFS(LogHours, ...) / 8 for accurate fractional-day tracking.

How do I compute an attendance rate?

Add a cell: =(WorkdaysInPeriod - Absences - PTO - Sick) / WorkdaysInPeriod. For January 2026: 21 workdays (Jan 1 & 19 are holidays, so 22 − 2 counted separately) − 6 PTO − 4 Sick − 1 Abs = 10 days lost across 6 people × 21 days = 126 possible. Rate = 116/126 = 92%. Do this per employee for individual rates.

What's a good Bradford Factor threshold?

Bradford Factor = S² × D where S is the count of separate absence occurrences and D is total days absent. Common triggers: 50 informal chat, 100 formal review, 200 written warning, 400+ disciplinary process. Adjust for your industry — nursing and manufacturing tend to use lower thresholds; office roles higher.

Can I use this for FMLA tracking?

Partially. Add "FMLA" as an attendance code (edit the Data Validation Source on the Log). Log FMLA days. Then track cumulative FMLA use with =COUNTIFS(LogEmp, name, LogCode, "FMLA") against the 60-day allowance (12 weeks × 5). For deeper FMLA compliance — required notices, medical certifications, intermittent leave — use a dedicated HRIS.

Do I need Microsoft 365 to open this?

No. This template is built with Excel 2007+ compatibility, which means it opens in Excel 2007, 2010, 2013, 2016, 2019, 2021, 365, Excel for Mac, Excel Online, Google Sheets, and LibreOffice Calc. No subscription required.

Is this template a legal record for HR purposes?

The Attendance Log gives you the date, employee, code, hours, reason, and approver for every exception — which is the documentation trail most auditors expect. For terminations, ADA accommodation cases, or FMLA disputes, consult an employment attorney about your specific policy language and whether additional signed acknowledgments are needed.

Skip the manual tracking — try the AI Add-in

The Sheets & Cells Add-in reads PTO requests from your email, auto-logs approvals, computes Bradford scores, and drafts return-to-work conversations — inside Excel, powered by Claude.

Get the AI Add-in →