{"id":69979,"date":"2026-11-08T23:22:04","date_gmt":"2026-11-08T17:52:04","guid":{"rendered":"https:\/\/www.quickonlinetips.com\/archives\/tools\/printable-calendar\/"},"modified":"2026-11-08T23:34:58","modified_gmt":"2026-11-08T18:04:58","slug":"printable-calendar","status":"publish","type":"page","link":"https:\/\/www.quickonlinetips.com\/archives\/tools\/printable-calendar\/","title":{"rendered":"Free Printable Calendar 2027: Monthly and Yearly Calendar PDF"},"content":{"rendered":"<p>Make a <strong>free printable calendar<\/strong> in a few clicks. Choose the whole year on one page or a printable monthly calendar with one month per page, pick one of 17 colours, set any year and start month, and download a print-ready PDF for A4 or US Letter paper.<\/p>\n<style>.qcal-wrap{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);grid-template-areas:\"ctl view\";gap:22px;align-items:start} .qcal-ctl{grid-area:ctl;min-width:0} .qcal-view{grid-area:view;min-width:0;display:flex;flex-direction:column;align-items:center;gap:10px;background:#c9d6e5;border-radius:10px;padding:16px} @media (max-width:800px){.qcal-wrap{grid-template-columns:1fr;grid-template-areas:\"ctl\" \"view\"}} .qt-tool .qcal-seg{display:flex;width:100%} .qt-tool .qcal-seg button{flex:1 1 0;padding:10px 8px} .qcal-sw{display:grid;grid-template-columns:repeat(6,1fr);gap:8px;max-width:330px} .qt-tool .qcal-sw button{aspect-ratio:1;width:100%;max-width:46px;border-radius:50%;border:3px solid #fff;box-shadow:0 0 0 1px #AEC3DB;cursor:pointer;padding:0;min-height:0} .qt-tool .qcal-sw button[aria-pressed=true]{box-shadow:0 0 0 3px #1A202C} .qt-tool .qcal-swname{font-size:14px;color:var(--qt-muted);margin:8px 0 0} .qt-tool .qcal-dl{width:100%;margin-top:4px} .qcal-pager{display:flex;align-items:center;justify-content:center;gap:10px;flex-wrap:wrap;font-size:14px;font-weight:600;color:#2D3748} .qcal-paper{width:100%;max-width:520px;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.12),0 8px 24px rgba(20,30,50,.18);container-type:inline-size} .qt-tool .qcal-cap{font-size:13px;color:#2D3748;text-align:center;margin:0} .qcal-sheet{--a:#1d6fd1;--t:#e5effb;height:100%;padding:4.76cqw;display:flex;flex-direction:column;color:#1b1f24;font-family:Helvetica,Arial,sans-serif;line-height:1.15} .qcal-foot{display:flex;justify-content:space-between;border-top:.15cqw solid #d5d9de;padding-top:1.2cqw;margin-top:1.8cqw;font-size:1.45cqw;color:#6b737c} .qcal-foot b{color:#1b1f24} .qcal-yhead{display:flex;align-items:flex-end;justify-content:space-between;gap:2cqw;border-bottom:.6cqw solid var(--a);padding-bottom:1.4cqw;margin-bottom:3cqw} .qcal-ytitle{font-weight:700;font-size:13cqw;line-height:.8;color:var(--a);letter-spacing:-.04em} .qcal-yside{text-align:right;display:flex;flex-direction:column;gap:.7cqw} .qcal-kick{font-size:1.6cqw;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:#6b737c} .qcal-range{font-size:2.3cqw;font-weight:700} .qcal-ygrid{flex:1;display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(4,1fr);gap:2.6cqw 3.8cqw;min-height:0} .qcal-mini{display:flex;flex-direction:column;min-height:0} .qcal-mname{display:flex;justify-content:space-between;align-items:baseline;font-weight:700;font-size:2.9cqw;color:var(--a);text-transform:uppercase;letter-spacing:.03em;margin-bottom:.8cqw} .qcal-mname small{font-size:1.4cqw;color:#8a929b} .qcal-mhead{display:flex;justify-content:space-between;align-items:flex-start;gap:3cqw;margin-bottom:2.4cqw} .qcal-mbig{font-weight:700;color:var(--a);font-size:10.5cqw;line-height:.85;text-transform:uppercase;letter-spacing:-.02em} .qcal-myear{font-weight:700;font-size:4.6cqw;margin-top:1.2cqw} .qcal-side{display:grid;grid-template-columns:1fr 1fr;gap:2.4cqw;width:40%;flex:0 0 auto} .qcal-side .qcal-mname{font-size:1.9cqw;margin-bottom:.4cqw} .qcal-days{display:grid;grid-template-columns:repeat(7,1fr);border-bottom:.5cqw solid var(--a)} .qcal-days span{font-size:1.7cqw;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--a);padding:0 0 .8cqw 1cqw} .qcal-mgrid{flex:1;display:grid;grid-template-columns:repeat(7,1fr);border-left:.15cqw solid #cfd4da;min-height:0} .qcal-cell{border-right:.15cqw solid #cfd4da;border-bottom:.15cqw solid #cfd4da;padding:.9cqw 1.1cqw;font-size:2.5cqw;font-weight:700;font-variant-numeric:tabular-nums} .qcal-cell.qcal-we{background:var(--t);color:var(--a)} .qcal-cell.qcal-out{background:#f7f8fa} .qcal-notes{margin-top:2.4cqw;display:flex;flex-direction:column;gap:3.2cqw} .qcal-notes b{font-size:1.5cqw;letter-spacing:.16em;color:#6b737c} .qcal-notes i{display:block;border-bottom:.15cqw solid #cfd4da} .qcal-mg{flex:1;display:grid;grid-template-columns:repeat(7,1fr);grid-template-rows:auto repeat(6,1fr);text-align:center;font-variant-numeric:tabular-nums;min-height:0} .qcal-mh{font-size:1.3cqw;color:#7c848d;font-weight:700;padding:.3cqw 0;border-bottom:.15cqw solid #d5d9de} .qcal-md{font-size:1.8cqw;line-height:2.7cqw;color:#1b1f24} .qcal-mg .qcal-we{background:var(--t)} .qcal-md.qcal-we.qcal-n{color:var(--a);font-weight:700} .qcal-side .qcal-mh{font-size:1cqw} .qcal-side .qcal-md{font-size:1.2cqw;line-height:1.8cqw} .qcal-side.qcal-side1{grid-template-columns:1fr;width:19%}<\/style>\n<div class=\"qt-tool\" id=\"qcal\"><div class=\"qcal-wrap\"><div class=\"qcal-ctl\"><p class=\"qt-label\" style=\"font-size:1.15em;margin:0 0 10px\"><strong>Step 1:<\/strong> Choose a layout<\/p><div class=\"qt-seg qcal-seg\" id=\"qcal-layout\"><button type=\"button\" data-v=\"year\" aria-pressed=\"true\">Whole year on 1 page<\/button><button type=\"button\" data-v=\"month\" aria-pressed=\"false\">12 monthly pages<\/button><\/div><p class=\"qt-label\" style=\"font-size:1.15em;margin:18px 0 10px\"><strong>Step 2:<\/strong> Pick a colour<\/p><div class=\"qcal-sw\" id=\"qcal-sw\"><\/div><p class=\"qcal-swname\" id=\"qcal-swname\"><\/p><p class=\"qt-label\" style=\"font-size:1.15em;margin:18px 0 10px\"><strong>Step 3:<\/strong> Set the dates and style<\/p><div class=\"qt-grid\"><div class=\"qt-field\"><label for=\"qcal-year\">Year<\/label><select id=\"qcal-year\"><\/select><\/div><div class=\"qt-field\"><label for=\"qcal-start\">Start month<\/label><select id=\"qcal-start\"><\/select><\/div><div class=\"qt-field\"><label for=\"qcal-wk\">Week starts on<\/label><select id=\"qcal-wk\"><option value=\"0\">Sunday<\/option><option value=\"1\">Monday<\/option><\/select><\/div><div class=\"qt-field\"><label for=\"qcal-pp\">Paper size<\/label><select id=\"qcal-pp\"><option value=\"a4\">A4<\/option><option value=\"letter\">US Letter<\/option><\/select><\/div><div class=\"qt-field\"><label for=\"qcal-sh\">Weekend shading<\/label><select id=\"qcal-sh\"><option value=\"colour\">Coloured<\/option><option value=\"grey\">Light grey<\/option><option value=\"none\">White (no shading)<\/option><\/select><\/div><div class=\"qt-field\" id=\"qcal-cnf\" hidden><label for=\"qcal-cn\">Small months at top<\/label><select id=\"qcal-cn\"><option value=\"both\">Previous and next<\/option><option value=\"next\">Next month only<\/option><option value=\"none\">None<\/option><\/select><\/div><\/div><p class=\"qt-label\" style=\"font-size:1.15em;margin:18px 0 10px\"><strong>Step 4:<\/strong> Download your calendar<\/p><button type=\"button\" class=\"qt-btn qt-btn-big qcal-dl\" id=\"qcal-dl\">Download PDF<\/button><div class=\"qt-status\" id=\"qcal-status\" aria-live=\"polite\"><\/div><\/div><div class=\"qcal-view\"><div class=\"qcal-pager\" id=\"qcal-pager\" hidden><button type=\"button\" class=\"qt-btn qt-btn-ghost qt-btn-sm\" id=\"qcal-prev\">Previous month<\/button><span id=\"qcal-pn\"><\/span><button type=\"button\" class=\"qt-btn qt-btn-ghost qt-btn-sm\" id=\"qcal-next\">Next month<\/button><\/div><div class=\"qcal-paper\" id=\"qcal-paper\"><div class=\"qcal-sheet\" id=\"qcal-sheet\"><\/div><\/div><p class=\"qcal-cap\" id=\"qcal-cap\"><\/p><\/div><\/div><p class=\"qt-note\"><strong>Private by design:<\/strong> your calendar is drawn and saved as a PDF in your own browser. Nothing is uploaded to or stored on our server.<\/p><\/div>\n<script>(function () { function qtReady(fn) { if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', fn); } else { fn(); } } qtReady(function () { var root = document.getElementById('qcal'); if (!root) { return; } function $(id) { return document.getElementById(id); } var THEMES = [['Classic Ink','#22272e','#eceef1'],['QOT Blue','#1d6fd1','#e5effb'],['Tangerine','#e2621a','#fdece0'],['Forest','#2f6b3f','#e6f0e8'],['Teal','#0e7a7e','#e0f2f2'],['Berry','#a1265d','#f6e4ec'],['Plum','#6a3d8f','#eee6f5'],['Coral','#dc5039','#fbe8e4'],['Mustard','#a87c00','#f7eed2'],['Slate','#4a5a6a','#eaedf1'],['Navy','#1f3a68','#e3e9f3'],['Rose','#c0426a','#f9e6ed'],['Olive','#66751c','#eef1de'],['Sky','#2789c2','#e1f0f9'],['Cocoa','#7a4a2e','#f2e9e2'],['Light Grey','#5f6670','#f1f2f4'],['Soft Grey','#8d949c','#f4f5f6']]; var MONTHS = ['January','February','March','April','May','June','July','August','September','October','November','December']; var DAYS = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday']; var PAPER = { a4: { w: 210, h: 297, name: 'A4', fmt: 'a4' }, letter: { w: 215.9, h: 279.4, name: 'US Letter', fmt: 'letter' } }; var lang = String(navigator.language || 'en-US'); var usa = ['en-US','en-CA','es-US','en-PH'].indexOf(lang) !== -1; var now = new Date(); var thisYear = now.getFullYear(); var S = { layout: 'year', theme: 1, year: (now.getMonth() > 8 ? thisYear + 1 : thisYear), start: 0, wk: (usa ? 0 : 1), paper: (usa ? 'letter' : 'a4'), page: 0, shade: 'colour', corner: 'both' }; function el(tag, cls, text) { var e = document.createElement(tag); if (cls) { e.className = cls; } if (text !== undefined) { e.textContent = text; } return e; } function clear(e) { while (e.firstChild) { e.removeChild(e.firstChild); } } function monthAt(i) { var m = S.start + i; return { y: S.year + Math.floor(m \/ 12), m: m % 12 }; } function dim(y, m) { return new Date(y, m + 1, 0).getDate(); } function lead(y, m, wk) { return (new Date(y, m, 1).getDay() - wk + 7) % 7; } function dayIdx(c) { return (c + S.wk) % 7; } function isWE(c) { if (S.shade === 'none') { return false; } var d = dayIdx(c); return d === 0 ? true : d === 6; } function tintHex() { return S.shade === 'grey' ? '#eef0f2' : THEMES[S.theme][2]; } function rangeLabel() { var a = monthAt(0), z = monthAt(11); return MONTHS[a.m].slice(0, 3) + ' ' + a.y + ' to ' + MONTHS[z.m].slice(0, 3) + ' ' + z.y; } function yearTitle() { var a = monthAt(0), z = monthAt(11); return a.y === z.y ? String(a.y) : a.y + '\u2013' + String(z.y).slice(2); } function cellsOf(y, m) { var l = lead(y, m, S.wk), n = dim(y, m), out = [], i; for (i = 0; 42 > i; i++) { var d = i - l + 1; out.push(d >= 1 ? (n >= d ? d : 0) : 0); } return out; } function miniTable(y, m) { var g = el('div', 'qcal-mg'), c, r, cells = cellsOf(y, m); for (c = 0; 7 > c; c++) { g.appendChild(el('span', 'qcal-mh' + (isWE(c) ? ' qcal-we' : ''), DAYS[dayIdx(c)].charAt(0))); } for (r = 0; 6 > r; r++) { for (c = 0; 7 > c; c++) { var v = cells[r * 7 + c]; g.appendChild(el('span', 'qcal-md' + (isWE(c) ? ' qcal-we' : '') + (v ? ' qcal-n' : ''), v ? String(v) : '')); } } return g; } function mini(y, m, showYear) { var box = el('div', 'qcal-mini'), nm = el('div', 'qcal-mname', MONTHS[m]); if (showYear) { nm.appendChild(el('small', '', String(y))); } box.appendChild(nm); box.appendChild(miniTable(y, m)); return box; } function foot() { var f = el('div', 'qcal-foot'), s = el('span', '', 'Free printable calendars at '); s.appendChild(el('b', '', 'quickonlinetips.com')); f.appendChild(s); f.appendChild(el('span', '', 'QuickOnlineTips')); return f; } function viewYear(sh) { var a = monthAt(0), z = monthAt(11), cross = a.y !== z.y, i; var hd = el('div', 'qcal-yhead'); hd.appendChild(el('div', 'qcal-ytitle', yearTitle())); var side = el('div', 'qcal-yside'); side.appendChild(el('span', 'qcal-kick', 'Year at a glance')); side.appendChild(el('span', 'qcal-range', rangeLabel())); hd.appendChild(side); sh.appendChild(hd); var g = el('div', 'qcal-ygrid'); for (i = 0; 12 > i; i++) { var o = monthAt(i); g.appendChild(mini(o.y, o.m, cross)); } sh.appendChild(g); sh.appendChild(foot()); } function viewMonth(sh) { var o = monthAt(S.page), p = new Date(o.y, o.m - 1, 1), q = new Date(o.y, o.m + 1, 1), c, i; var hd = el('div', 'qcal-mhead'), left = el('div'); left.appendChild(el('div', 'qcal-mbig', MONTHS[o.m])); left.appendChild(el('div', 'qcal-myear', String(o.y))); hd.appendChild(left); if (S.corner !== 'none') { var side = el('div', 'qcal-side' + (S.corner === 'next' ? ' qcal-side1' : '')); if (S.corner === 'both') { side.appendChild(mini(p.getFullYear(), p.getMonth(), false)); } side.appendChild(mini(q.getFullYear(), q.getMonth(), false)); hd.appendChild(side); } sh.appendChild(hd); var dy = el('div', 'qcal-days'); for (c = 0; 7 > c; c++) { dy.appendChild(el('span', '', DAYS[dayIdx(c)].slice(0, 3))); } sh.appendChild(dy); var l = lead(o.y, o.m, S.wk), n = dim(o.y, o.m), rows = Math.ceil((l + n) \/ 7); var g = el('div', 'qcal-mgrid'); g.style.gridTemplateRows = 'repeat(' + rows + ',1fr)'; for (i = 0; rows * 7 > i; i++) { var d = i - l + 1, on = d >= 1 ? n >= d : false; var cell = el('div', 'qcal-cell' + (isWE(i % 7) ? ' qcal-we' : '') + (on ? '' : ' qcal-out'), on ? String(d) : ''); g.appendChild(cell); } sh.appendChild(g); var nt = el('div', 'qcal-notes'); nt.appendChild(el('b', '', 'NOTES')); nt.appendChild(el('i')); nt.appendChild(el('i')); sh.appendChild(nt); sh.appendChild(foot()); } function render() { var t = THEMES[S.theme], sh = $('qcal-sheet'), P = PAPER[S.paper]; sh.style.setProperty('--a', t[1]); sh.style.setProperty('--t', tintHex()); $('qcal-paper').style.aspectRatio = P.w + ' \/ ' + P.h; clear(sh); if (S.layout === 'year') { viewYear(sh); } else { viewMonth(sh); } $('qcal-pager').hidden = S.layout !== 'month'; $('qcal-cnf').hidden = S.layout !== 'month'; $('qcal-pn').textContent = 'Page ' + (S.page + 1) + ' of 12'; $('qcal-swname').textContent = 'Colour: ' + t[0] + ' (' + (S.theme + 1) + ' of ' + THEMES.length + ')'; $('qcal-cap').textContent = P.name + ' portrait, ' + (S.layout === 'year' ? '1 page' : '12 pages') + ', ' + rangeLabel(); var bs = $('qcal-sw').children, k; for (k = 0; bs.length > k; k++) { bs[k].setAttribute('aria-pressed', k === S.theme ? 'true' : 'false'); } $('qcal-status').textContent = ''; } function rgb(h) { return [parseInt(h.slice(1, 3), 16), parseInt(h.slice(3, 5), 16), parseInt(h.slice(5, 7), 16)]; } function makePdf() { var P = PAPER[S.paper], W = P.w, H = P.h, M = 10, t = THEMES[S.theme], A = rgb(t[1]), T = rgb(tintHex()); var INK = [27, 31, 36], GREY = [107, 115, 124], LINE = [207, 212, 218], OUT = [247, 248, 250]; var doc = new window.jspdf.jsPDF({ unit: 'mm', format: P.fmt, orientation: 'portrait' }); doc.setProperties({ title: 'Printable calendar ' + yearTitle(), creator: 'quickonlinetips.com' }); function tx(s, x, y, size, bold, col, align, sp) { doc.setFont('helvetica', bold ? 'bold' : 'normal'); doc.setFontSize(size); doc.setTextColor(col[0], col[1], col[2]); var o = { align: align || 'left' }; if (sp) { o.charSpace = sp; } doc.text(String(s), x, y, o); } function box(x, y, w, h, col) { doc.setFillColor(col[0], col[1], col[2]); doc.rect(x, y, w, h, 'F'); } function ln(x1, y1, x2, y2, wd, col) { doc.setDrawColor(col[0], col[1], col[2]); doc.setLineWidth(wd); doc.line(x1, y1, x2, y2); } function footer() { ln(M, H - M - 4.5, W - M, H - M - 4.5, 0.25, LINE); tx('Free printable calendars at quickonlinetips.com', M, H - M - 0.8, 7.5, false, GREY); tx('QuickOnlineTips', W - M, H - M - 0.8, 7.5, true, GREY, 'right'); } function pmini(x, y, w, h, yy, m, nameSize, showYear) { var cap = nameSize * 0.3528 * 0.72; tx(MONTHS[m].toUpperCase(), x, y + cap, nameSize, true, A, 'left', 0.2); if (showYear) { tx(yy, x + w, y + cap, nameSize * 0.6, true, GREY, 'right'); } var top = y + cap * 1.75, rh = (y + h - top) \/ 7, cw = w \/ 7, cells = cellsOf(yy, m), c, r; var fs = rh \/ 0.3528 * 0.62; for (c = 0; 7 > c; c++) { if (isWE(c)) { box(x + c * cw, top + rh, cw, rh * 6, T); } } for (c = 0; 7 > c; c++) { tx(DAYS[dayIdx(c)].charAt(0), x + c * cw + cw \/ 2, top + rh * 0.68, fs * 0.82, true, GREY, 'center'); } ln(x, top + rh, x + w, top + rh, 0.2, LINE); for (r = 0; 6 > r; r++) { for (c = 0; 7 > c; c++) { var v = cells[r * 7 + c]; if (v) { tx(v, x + c * cw + cw \/ 2, top + rh * (r + 1) + rh * 0.7, fs, isWE(c), isWE(c) ? A : INK, 'center'); } } } } function yearPage() { var a = monthAt(0), z = monthAt(11), cross = a.y !== z.y, i; tx(yearTitle(), M - 1, M + 20, cross ? 64 : 76, true, A, 'left', -1); tx('YEAR AT A GLANCE', W - M, M + 11, 8, true, GREY, 'right', 0.8); tx(rangeLabel(), W - M, M + 18, 11, true, INK, 'right'); ln(M, M + 24, W - M, M + 24, 1.2, A); var gy = M + 31, gb = H - M - 10, gx = 8, gyp = 6, cw = (W - 2 * M - 2 * gx) \/ 3, ch = (gb - gy - 3 * gyp) \/ 4; for (i = 0; 12 > i; i++) { var o = monthAt(i), col = i % 3, row = Math.floor(i \/ 3); pmini(M + col * (cw + gx), gy + row * (ch + gyp), cw, ch, o.y, o.m, 12, cross); } footer(); } function monthPage(idx) { var o = monthAt(idx), p = new Date(o.y, o.m - 1, 1), q = new Date(o.y, o.m + 1, 1), c, i; tx(MONTHS[o.m].toUpperCase(), M - 0.5, M + 15, 46, true, A, 'left', -0.5); tx(o.y, M, M + 26, 20, true, INK); var sw = (W - 2 * M) * 0.4, mw = (sw - 6) \/ 2; if (S.corner === 'both') { pmini(W - M - sw, M, mw, 28, p.getFullYear(), p.getMonth(), 8, false); } if (S.corner !== 'none') { pmini(W - M - mw, M, mw, 28, q.getFullYear(), q.getMonth(), 8, false); } var y0 = M + 36, cw = (W - 2 * M) \/ 7; for (c = 0; 7 > c; c++) { tx(DAYS[dayIdx(c)].slice(0, 3).toUpperCase(), M + c * cw + 2, y0 + 3.5, 8.5, true, A, 'left', 0.6); } ln(M, y0 + 5.5, W - M, y0 + 5.5, 1, A); var gy = y0 + 6, gb = H - M - 9 - 24, l = lead(o.y, o.m, S.wk), n = dim(o.y, o.m), rows = Math.ceil((l + n) \/ 7), rh = (gb - gy) \/ rows; for (i = 0; rows * 7 > i; i++) { var col = i % 7, row = Math.floor(i \/ 7), x = M + col * cw, y = gy + row * rh, d = i - l + 1, on = d >= 1 ? n >= d : false; if (!on) { box(x, y, cw, rh, OUT); } else if (isWE(col)) { box(x, y, cw, rh, T); } if (on) { tx(d, x + 2.2, y + 6.2, 14, true, isWE(col) ? A : INK); } } doc.setDrawColor(LINE[0], LINE[1], LINE[2]); doc.setLineWidth(0.25); for (i = 0; rows >= i; i++) { doc.line(M, gy + i * rh, W - M, gy + i * rh); } for (c = 0; 7 >= c; c++) { doc.line(M + c * cw, gy, M + c * cw, gb); } tx('NOTES', M, gb + 7, 7.5, true, GREY, 'left', 1); ln(M, gb + 14, W - M, gb + 14, 0.25, LINE); ln(M, gb + 21, W - M, gb + 21, 0.25, LINE); footer(); } var name; if (S.layout === 'year') { yearPage(); name = 'calendar-' + yearTitle().replace('\u2013', '-') + '-year-' + P.fmt + '.pdf'; } else { var k; for (k = 0; 12 > k; k++) { if (k) { doc.addPage(); } monthPage(k); } name = 'calendar-' + yearTitle().replace('\u2013', '-') + '-monthly-' + P.fmt + '.pdf'; } doc.save(name); return name; } var loading = false; function loadLib(cb) { if (window.jspdf) { cb(true); return; } var urls = ['https:' + '\/' + '\/cdnjs.cloudflare.com\/ajax\/libs\/jspdf\/2.5.1\/jspdf.umd.min.js', 'https:' + '\/' + '\/cdn.jsdelivr.net\/npm\/jspdf@2.5.1\/dist\/jspdf.umd.min.js']; function tryOne(i) { if (i === urls.length) { cb(false); return; } var s = document.createElement('script'); s.src = urls[i]; s.async = true; s.onload = function () { cb(!!window.jspdf); }; s.onerror = function () { tryOne(i + 1); }; document.head.appendChild(s); } tryOne(0); } function download() { if (loading) { return; } var st = $('qcal-status'); loading = true; st.textContent = 'Making your PDF...'; loadLib(function (ok) { loading = false; if (!ok) { st.textContent = 'The PDF maker could not load. Check your connection and press Download PDF again.'; return; } try { var nm = makePdf(); st.textContent = 'Done. Your PDF (' + nm + ') is in your downloads. Print it at 100% scale (Actual size).'; } catch (e) { st.textContent = 'Something went wrong while making the PDF. Please try again.'; } }); } var sw = $('qcal-sw'); THEMES.forEach(function (t, i) { var b = el('button', 'qtx-nomark'); b.type = 'button'; b.style.background = t[1]; b.setAttribute('aria-label', t[0]); b.title = t[0]; b.addEventListener('click', function () { S.theme = i; render(); }); sw.appendChild(b); }); var ys = $('qcal-year'), y; for (y = thisYear - 1; thisYear + 4 >= y; y++) { var op = el('option', '', String(y)); op.value = y; if (y === S.year) { op.selected = true; } ys.appendChild(op); } var ss = $('qcal-start'); MONTHS.forEach(function (m, i) { var op = el('option', '', m); op.value = i; ss.appendChild(op); }); $('qcal-wk').value = String(S.wk); $('qcal-pp').value = S.paper; ys.addEventListener('change', function () { S.year = Number(ys.value); S.page = 0; render(); }); ss.addEventListener('change', function () { S.start = Number(ss.value); S.page = 0; render(); }); $('qcal-wk').addEventListener('change', function () { S.wk = Number($('qcal-wk').value); render(); }); $('qcal-pp').addEventListener('change', function () { S.paper = $('qcal-pp').value; render(); }); $('qcal-sh').addEventListener('change', function () { S.shade = $('qcal-sh').value; render(); }); $('qcal-cn').addEventListener('change', function () { S.corner = $('qcal-cn').value; render(); }); var lb = $('qcal-layout').getElementsByTagName('button'); Array.prototype.forEach.call(lb, function (b) { b.addEventListener('click', function () { Array.prototype.forEach.call(lb, function (x) { x.setAttribute('aria-pressed', x === b ? 'true' : 'false'); }); S.layout = b.getAttribute('data-v'); S.page = 0; render(); }); }); $('qcal-prev').addEventListener('click', function () { S.page = (S.page + 11) % 12; render(); }); $('qcal-next').addEventListener('click', function () { S.page = (S.page + 1) % 12; render(); }); $('qcal-dl').addEventListener('click', download); render(); }); })();<\/script>\n<div class=\"qt-next\"><p class=\"qt-next-h\">Try another free tool<\/p><div class=\"qt-next-g\"><a href=\"https:\/\/www.quickonlinetips.com\/archives\/tools\/week-number\/\">Week Number Today<\/a><a href=\"https:\/\/www.quickonlinetips.com\/archives\/tools\/day-of-the-week\/\">Day of the Week Calculator<\/a><a href=\"https:\/\/www.quickonlinetips.com\/archives\/tools\/countdown-to-date\/\">Countdown to a Date<\/a><a href=\"https:\/\/www.quickonlinetips.com\/archives\/tools\/days-between-dates\/\">Days Between Dates<\/a><a href=\"https:\/\/www.quickonlinetips.com\/archives\/tools\/age-calculator\/\">Age Calculator<\/a><a href=\"https:\/\/www.quickonlinetips.com\/archives\/tools\/pomodoro-timer\/\">Pomodoro Timer<\/a><\/div><\/div>\n<p><strong>Quick answer:<\/strong> Pick a layout, a colour and the year, then press Download PDF. The calendar is made in your browser in a second or two and saved to your downloads, ready to print at 100% scale. It is free, with no sign-up and no watermark.<\/p>\n<h2>How to make a free printable calendar<\/h2>\n<ol>\n<li><strong>Choose a layout.<\/strong> &#8220;Whole year on 1 page&#8221; gives a year-at-a-glance planner. &#8220;12 monthly pages&#8221; gives a monthly calendar with big boxes to write in.<\/li>\n<li><strong>Pick a colour.<\/strong> Each of the 17 colours is used only for month names, weekday labels and soft weekend shading, so the page stays light on ink.<\/li>\n<li><strong>Set the year and paper.<\/strong> Choose the year, the start month, whether weeks start on Sunday or Monday, and A4 or US Letter paper.<\/li>\n<li><strong>Download the PDF<\/strong> and print it. Use &#8220;Actual size&#8221; or 100% in the print dialog so nothing is cut off at the edges.<\/li>\n<\/ol>\n<h2>Yearly or monthly printable calendar?<\/h2>\n<p>The <strong>yearly calendar<\/strong> fits all 12 months on one sheet. It works well on a fridge, a notice board or the inside of a planner, where you want to count weeks or see holidays and trips at a glance.<\/p>\n<p>The <strong>printable monthly calendar<\/strong> is a 12-page PDF, one month per page. Each page has large day boxes for appointments and plans, a notes strip at the bottom, and small previews of the previous and next months in the corner, like a wall calendar.<\/p>\n<h2>School year and financial year calendars<\/h2>\n<p>Change the start month to make a calendar that runs across two years. Start in August or September for a 2027-28 school calendar, in April for a financial year, or in any month you start a new project. The title shows both years, for example 2027-28.<\/p>\n<h2>Printing tips<\/h2>\n<ul>\n<li>Print at 100% or &#8220;Actual size&#8221;. &#8220;Fit to page&#8221; also works, because every page keeps a 10 mm (about 0.4 inch) margin that home printers can reach.<\/li>\n<li>The PDF uses sharp vector text, so it prints crisply on any printer and can be enlarged at a print shop.<\/li>\n<li>For a black-and-white printer, pick Light Grey or Soft Grey, and set weekend shading to light grey or white to save ink. Every date stays easy to read.<\/li>\n<li>On monthly pages you can show the previous and next month in the top corner, only the next month, or none.<\/li>\n<li>For a wall calendar, print the monthly pages on thicker paper and staple or clip them at the top.<\/li>\n<\/ul>\n<h2>FAQ<\/h2>\n<h3>Is this printable calendar really free?<\/h3>\n<p>Yes. Make and print as many calendars as you like for home, school or office use. There is no sign-up and no watermark, only a small quickonlinetips.com line in the footer.<\/p>\n<h3>Can I make a calendar for next year?<\/h3>\n<p>Yes. The year list always includes the coming years, and from October the tool opens on next year automatically, so you can print the 2027 calendar now and a 2028 calendar when you need it.<\/p>\n<h3>A4 or US Letter: which paper size should I choose?<\/h3>\n<p>Choose US Letter (8.5 x 11 inches) in the United States and Canada, and A4 (210 x 297 mm) almost everywhere else. The tool picks the usual size for your country, and you can change it.<\/p>\n<h3>Does the calendar show public holidays?<\/h3>\n<p>No. Holidays differ by country and region, so the calendar is left clean for you to add your own holidays, birthdays and school dates.<\/p>\n<h3>Can I print a calendar that starts on Monday?<\/h3>\n<p>Yes. Set &#8220;Week starts on&#8221; to Monday. This is common in the UK, Europe, India and much of the world, while Sunday is usual in the United States.<\/p>\n<p>More date tools: find this week&#8217;s number with the <a href=\"https:\/\/www.quickonlinetips.com\/archives\/tools\/week-number\/\">week number tool<\/a>, count the days to an event with the <a href=\"https:\/\/www.quickonlinetips.com\/archives\/tools\/countdown-to-date\/\">countdown timer<\/a>, or work out the gap between two dates with <a href=\"https:\/\/www.quickonlinetips.com\/archives\/tools\/days-between-dates\/\">days between dates<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Make a free printable calendar in a few clicks. Choose the whole year on one page or a printable monthly calendar with one month per page, pick one of 17 colours, set any year and start month, and download a print-ready PDF for A4 or US Letter paper. Quick answer: Pick a layout, a colour&#8230;<\/p>\n","protected":false},"author":7,"featured_media":0,"parent":65595,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":""},"class_list":["post-69979","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.quickonlinetips.com\/archives\/wp-json\/wp\/v2\/pages\/69979","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.quickonlinetips.com\/archives\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.quickonlinetips.com\/archives\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.quickonlinetips.com\/archives\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/www.quickonlinetips.com\/archives\/wp-json\/wp\/v2\/comments?post=69979"}],"version-history":[{"count":2,"href":"https:\/\/www.quickonlinetips.com\/archives\/wp-json\/wp\/v2\/pages\/69979\/revisions"}],"predecessor-version":[{"id":69982,"href":"https:\/\/www.quickonlinetips.com\/archives\/wp-json\/wp\/v2\/pages\/69979\/revisions\/69982"}],"up":[{"embeddable":true,"href":"https:\/\/www.quickonlinetips.com\/archives\/wp-json\/wp\/v2\/pages\/65595"}],"wp:attachment":[{"href":"https:\/\/www.quickonlinetips.com\/archives\/wp-json\/wp\/v2\/media?parent=69979"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}