Free hex grid generator
Hex grid generator — say which measurement you mean
Give a hexagon size, state whether that number is the side, the width across the flats or the width across the corners, and this lays out the grid in either orientation with the coordinate labels a map, a game board or a program expects. No charge, no account, and the geometry is carried in real millimeters, so a cell asked for at 20 mm arrives at 20 mm on paper. Those three measurements stand as 1 to 1.7321 to 2 — a one-inch hexagon from a quilt shop is two inches from point to point — so all three are restated on every result rather than left for you to guess at.
- 100% free
- No signup
- 2 orientations
- 3 ways to give the size
- 4 label schemes
The short diagonal, and what a hex map or a battle mat means by its hex size, because it is the width a piece has to sit inside. It is the side times 1.7321.
Which makes the side 11.55 mm, the flats 20.00 mm and the corners 23.09 mm.
Rows run straight across and every other row is pushed half a hexagon sideways. This is what most hex maps and wargame boards use.
A pointy-top lattice packs more rows into a tall sheet and a flat-top more columns into a wide one, so this changes the count as well as the shape.
Has to be at least as wide as the margin your print dialog is set to, or the last column falls off the page.
Empty cells. Right for anything that will be drawn or written in, and the only setting that lets the hexagons go small.
Counting from 1, so under odd-r the first row sits flush and the second is pushed. Two programs that disagree about this read each other’s maps sheared by one.
8 columns × 14 rows, 112 hexagons
Drawn at the size it says
- One side
- 11.55 mm
- 0.455 in
- Across the flats
- 20.00 mm
- 0.787 in
- Across the corners
- 23.09 mm
- 0.909 in
Column centers sit 20.00 mm apart and row centers 17.32 mm apart — not the same number, and neither of them equal to a hexagon, because interlocking rows advance by three quarters of the long diagonal rather than by a whole one. The lattice covers 170.0 × 248.3 mm, of which 10.0 mm is the half-hexagon the shifted rows stick out by. One hexagon encloses 346.4 mm², so the cells hold 38798 mm² between them.
Scaled down to fit the panel. Judge the labels and the packing here; judge the size on paper, since the relationship between a browser pixel and a millimeter holds only once the sheet is out of the printer.
Work it out from the printed sheet: divide the millimeters your ruler reads along row 1 by the millimeters the bottom line claims, and multiply by 100. Leave it at 100 until you have measured one.
The print comes out in two parts
Sheet one is the title block this page carries at the top; the grid is sheet two, alone and at full size. Ask the dialog for page 2. Saving the file instead skips the title block entirely and keeps the millimeters in the file where other software can read them.
Every outline is a separate six-sided polygon rather than a repeating fill, so a cell can be selected, recolored or deleted in a vector editor without touching its neighbors.
Reading the four offset names without looking them up
The letter says which axis is straight: r for rows, which only happens on pointy-top, and q for columns, which only happens on flat-top. The word says which of the other lines is pushed half a cell. So pointy-top has odd-r and even-r, flat-top has odd-q and even-q, and there is no fifth combination. Axial coordinates are computed from whichever pair is set, which is why the numbers inside the cells change when you switch it — the shape on the paper does not.
If the grid is going over a picture rather than under a pencil, the grid overlay burns numbered divisions into the image itself, and the graph paper generator is the square, isometric, dot and lined half of this, with a printed bar for checking that the press told the truth.
How to get a hex sheet that fits what it is for
Three steps: what the number means, what the coordinates mean, and what the printer did to both.
Say which of the three hexagon measurements your number is
A hexagon has a side, a width across the flats and a width across the corners, and they stand as 1 to 1.7321 to 2. Quilt shops sell hexagon papers by the side, so a one-inch hexagon is one inch on each edge and two inches point to point. Map and mat makers quote across the flats, because that is the width a piece has to sit inside. Cutting and nesting software reports across the corners, being the circle the shape needs. Pick the one your source used and the panel restates the other two in millimeters and inches, so you never have to trust that you picked right.
Choose the orientation, then the offset the coordinates will follow
Pointy-top puts a vertex at the top and runs unbroken rows sideways; flat-top puts an edge at the top and runs unbroken columns downward. Whichever you pick, the other axis is staggered, and which of its lines gets pushed half a cell has a name: odd-r and even-r on pointy-top, odd-q and even-q on flat-top. That choice does not change one line on the paper and changes every axial coordinate printed inside the cells, which is exactly why a grid exported under one convention and imported under the other comes out sheared by a row.
Print one, lay a ruler along the bottom line, and correct the press
The measurement line along the foot of the sheet gives all three hexagon dimensions and the distance between the centers of the first and last columns — a span of 100 mm or more, which is a far more sensitive test than measuring one cell. Divide what your ruler reads by what the line claims, multiply by 100, and put that in the printer field. The drawing is then enlarged by the reciprocal, so a press returning 96% is handed 104.2% and gives back the size you asked for. Fix the dialog's own scale setting first if it has one, since that repair holds for every job rather than for this sheet.
Technical specifications
| Orientations | 2 — pointy-top with a vertex at 12 o'clock and unbroken horizontal rows, flat-top with an edge at 12 o'clock and unbroken vertical columns. Not interchangeable: the neighbor directions differ by 30 degrees |
|---|---|
| Ways to state the size | 3, in the ratio 1 : 1.7321 : 2 — one side, across the flats, across the corners. All three are restated in millimeters and inches every time, in both unit systems |
| Packing | A staggered line advances three quarters of the long diagonal, not a whole one. Pointy-top rows sit 0.75 of the across-corners apart with columns a full across-flats apart; flat-top swaps the two |
| Cell labeling | 4 schemes: none, column letter with row number, the four-digit column-row number wargames print, and axial q,r derived from the chosen offset. Offsets are odd-r and even-r on pointy-top, odd-q and even-q on flat-top |
| Size limits | 4 mm on the short axis for empty cells; with labels the floor is set by type, warning below 1.6 mm of printed digit — about 5.3 mm across the flats for a four-digit label, 4.6 mm for a two-character one. 4,000 cells per sheet |
| A default sheet | A4 upright, 15 mm untouched edge, pointy-top at 20 mm across the flats: 8 columns by 14 rows, 112 hexagons over 170.0 × 248.3 mm, each cell enclosing 346.4 mm² |
| Printer correction | One percentage between 80 and 120, derived by measuring the column-to-column span printed along the foot. The drawing is enlarged by its reciprocal so the press hands back the stated size |
| What is sent anywhere | Nothing. Every hexagon is computed from your numbers in this tab, and the file is written by the same code that drew the preview |
Frequently asked questions
What does a shop mean by a 1 inch hexagon?
It depends entirely on who is selling it, which is why this page asks before it draws. English paper piecing papers are measured along one side, so a 1 inch hexagon is 1 inch on each of six edges, 1.732 in across the flats and a full 2 in from point to point — noticeably larger than most people picture, and it encloses 2.598 square inches. A gaming mat sold as 1 inch hexes almost always means across the flats, since the number that matters is whether a base fits between two parallel edges. If you have the physical object rather than a spec, put a ruler across two opposite flat sides, use the across-the-flats setting, and you cannot be wrong.
Pointy-top or flat-top — does it matter which I print?
It matters as soon as anything has to line up with something else, because the two are not rotations you can undo on paper. Pointy-top gives you continuous horizontal rows, which is why hex maps, wargame boards and anything with row-based numbering use it: you can read straight across without stepping. Flat-top gives continuous vertical columns and a flat edge at the top of every cell, which board games favor because a tile then has an obvious upright. The neighbor directions differ too — a pointy-top cell has east and west neighbors and no north, a flat-top cell has north and south and no east. Print the wrong one and every adjacency in your design is rotated 30 degrees.
Why do the coordinates change when I switch between odd and even?
Because the coordinate is derived from the offset and the offset is what you just changed. In an offset scheme the staggered lines are pushed half a cell, and there are two ways to do that: push the odd-numbered ones or push the even-numbered ones. Converting to axial subtracts a different correction in each case, so the same hexagon on the same sheet is q=3 under one and q=4 under the other. Nothing on the paper moves. The reason this is a control rather than a constant is that map editors and game engines disagree about the default, and a file written under one and read under the other does not fail loudly — it shears, with every second row drifting one cell sideways.
Why are the wargame labels four digits with leading zeros?
So that every label is the same width and no reading is ambiguous. Two digits of column followed by two of row means 0307 is column 3, row 7, and it cannot be misread as 37 or as 30 followed by 7. It also sorts correctly as plain text, which matters the moment a set of hexes goes into a list rather than onto a map. This page widens to three digits per axis automatically once a grid passes 99 in either direction, because a label that silently truncates is worse than a long one. If the extra characters are shrinking the type too far, the letter-and-row scheme carries the same information in two or three characters.
How small can the hexagons go before the sheet stops being useful?
4 mm on the short axis is the floor for empty cells, and labels raise that floor a long way. Printed digits stop separating below about 1.6 mm of type, and the type is sized to fit inside a cell — roughly 0.72 of its width shared between the characters — so a four-digit label needs a hexagon about 5.3 mm across the flats and a two-character label survives down to about 4.6 mm. The panel computes the actual type size and warns before it prints something illegible rather than after. The other ceiling is quantity: 4,000 hexagons, because each cell is its own six-sided outline in the file rather than a repeated pattern.
Why does the grid stick out half a hexagon on one side?
That is the stagger, and it cannot be removed without breaking the tiling. Alternate lines sit half a cell across, so a rectangular block of hexagons is never a rectangle: on a pointy-top grid the shifted rows overhang the straight rows by half a width, and on a flat-top grid the shifted columns overhang by half a height. The panel counts that overhang into the total extent, which is why the sheet fits one column fewer than dividing width by hexagon width would suggest. Some generators hide it by cutting the protruding cells in half, which looks tidier and gives you a row of half-hexes nothing can be placed in.
Can I open the saved file and change it?
Yes, and that is the reason it saves as SVG rather than as an image. Every cell is written as its own polygon with its own six coordinates, so a vector editor lets you select one hexagon and fill it, delete a block to make a coastline, or restyle every outline at once. The physical size is in the file too, as a width and a height in millimeters with one drawing unit to the millimeter, so a layout program places it at the size it claims instead of guessing at 96 dots to the inch the way it must with a bitmap. Labels are real text and stay editable and searchable.
About hexagons, and the three numbers people call their size
A regular hexagon is the only one of the three shapes that tile a plane where every neighbor is the same distance away, which is the whole reason games and maps reach for it: on a square grid a diagonal step is 1.414 times a straight one and every rule has to decide what to do about that, while on a hex grid all six neighbors are one step. The price is that the shape has two different widths and a side, and none of them is obviously the size. Across the corners is twice the side. Across the flats is the side times the square root of three, or 1.7321. So a hexagon described as one inch is either 1 in, 1.732 in or 2 in wide depending on the trade the description came from, and a grid built on the wrong reading of it is 73% out — not a tolerance you discover late, but a sheet that does not fit the thing it was drawn for. Area follows the side as 2.598 times its square, so that same ambiguity is a factor of three in how much floss, felt or paper a cell consumes.
The second thing that surprises people is that a block of hexagons is never a rectangle. Rows interlock, so each one advances only three quarters of a hexagon rather than a whole one, and alternate rows sit half a width across, which leaves a half-cell of overhang down one side and shallow notches along the top and bottom. Counting that overhang is why a sheet holds one fewer column than dividing the paper by the hexagon width suggests, and hiding it — by clipping the protruding cells in half, as several generators do — trades a tidy edge for a row of half-hexes that nothing can be placed in. The stagger also forces a decision that has no visual consequence and a large practical one: which alternate line is the shifted one. The four names for that choice are odd-r, even-r, odd-q and even-q, the letter naming the straight axis and the word naming the pushed parity, and every axial coordinate on the sheet is derived from it. Two tools that disagree about it do not error; they shear, which is a bug you find three hours into redrawing a map.
The reasons people want one printed are narrower than the reasons they want squares, and they are worth naming because each implies a different setting here. English paper piecing is hexagons by definition and measures them by the side, so a sheet at the right side length is the template itself — cut the papers out and baste. Tabletop maps want across the flats and labeled cells, because the number in the hexagon is how a rule refers to it. Chemistry wants small, empty, pointy-top cells, since a benzene ring drawn freehand comes out lopsided and one drawn on the lattice does not. What does not want hexagons at all is loom beadwork: a loom holds warp threads in straight parallel lines and every bead sits square to its neighbors, which is why the bead loom pattern generator charts on rectangles and not on this. If your lattice is square after all, the graph paper generator is the other half of this pair, with a printed bar for proving the printer behaved; and if you would rather build a picture out of characters than out of cells, the ASCII art generator works the same way on a glyph lattice, where a cell is one monospaced character wide and roughly twice as tall.
Nothing about this grid goes anywhere
Nothing you type here leaves the tab. The arithmetic runs in JavaScript on your own machine — there is no server to send it to, no account to sign in to and nothing stored between visits. Close the tab and nothing of it remains.
The hexagons are not fetched from a library of pre-drawn sheets, because there is no library: a size, an orientation and two counts become a few hundred polygons in this tab each time you change a control. The saved file is assembled by the same code and handed straight to the browser’s download, so it never passes through anything on the way to your disk.