Methodology
Every calendar on this site is derived from three public federal sources and a small set of payroll conventions used by U.S. small businesses. This page documents the exact logic so you can reproduce, audit, or override any schedule.
1. Sources
- U.S. Office of Personnel Management Pay Period Calendar. The federal government runs on a 26-period biweekly schedule with a Sunday-to-Saturday pay period. Anchor dates are published annually at opm.gov. PayPeriod Guide uses the OPM anchor convention — pay period 1 of any year begins on the first Sunday on or before January 1 — for every biweekly schedule on this site.
- U.S. OPM Federal Holiday Schedule. The 11 federal holidays and their observance rules are defined at opm.gov/federal-holidays. We compute each holiday's date from its calendar rule (e.g., "third Monday of January") rather than reading a hardcoded list, so future years are generated correctly.
- IRS Small Business Payroll Tax Deposit Guidance. The IRS pay period guidance at irs.gov determines deposit frequencies (monthly vs. semi-weekly) for federal income, Social Security, and Medicare taxes. Deposit deadlines are referenced in the schedule narrative but do not change the pay date itself.
2. Federal holiday observance
OPM observance rules — also followed by the Federal Reserve and most U.S. banks — are simple but easy to misapply:
- If a federal holiday falls on a Saturday, it is observed on the preceding Friday.
- If a federal holiday falls on a Sunday, it is observed on the following Monday.
- If a federal holiday falls on a weekday, it is observed on that day.
This shift matters because the U.S. banking system, ACH (NACHA), and the Federal Reserve Wire Network all close on observed dates, not the calendar dates. A pay date that falls on an observed holiday cannot be funded that day.
3. Biweekly schedule generation
For each calendar year:
- Identify the OPM-style anchor: the first Sunday on or before January 1 of the year.
- Generate pay periods of 14 days starting from the anchor, each running Sunday through Saturday.
- Compute the scheduled pay date as the Saturday end of the pay period plus 5 calendar days, putting the default pay date on the second Thursday after the period ends. (Many small businesses pay on the Friday after period end; we publish the OPM-style Thursday and surface the offset rule rather than baking in a particular employer's choice.)
- If the scheduled pay date falls on a weekend or an observed federal holiday, walk backward day by day until the date is a non-weekend, non-holiday business day. The result is the actual pay date and the schedule notes the reason for the shift.
- Include a pay period in a year's calendar if any portion of the period intersects the year. This is why some years show 27 pay periods rather than 26.
4. Semi-monthly schedule generation
For each month of the year we publish two pay periods:
- First half: day 1 through day 15. Scheduled pay date is the 15th. If the 15th is a weekend or observed federal holiday, walk backward to the previous business day.
- Second half: day 16 through the last day of the month (28, 29, 30, or 31). Scheduled pay date is the last day of the month, with the same backward-walk adjustment for weekends and holidays.
This produces exactly 24 pay periods per year. We use the "pay on the period end date" convention because it is the dominant small-business pattern and matches the cadence assumed by most state semi-monthly wage payment statutes (e.g., California Labor Code §204, Texas Labor Code §61.011, Illinois 820 ILCS 115/3).
5. State rule overlays
Each state page summarizes the state's wage payment statute as it applies to small private employers. These summaries are descriptive — they do not modify the calendar dates themselves. Where a state requires a stricter cadence than biweekly or semi-monthly (for example, weekly pay for Massachusetts manual workers), we note it on the state page and recommend confirming with state counsel before adopting a longer cadence.
6. What we deliberately don't do
- We do not adjust for state-specific holidays. Banks settle on the federal calendar; state holidays generally don't move pay dates unless the employer voluntarily observes them.
- We do not account for individual employer payday-shift policies (e.g., "always pay one day early for major holidays"). Use the published date as a baseline and shift further at your discretion.
- We do not publish historical schedules earlier than 2020 or future schedules later than 2027. Earlier dates have limited practical use; later dates risk drifting from future federal-holiday legislation.
7. Reproducing a calendar
The full computation is implemented in roughly 200 lines of PHP and is deterministic — the same input year produces the same output schedule, every time. If you want to spot-check any pay date, the rule is simple: identify the scheduled date from the period-end anchor, look up the federal holiday observance for that date, and walk backward to the prior business day. Every calendar on this site is built by exactly that loop.