Dates & time

Year calendar generator

Make a printable calendar for any year with week numbers and your own marked dates.

Year calendar generator
Esc to restore

Your inputs

Write MM-DD name for every year, or YYYY-MM-DD name for one year. Marked days show with *.

Results update as you type. Larger files run when you press Update result.

Your result

Your result will appear here.

More actions

Your inputs stay in this browser. Nothing is uploaded or saved.

A clear answer. Here’s how.

Builds the twelve months from the Gregorian leap-year rule (every fourth year, except centuries not divisible by 400) and the weekday of each first day. ISO 8601 week numbers start on Monday, and week 1 is the week containing the year’s first Thursday, so a year has 53 weeks when 1 January is a Thursday, or a Wednesday in a leap year; early January days can belong to the last week of the year before. Public holidays are not built in because they vary by country and region: add the dates you want marked. The table downloads as CSV; before 1582 the dates would be proleptic, so the year is limited to 1583 onward.

How this is checked

4 reference checks passed These 4 cases were run when this page was built, on 20 October 2026, and all reproduce within the stated tolerance. The same cases are part of the automated tests that run on every change to Toolmoz. Engine version 1.

See the checks and where each expected answer comes from
  1. Case 1

    Inputs
    Year 2026Week starts on mondayDates to mark (optional), one per line 01-01 New Year’s Day 12-25 Christmas Day
    Expected, and what Toolmoz gave
    Days in the year expected 365, Toolmoz 365Leap year expected No, Toolmoz NoWeekday of 1 January expected Thursday, Toolmoz ThursdayISO weeks in the year expected 53, Toolmoz 53Holidays marked expected 2, Toolmoz 2
    Where the expected answer comes from
    1 January 2026 is a Thursday (checked with Python’s datetime), so the year has 365 days and 53 ISO weeks
    Allowed difference
    exact
  2. Case 2

    Inputs
    Year 2024Week starts on mondayDates to mark (optional), one per line
    Expected, and what Toolmoz gave
    Days in the year expected 366, Toolmoz 366Leap year expected Yes, Toolmoz YesWeekday of 1 January expected Monday, Toolmoz MondayISO weeks in the year expected 52, Toolmoz 52
    Where the expected answer comes from
    2024 is divisible by 4 and not a century, so it is a leap year; 1 January 2024 is a Monday and the last ISO week is 52
    Allowed difference
    exact
  3. Case 3

    Inputs
    Year 2100Week starts on sundayDates to mark (optional), one per line
    Expected, and what Toolmoz gave
    Days in the year expected 365, Toolmoz 365Leap year expected No, Toolmoz NoWeekday of 1 January expected Friday, Toolmoz Friday
    Where the expected answer comes from
    2100 is a century not divisible by 400, so it is not a leap year; 1 January 2100 is a Friday
    Allowed difference
    exact
  4. Case 4

    Inputs
    Year 2000Week starts on mondayDates to mark (optional), one per line
    Expected, and what Toolmoz gave
    Days in the year expected 366, Toolmoz 366Leap year expected Yes, Toolmoz YesWeekday of 1 January expected Saturday, Toolmoz SaturdayISO weeks in the year expected 52, Toolmoz 52
    Where the expected answer comes from
    2000 is divisible by 400, so it is a leap year; 1 January 2000 was a Saturday
    Allowed difference
    exact

What this shows: the engine reproduces independently worked values for these cases. It does not prove every possible input is right. To test an answer you were given, see how to check a number; to see what is and is not checked across Toolmoz, see the accuracy ledger.

See a worked example

Worked example

A fixed demonstration, separate from the values you enter above.

Year
2026
Week starts on
Monday (ISO weeks)
Dates to mark (optional), one per line
01-01 New Year’s Day
12-25 Christmas Day

Example result

First 5 rows of the example result
MonthWeekMonTueWedThuFriSatSun
January11*234
2567891011
312131415161718
419202122232425
5262728293031

Gregorian calendar (before 1582 it is the proleptic calendar). Week numbers are ISO 8601: week 1 contains the first Thursday, so early January days can belong to the previous year’s last week. Marked * (Jan 1: New Year’s Day; Dec 25: Christmas Day). No public holidays are built in, because they differ by country and region.