Draw Monthly Calendar
Generate any month from year 1500-3000. Sunday/Monday week start, Today highlight, SVG/PNG export. Free, offline, client-side, instant, secure.
- Runs in your browser
- Nothing uploaded
- Free, no sign-up
Generate a printable monthly grid for any year 1500-3000 with Sunday or Monday week start, today highlight, weekend column tinting, and SVG/PNG export.
How to Use Draw Monthly Calendar
- Pick month and year. Year accepts 1500-3000. Defaults to the current month on load.
- Choose week start: Sunday (US/Canada/Japan/some Asia) or Monday (ISO 8601 - Europe, much of Asia, modern productivity tools). Today's amber-accented box shifts with the choice.
- Navigate with Previous / Next buttons (auto-wrap at year boundaries) or click Today to jump back to the current month.
- Read the grid: weekend columns get a light tint; today gets a filled indigo box with white text. Day-of-week headers are colored amber on weekends.
- Press Ctrl+Enter or click Generate to force a re-render (debounced; most changes auto-update).
- Copy as text for pasting into emails or terminals (monospace-aligned table format). Download SVG for printing or vector editing. Download PNG for social media (2× DPR for Retina-crisp output).
- Print directly with browser File → Print - the page CSS includes a print-friendly stylesheet (no toast, no SEO content) so just the calendar prints.
Frequently Asked Questions
Which week start should I use?
Depends on cultural convention. Sunday: USA, Canada, Japan, Brazil, India, much of South America, many Arab countries. Monday: ISO 8601 (international standard), most of Europe (UK, France, Germany, Spain, etc.), Australia, New Zealand, China, much of Africa. Saturday: Israel, parts of the Middle East (we don’t offer this – pick Sunday and shift mentally). If your audience is international or you’re writing tooling, prefer Monday (ISO 8601). If domestic US, Sunday matches what people are used to from physical wall calendars.
How does the leap-year logic work?
Gregorian rule: a year is leap if divisible by 4 (basic), EXCEPT century years (00) which must be divisible by 400. So 2000 = leap (400 ✓), 2100 = NOT leap (100 ✗), 2024 = leap (4 ✓), 2023 = not leap. We use JavaScript’s new Date(year, month + 1, 0).getDate() trick – set day to 0 of the NEXT month, which JS interprets as “last day of the previous month.” Returns 29 for Feb 2024, 28 for Feb 2023. Works correctly back to 1500 AD using proleptic Gregorian rules.
What’s “proleptic Gregorian” and why does it matter for old dates?
The Gregorian calendar (with the modern leap-year rule) was introduced in 1582 by Pope Gregory XIII. Most Catholic countries adopted it within a few decades; Protestant countries (Britain, US colonies, Germany Protestant states) waited until 1752. Russia kept Julian until 1918. The “proleptic Gregorian” calendar means: apply Gregorian rules CONSISTENTLY all the way back, even before 1582 – even though historically those dates would have been recorded under the Julian calendar with different leap-year rules. JavaScript’s Date uses proleptic Gregorian. For pre-1582 dates this means our calendar shows what would have HAPPENED if the Gregorian rules had always existed. For historical research, use a Julian-aware tool.
Why does year support stop at 3000?
JavaScript’s Date object technically supports any year from -271,821 to +275,760 (the ECMAScript spec). But beyond about year 3000, calendar conventions become speculative: would Gregorian rules still apply? Would there be calendar reforms (some scientific proposals already exist – Hanke-Henry calendar, World Calendar)? We cap at 3000 as a practical ceiling for “future planning” without venturing into speculative-fiction territory. Beyond that, you’re better off with a custom calendar system anyway.
How can I print the calendar?
Two ways. (1) Browser File → Print: the CSS includes @media print rules that hide the controls, SEO content, header description, and toast, leaving just the title + grid. Adjust orientation (portrait for usual, landscape for very wide layouts) and paper size in your print dialog. (2) Download PNG and print via your usual image editor / Word document: gives you more control over size and positioning. SVG works too if your printer driver supports it (most do via a vector pipeline).
What’s the “Copy text” format?
Monospace-aligned ASCII table. First line: month and year. Blank line. Day-of-week header (Sun/Mon/Tue/… or Mon/Tue/…). Then rows of week numbers, padded to 2 digits with spaces. Example: " 1 2 3 4 5 6 7". Useful for pasting into terminal apps, plain-text emails, or markdown documents. NOT styled – for styled output use SVG/PNG.
Does it work offline?
Yes. Once the page loads, no network requests. All date arithmetic uses JavaScript’s built-in Date object (timezone-agnostic for our purposes – we use local-time methods getDay(), getMonth() etc.). You can disconnect your internet, reload the cached page, and it still works.
Why are weekends tinted?
Visual scanning. In most calendar layouts, weekend columns (Sat + Sun under Sunday-first; Sat + Sun under Monday-first appears at the end) get a different background so you can immediately see “which days are work days.” We use a light slate tint (#f1f5f9). Day-of-week headers for weekend columns also use accent indigo so the column boundary is obvious.
Is my data secure?
Yes. Tool runs 100% in your browser. Only data sent is the initial HTML/CSS/JS load – verify in your browser’s Network tab, no XHR/fetch. Month/year choices stay on your device. Downloaded SVG/PNG files include no identifying information beyond the month + year you generated.
Related Tools
Draw Memento Mori Calendar →
Draw Memento Mori Calendar online, free and private. Runs in your browser, no upload,…
Analyze Calendar Date →
Mathematically analyze calendar date completely. Extract structural leap statuses, ISO week formatting, and specific…
Calculate Average Calendar Date →
Calculate the average date from any list of calendar dates instantly in your browser.…
Decrement Calendar Date →
Subtract years, months, days from any date with correct month-end clamping (March 31 minus…
Draw Analog Clock →
Draw a real-time or custom analog clock in your browser. Sweeping second hand, Roman/Arabic…
Draw Digital Clock →
Live HH:MM:SS digital clock with 24-hour toggle, milliseconds, 3 themes, screenshot export. Free, offline,…
Generate Fuzzy Calendar Dates →
Generate fuzzy calendar dates: translate exact dates into relaxed conversational phrases like "early next…
Draw ASCII Table →
Generate ASCII tables in pipe, Markdown, box-drawing, or CSV format. DEC/HEX/OCT/BIN columns, control names,…
Draw Canopy Fractal →
Draw a canopy-tree L-system fractal in your browser. 7 iterations, custom colors, gradient depth,…
Draw Cantor Dust Fractal →
Draw true Cantor Dust (4-corner) or Sierpiński carpet (8-square) in your browser. Color modes,…
Draw Cantor Fractal →
Draw the Cantor set with middle-third deletion. 0-10 iterations, custom colors, dimension and measure…
Draw Flowsnake Fractal →
Draw the Gosper curve hexagonal space-filling fractal in your browser. Iterations 1-6, custom colors,…