Monthly Calendar Generator
Draw one Gregorian month as a seven-column grid, starting the week on Monday or Sunday, and print that grid.
Processed entirely in your browser — nothing you enter here is ever uploaded.
Result
About this tool
The control is a month input, stored as year-month. If you have not picked one, the page fills the current month from today's local date, then cuts it to the first seven characters, so the day is discarded. The grid is rebuilt whenever the month or the week-start menu changes. The title above the grid is the month name and the year, formatted in the page language with the UTC time zone, so the label matches the calendar month you picked rather than a shifted local day.
Weekday headings are seven short names. Monday-first is the default, because the menu treats anything other than the value sunday as Monday-first. The headings are produced by formatting seven UTC dates that are known Mondays or Sundays, so the names follow the page language. September 2026 starts on Tuesday. With Monday as the first column, Tuesday is the second column, so the grid places one blank cell and then the number 1. The month has 30 days, from the UTC date of day 0 of the next month. Sunday-first would place two blanks before the 1, because Tuesday is the third column when Sunday is the first.
Blank cells are empty spans. They are not days from the previous month, and the grid does not show trailing days from the next month either. There is no way to type a holiday, a birthday, or a note into a cell. The print button takes the calendar block and prints it through a small HTML document with its own grid CSS, so the printout is the month title and the cells rather than the rest of the site. The weekday headings and the day numbers are the whole content of a cell.
The calendar is Gregorian, using the JavaScript UTC date rules. It draws one month per view. It does not build a year poster, does not start the week on Saturday, and does not apply a fiscal calendar. February in a leap year has 29 days because the UTC date of March 0 does. February 2026 has 28. The blank-cell count is (the weekday of the 1st, adjusted so Monday or Sunday is column 0, plus 7) modulo 7. That is the entire layout rule. September 2026 is the month worth counting by hand: Tuesday the 1st, 30 days, one blank when Monday leads, two blanks when Sunday leads, and no August or October dates in the empty cells. Print uses only that grid.
Example. September 2026 starts on Tuesday and has 30 days. With Monday as the first column there is one blank cell before day 1. With Sunday first there are two blank cells.
Limit. One Gregorian month is drawn. Cells do not hold events, and days from the neighboring months are not filled in. The week starts on Monday unless you choose Sunday.
Frequently asked questions
How does September 2026 lay out?
1 September 2026 is a Tuesday, and the month has 30 days. Monday-first, which is the default, leaves one empty cell and puts 1 in the Tuesday column. Sunday-first leaves two empty cells. The empty cells are blank, not the last days of August.
Can I add appointments to the days?
No. Each day cell is only its number. There is no event field, no color for a holiday, and no import. Print sends the title and the grid, not a planner page.
Which week start is the default?
Monday. The menu value sunday is the only switch that puts Sunday in the first column. Weekday names come from the page language, so an English page shows Mon, Tue, and the rest in English short form.
Does it print the whole year?
It prints the one month on the screen. Change the month input to draw a different month. February uses the real length of that year: 2024 has 29 days and 2026 has 28, because the day count is the UTC date of day 0 of the next month.