Month calendars with the week starting on Sunday
It changes the layout more than it looks like it should. Shifting the first column from Monday to Sunday moves every date one cell to the left, which changes how many blank cells sit before the 1st and therefore how many rows the grid needs. February 2026 is the clearest case: it begins on a Sunday, so a Monday-start grid pushes it into five rows while a Sunday-start grid fits the whole month in four. On A4 landscape with a 12 mm margin that is the difference between day boxes 32.8 mm tall and boxes 41 mm tall.
The calendar
Vector, dimensioned in millimetres, so every box prints at exactly the size quoted above. Print it from here to skip the page furniture, or save it and open it in anything.
Every day, and where it lands
| 1 | Sunday | 1 | 1 | 5 | 2026-02-01 |
| 2 | Monday | 1 | 2 | 6 | 2026-02-02 |
| 3 | Tuesday | 1 | 3 | 6 | 2026-02-03 |
| 4 | Wednesday | 1 | 4 | 6 | 2026-02-04 |
| 5 | Thursday | 1 | 5 | 6 | 2026-02-05 |
| 6 | Friday | 1 | 6 | 6 | 2026-02-06 |
| 7 | Saturday | 1 | 7 | 6 | 2026-02-07 |
| 8 | Sunday | 2 | 1 | 6 | 2026-02-08 |
| 9 | Monday | 2 | 2 | 7 | 2026-02-09 |
| 10 | Tuesday | 2 | 3 | 7 | 2026-02-10 |
| 11 | Wednesday | 2 | 4 | 7 | 2026-02-11 |
| 12 | Thursday | 2 | 5 | 7 | 2026-02-12 |
| 13 | Friday | 2 | 6 | 7 | 2026-02-13 |
| 14 | Saturday | 2 | 7 | 7 | 2026-02-14 |
| 15 | Sunday | 3 | 1 | 7 | 2026-02-15 |
| 16 | Monday | 3 | 2 | 8 | 2026-02-16 |
A month fits in the fewest possible rows exactly when its 1st falls in the first column, which is entirely a function of which day you start the week on.
The saving is a whole row, not a small adjustment: dropping from five rows to four makes every day box a quarter taller on the same sheet of paper.
ISO week numbers do not move with the column order. They always count Monday-to-Sunday weeks, so a Sunday-start grid shows a week number whose week began the day before the row does.
How it works
The formula
daysInMonth = 29 for February in a leap year, 28 otherwise
30 for April, June, September, November
31 for the rest
leap year = year mod 4 = 0 and (year mod 100 != 0 or year mod 400 = 0)
firstColumn = 0 for a Sunday start, 1 for Monday, 6 for Saturday
weekdays indexed Sunday = 0 … Saturday = 6
leadingBlanks = (weekdayOfThe1st - firstColumn + 7) mod 7
cells = leadingBlanks + daysInMonth
rows = ceil(cells / 7)
trailingBlanks = rows x 7 - cells
for the dth day:
offset = leadingBlanks + d - 1
row = floor(offset / 7) + 1
column = (offset mod 7) + 1
ISO 8601 weeks run Monday to Sunday, and week 1 is the week holding the
year's first Thursday:
isoWeekday = 1 for Monday … 7 for Sunday
thursday = dayNumber + (4 - isoWeekday)
weekYear = the calendar year that thursday falls in
isoWeek = floor((thursday - 1 January of weekYear) / 7) + 1
columns = 8 when a week-number column is shown, otherwise 7
boxWidth = (pageWidth - 2 x margin) / columns
boxHeight = (pageHeight - 2 x margin - headingSpace) / rows
Every length is held as a whole number of micrometres up to that last
division. Every day number is integer arithmetic throughout.
What it assumes
- Dates are computed in the proleptic Gregorian calendar for every year from 1583 onwards, which is why that is the earliest year offered. Britain and its colonies kept the Julian calendar until September 1752, so for a month before then this tool disagrees with the calendar people were actually using at the time — by ten days in 1583 and by eleven by 1752.
- The day the week starts on is chosen explicitly rather than inferred from the language. CLDR does record a first day per territory, but it is keyed on region and not on language, so "French" alone does not answer the question — and the setting changes the row count, which makes guessing it wrong more than a cosmetic error.
- ISO week numbers always count Monday-to-Sunday weeks, whatever day the grid starts on. A Sunday-start calendar therefore shows, against its first row, a week number for a week that began the day before that row does.
- Every column is the same width and every row the same height, including the week-number column when it is switched on. Printed calendars often narrow the week-number column or the weekend, and none of those conventions is standard enough to compute from.
- Paper sizes are trimmed sizes. Your printer's own hardware border, usually 4 to 6 mm and often wider at the trailing edge, is not deducted, so a margin below about 5 mm will be clipped by the printer rather than by anything here.
- Month and weekday names come from the locale data built into the browser reading this page. A cut-down build of that data, which a few embedded and self-compiled runtimes ship, falls back to English without saying so.
Common questions
Which countries start the week on which day?
ISO 8601 and most of Europe start on Monday; the United States, Canada, Japan and much of Latin America start on Sunday. There is no correct answer, only the convention your reader expects — which is why it is a setting rather than a fixed choice.
Does the start of the week change the week numbers?
It can. ISO week numbers are defined with Monday as the first day, so a Sunday-start layout and ISO numbering disagree by a day at every boundary. If the week numbers matter — and in a work context they usually do — keep Monday as the start.
Sources
The full method, worked example and every assumption behind this figure are on Printable Month Calendar Planner.