# Roll labels

> Thermal label printer rolls: size, dpi and direction.

Source: https://82label.app/en/docs/roll/

On a roll each label is one printed page: ten data rows print ten labels in a row. Any size works; just give it in millimetres.

```js
{
  v: 1,
  name: 'Product label',
  paper: { kind: 'roll', dpi: 203, gap: 2 },
  label: { width: 50, height: 30 },
  elements: [ /* … */ ],
}
```

| Key | Meaning |
| --- | --- |
| `dpi` | Printer resolution, 203, 300 or 600. Barcode bars are snapped to whole dots so they scan. If unsure, 203 (most thermal label printers). |
| `gap` | Gap between labels in mm. Informational; the printer driver handles the real gap. |
| `direction` | 0, 90, 180 or 270, to match how labels come out of the printer. 90 and 270 swap the page width and height. |

## Common sizes

The designer's quick picks (`ROLL_SIZES`). Type any other size by hand.

| Width × height (mm) | Typical use |
| --- | --- |
| `30×10` |  |
| `30×15` |  |
| `30×20` |  |
| `35×15` |  |
| `40×20` |  |
| `40×30` |  |
| `45×25` |  |
| `45×50` |  |
| `50×30` |  |
| `50×50` |  |
| `50×80` |  |
| `60×40` |  |
| `60×60` |  |
| `70×30` |  |
| `70×50` |  |
| `70×60` |  |
| `80×40` |  |
| `80×50` |  |
| `80×120` |  |
| `90×60` |  |
| `90×120` |  |
| `100×30` |  |
| `100×50` |  |
| `100×80` |  |
| `100×100` |  |
| `100×150` | Courier waybill |
| `102×152` | 4×6 inch waybill (overseas) |

```js
import { presetTemplate, ROLL_SIZES } from '@82label/core';

const t = presetTemplate('roll', 50, 30); // an empty 50×30 template
t.elements.push({ type: 'barcode', value: '{{sku}}' }); // no position: centred
```

## Printer setup

- Set the driver's paper size to the label size. The print agent sets it for every job.
- Calibrate label sensing (gap or black mark) once on the printer, usually by holding the feed button or from the driver.
- With browser printing, pick the label printer and paper in the dialog and keep the scale at 100%.
