PDFPipe

Label sheets / Letter sheet, 30 labels

30-per-sheet address label PDF template

Thirty 2.625 by 1 inch labels in a 3 by 10 grid on a Letter sheet, which is the most common laser address label stock in North America.

The dimensions

One measurement in four units. Millimetres and inches are what a printer works in; points are what the PDF itself stores; pixels are only useful for checking a screen mock-up against the real thing.

  • Millimetres: 215.9 x 279.4 mm
  • Inches: 8.5 x 11 in
  • Points: 612 x 792 pt
  • CSS pixels: 816 x 1056 px at 96 dpi

Where the size comes from

The layout is fixed by the die that cuts the label stock, so it is not a design decision: 0.5 inch of unlabelled paper at the top and bottom, 0.1875 inch at each side, three columns 2.625 inches wide with 0.125 inch gaps, and ten rows of exactly 1 inch. Every one of those numbers has to be reproduced exactly or the print drifts out of the labels down the page.

What gets printed at this size

  • bulk address labels for a mailing
  • asset and inventory tags printed in batches
  • product labels for short runs, on an office laser printer

Margins that survive a real printer

The page margin is the sheet margin: 0.5 inch top and bottom, 0.1875 inch left and right. Inside each label, keep 2mm clear of the die cut edge, because sheet feed rollers introduce a small amount of skew and a label printed to its own edge will show it.

The CSS

Letter sheet, 30 labels is one of the six named formats the render API accepts, so it can be set in the request options or in the document's own CSS. Setting it in CSS keeps the size with the template, which is usually what you want.

css
@page {
  size: Letter;
  margin: 0.5in 0.1875in;
}

.sheet {
  display: grid;
  grid-template-columns: repeat(3, 2.625in);
  /* The gap between columns is real die-cut waste. There is none
     between rows: the labels touch. */
  column-gap: 0.125in;
  grid-auto-rows: 1in;
}

.label {
  padding: 2mm 3mm;
  overflow: hidden;
  font-size: 9pt;
  line-height: 1.15;
}

The render request

With a named format the size travels in the options and the CSS is optional.

json
{
  "html": "<!doctype html>...",
  "options": {
    "format": "Letter",
    "margin": { "top": "18mm", "bottom": "18mm", "left": "16mm", "right": "16mm" }
  }
}

The mistake people make

Letting the grid grow by even a fraction. An error of half a millimetre per row is invisible on the first label and 5mm out by the tenth, which puts the last row of a sheet half onto the backing paper. Fix the row height absolutely and never let content stretch it.

Frequently asked

What is Letter sheet, 30 labels in pixels?

816 x 1056 px at 96 dpi, at the 96 pixels to the inch that CSS assumes. That number is useful for comparing a screen mock-up against the page, and useless for laying out the document: use 215.9 x 279.4 mm instead, because a page laid out in pixels shifts whenever the render scale changes.

Can I pass Letter sheet, 30 labels as a format?

Yes. "Letter" is one of the six format values the API accepts, alongside A4, A3, A5, Letter, Legal and Tabloid.

Does landscape need a different page size?

No. Landscape is the same rectangle turned, so it is set as an orientation rather than as swapped dimensions. Writing the width and height the other way round produces the same page and makes the intent harder to read later.

Other page sizes

Sizes that come up in the same conversation, and one from each of the other families.

Paste the CSS below into the playground and see the page box it produces.