Hand Lettering Grid Calculator
Guideline spacing from letter height and style.
About this calculator
This calculator lays out the horizontal guidelines for a hand-lettering or calligraphy practice sheet, translating a single x-height measurement into every other line a letterer needs. Cap height, ascender height, and descender depth are each computed as a ratio of your chosen x-height — defaults of 1.4×, 1.5×, and 0.6× reflect common lettering proportions, though the sliders let you match a specific style. Because ascender height already spans from the baseline up through the x-height, the total row height is ascender height plus descender depth, not a simple sum of all three zones. Between rows, the calculator adds an inter-row gap equal to the descender depth — a common rule of thumb for comfortable spacing that keeps descenders from crowding the next line's ascenders.
Rows per page divides your usable page height (paper height minus top and bottom margins) by the row-plus-gap height and floors the result; the code deliberately rounds the division to six decimal places first, because floating-point arithmetic can produce a result like 54.999999999999 for what should be an exact 55-row fit, which would otherwise get truncated to 54. If you've dialed in a slant angle for italic or script lettering, the calculator also reports the horizontal spacing between slant guides, using basic trigonometry from your x-height and slant angle. Print the guideline positions directly onto practice paper, or use them to set up ruled lines in a drawing app.
Inputs
Results
Row height (mm)
16.8
How to Use This Calculator
- Enter x-height (mm), Cap height / x-height ratio, and Ascender / x-height ratio.
- Set Descender / x-height ratio, Slant angle (°), and Paper height (mm).
- Adjust Margin (mm) as needed.
- Review the Row height (mm) result.
- Use Rows per page and Cap height (mm) to inform your decision.
How the result changes with x-height (mm)
| x-height (mm) | Row height (mm) |
|---|---|
| 4 | 8.4 |
| 6 | 12.6 |
| 12 | 25.2 |
| 20 | 42 |
What each input means
- x-height (mm)
- Desired x-height (height of lowercase a, e, o, x) in millimeters.
- Cap height / x-height ratio
- Capital letter height as a multiple of x-height. Typical: 1.3–1.5.
- Ascender / x-height ratio
- Ascender height (b, d, h) as multiple of x-height. Typical: 1.4–1.6.
- Descender / x-height ratio
- Descender depth (g, p, y) as multiple of x-height. Typical: 0.5–0.7.
- Slant angle (°)
- Letter slant from vertical. 0 = upright, 5–12° = italic, 20°+ = dramatic script.
- Paper height (mm)
- Paper height in mm. US Letter = 279, A4 = 297.
- Margin (mm)
- Top and bottom margin in mm.
What each result means
- Row height (mm)
- Total height of one lettering row from ascender line to descender line.
- Rows per page
- Number of complete lettering rows that fit on your paper.
- Cap height (mm)
- Height of capital letters from baseline.
- Ascender height (mm)
- Height from baseline to ascender line.
- Descender depth (mm)
- Depth from baseline to descender line.
- Slant guide spacing (mm)
- Horizontal distance between slant guidelines at the baseline. 0 = upright (no slant guides).
How this is calculated
Worked example, using the default values
- Identify Input Parameters4 parametersx-height (mm) = 8, Cap height / x-height ratio = 1.4, Ascender / x-height ratio = 1.5, Descender / x-height ratio = 0.6 = 7 input(s) provided
- Calculate Row heightRow height = ascenderHeightMm + descenderDepthMm16.8 = 16.8
- Calculate Rows per pageRows per page11 = 11
- Calculate Cap heightCap height = xHeightMm * capRatio11.2 = 11.2
Engine last updated . Checked against 3 independently-derived tests — how we verify calculators. Built by Paul Gunder, a software engineer, not a licensed financial, medical, or legal professional.
Frequently Asked Questions
Why is total row height ascender height plus descender depth, and not x-height plus ascender plus descender?
Ascender height is measured from the baseline, and by definition it already spans through the x-height on its way up to the ascender line — x-height isn't a separate zone stacked on top of it. So the calculator adds only ascender height (baseline to ascender line) and descender depth (baseline to descender line) to get the full vertical span of one row, avoiding the x-height being counted twice.
Why does the calculator round the rows-per-page division to six decimal places before flooring it?
Chained floating-point multiplications (x-height times several ratios, then divided into usable page height) can land a hair below a whole number — for example 54.999999999999 instead of an exact 55 — purely from binary floating-point representation, not from an actual measurement discrepancy. Flooring that raw value would wrongly discard a row that actually fits, so the code rounds to six decimals first to absorb that floating-point noise before applying Math.floor.
What's the reasoning behind using descender depth as the inter-row gap?
It's a common lettering convention: sizing the gap between rows to match your descender depth gives just enough clearance so that one row's descenders (g, p, y) don't visually collide with the next row's ascenders, without wasting extra paper on oversized gaps. If your hand has unusually short or long descenders, this gap automatically scales with your descenderRatio input rather than staying fixed.
How does changing the slant angle affect my practice sheet?
The slant angle doesn't change any of the horizontal guideline heights (cap, ascender, baseline, descender) — it only computes the horizontal spacing between diagonal slant guides, using x-height divided by the tangent of the slant angle. At 0° (upright) that spacing is 0 and no slant guides are needed; as the angle increases toward a script-style slant, the guides get closer together, giving you more frequent angle references across the page.
Related Calculators
The questions that sit next to this one — chosen by subject, including calculators filed under a different category.
More in Creative, Media & Design.