Free printable graph paper

Build a custom grid in seconds, or download a ready-made A4 or US Letter PDF.

Grid · dot · lined2–25 mm spacingTrue-scale print
Custom graph paper generatorRuns privately in your browser
#gpgen { --ink:#1d3557; --paper:#ffffff; --bg:#eef1f4; --line:#c9d2da; --accent:#2b6cb0; font-family: -apple-system, "Segoe UI", Roboto, Arial, sans-serif; color:#22303c; background:var(--bg); border:1px solid var(--line); border-radius:10px; padding:18px; max-width:860px; margin:0 auto; box-sizing:border-box; } #gpgen * { box-sizing:border-box; } #gpgen .gp-wrap { display:flex; gap:18px; flex-wrap:wrap; } #gpgen .gp-controls { flex:1 1 240px; min-width:230px; } #gpgen .gp-preview { flex:1 1 320px; display:flex; align-items:flex-start; justify-content:center; } #gpgen fieldset { border:none; margin:0 0 14px; padding:0; } #gpgen legend { font-size:12px; font-weight:600; letter-spacing:.04em; text-transform:uppercase; color:#5a6b7b; margin-bottom:6px; padding:0; } #gpgen .gp-seg { display:flex; gap:6px; flex-wrap:wrap; } #gpgen .gp-seg button { flex:1; padding:7px 10px; font-size:13px; border:1px solid var(--line); background:#fff; border-radius:6px; cursor:pointer; color:#22303c; } #gpgen .gp-seg button[aria-pressed="true"] { background:var(--ink); border-color:var(--ink); color:#fff; } #gpgen label.gp-row { display:flex; align-items:center; justify-content:space-between; font-size:13px; margin:8px 0; gap:10px; } #gpgen input[type=range] { flex:1; accent-color:var(--accent); } #gpgen .gp-val { font-variant-numeric:tabular-nums; min-width:52px; text-align:right; font-size:13px; } #gpgen .gp-colors { display:flex; gap:8px; } #gpgen .gp-colors button { width:26px; height:26px; border-radius:50%; border:2px solid transparent; cursor:pointer; padding:0; } #gpgen .gp-colors button[aria-pressed="true"] { border-color:var(--ink); } #gpgen .gp-actions { display:flex; gap:8px; margin-top:16px; } #gpgen .gp-actions button { flex:1; padding:10px 12px; font-size:14px; font-weight:600; border-radius:8px; cursor:pointer; border:1px solid var(--ink); } #gpgen #gp-print { background:var(--ink); color:#fff; } #gpgen #gp-svg { background:#fff; color:var(--ink); } #gpgen .gp-sheet { background:var(--paper); box-shadow:0 6px 18px rgba(29,53,87,.18); border:1px solid #dfe5ea; max-width:100%; height:auto; } #gpgen .gp-note { font-size:11px; color:#7a8a99; margin-top:10px; text-align:center; } @media (max-width:640px){ #gpgen .gp-wrap{flex-direction:column} }
Paper type
Paper size
Spacing
Line color
Line weight

Prints at true scale. Set printer margins to "None" or "Default" and scale to 100%.

(function(){ var state = { type:"square", size:"a4", space:5, color:"#9fb9dd", weight:0.4 }; var SIZES = { a4:{w:210,h:297,css:"A4"}, letter:{w:215.9,h:279.4,css:"letter"} }; var svg = document.getElementById("gp-sheet"); function seg(id, key){ var box = document.getElementById(id); box.addEventListener("click", function(e){ var b = e.target.closest("button"); if(!b) return; box.querySelectorAll("button").forEach(function(x){ x.setAttribute("aria-pressed","false"); }); b.setAttribute("aria-pressed","true"); state[key] = b.dataset.v; render(); }); } seg("gp-type","type"); seg("gp-size","size"); seg("gp-color","color"); function slider(id, key, valId, unit){ var el = document.getElementById(id); el.addEventListener("input", function(){ state[key] = parseFloat(el.value); document.getElementById(valId).textContent = el.value + " " + unit; render(); }); } slider("gp-space","space","gp-space-val","mm"); slider("gp-weight","weight","gp-weight-val","mm"); function build(){ var p = SIZES[state.size], w = p.w, h = p.h, s = state.space, m = 10; var cols = Math.floor((w - 2*m)/s), rows = Math.floor((h - 2*m)/s); var x0 = (w - cols*s)/2, y0 = (h - rows*s)/2, parts = [], i; if(state.type === "square"){ for(i=0;i<=cols;i++) parts.push(''); for(i=0;i<=rows;i++) parts.push(''); return frame(w,h,''+parts.join("")+''); } if(state.type === "dot"){ var r = Math.max(state.weight*0.9, 0.25), j; for(i=0;i<=cols;i++) for(j=0;j<=rows;j++) parts.push(''); return frame(w,h,''+parts.join("")+''); } var y = 25, mside = 15; while(y < h - 15){ parts.push(''); y += s; } return frame(w,h,''+parts.join("")+'' + ''); } function frame(w,h,inner){ return { w:w, h:h, markup:'' + '' + inner + '' }; } function render(){ var b = build(); svg.setAttribute("viewBox","0 0 "+b.w+" "+b.h); svg.setAttribute("width","340"); svg.innerHTML = b.markup.replace(/^]*>/,"").replace(/$/,""); } document.getElementById("gp-print").addEventListener("click", function(){ var b = build(), css = SIZES[state.size].css; var win = window.open("", "_blank"); if(!win) return; win.document.write('Print' + '@page{size:'+css+';margin:0}html,body{margin:0;padding:0}svg{display:block}' + ''+b.markup+''); win.document.close(); win.focus(); setTimeout(function(){ win.print(); }, 250); }); document.getElementById("gp-svg").addEventListener("click", function(){ var b = build(); var blob = new Blob([b.markup], {type:"image/svg+xml"}); var a = document.createElement("a"); a.href = URL.createObjectURL(blob); a.download = state.type + "-paper-" + state.space + "mm-" + state.size + ".svg"; a.click(); URL.revokeObjectURL(a.href); }); render(); })();

Need graph paper right now? Use the generator above to create exactly the sheet you want — square grid, dot grid, or lined paper — in A4 or US Letter, with any spacing from 2 mm to 25 mm. Everything prints at true scale, so a 5 mm grid really is 5 mm on paper. Prefer a ready-made sheet? Download one of the free PDF templates below. No signup, no watermark walls, just paper you can print.


Free graph paper PDF downloads

Every file below is a vector PDF sized for its paper format, so lines stay sharp at any printer resolution. Print at 100% — not “fit to page” — to keep the spacing accurate.

Square grid paper

Dot grid paper

Dot grid is the go-to layout for bullet journalling: the dots guide your writing without boxing in sketches or tables.

Lined paper


Which spacing should I use?

5 mm and 1/4 inch are the general-purpose sizes for maths homework, engineering sketches and bullet journals. 1 cm and 1/2 inch give bigger squares for graphs with few data points, handwriting practice, or younger students. College ruled (about 7 mm line spacing) fits more lines per page than wide ruled (about 8.7 mm), which is easier for larger handwriting.

Printing tips

In your printer dialog set scaling to 100% or “Actual size”. Browsers and PDF viewers often default to shrinking the page slightly to fit the printable margin, which throws the grid off by a few percent. If your printer cannot print edge to edge, that small white border is normal and does not affect the spacing.