Skip to main content
BlogProduct

Thermal Receipt Design Principles for Epson TM-T82

Bold is not decoration on a thermal printer — it is contrast control. A working guide to hierarchy, column budgets and what survives cheap paper.

Matthews Wong

Software Engineer

August 202611 min read
Thermal Receipt Design Principles for Epson TM-T82

Key Takeaway

Designing a thermal receipt means designing inside a 48-column monospaced grid where every dot is either burned or blank. Emphasis comes from four ESC/POS controls — bold, double-strike, character size and font selection — and using them sparingly is what makes a total readable on cheap paper.

A receipt is the only user interface most customers of a small shop will ever hold. It is also the most constrained interface I have ever designed for: no colour, no greys, no proportional type, one column 72 millimetres wide, and a printing surface that starts fading the moment it leaves the printer. Everything that makes web typography pleasant is unavailable.

What is left is a small set of physical controls and a lot of discipline. This is the set of principles I arrived at after redesigning the same receipt about fifteen times against a TM-T82, and after watching cashiers and customers actually use the paper.

The medium decides the design

Three properties of thermal line printing shape every decision that follows, and none of them are negotiable in software.

  • A dot is on or off. There is no anti-aliasing and no grey. Anything that relies on subtle weight differences — a light footnote, a hairline rule — either prints solid black or does not print at all.
  • The grid is fixed. Font A occupies 12 by 24 dots and yields 48 columns on 80 mm paper; Font B is 9 by 17 dots and yields 64. On the 58 mm rolls used by mobile printers, that same Font A gives you about 32. Your layout is a character count, not a pixel measurement.
  • The image is chemistry, not pigment. The head heats a coating that darkens, so contrast depends on paper quality, head temperature and print speed. The same byte stream looks noticeably different on a premium roll and on the cheapest roll in the market.

Once you accept these, the design question stops being what looks good on screen and becomes what stays readable after the paper has spent a week in a wallet.

The four emphasis controls, and what each costs

ESC/POS gives you a handful of ways to make text stand out. They are not interchangeable — each trades something away, and knowing what makes the difference between a receipt that reads well and one that is just loud.

ControlWhat it doesWhat it costs
ESC E 1 — emphasizedPrints each character darker and slightly heavier; the standard boldSlightly slower and more energy per dot; loses all meaning if used on more than a few lines
ESC G 1 — double-strikePrints the same line twice for extra density on tired heads or poor paperDoubles the time for that line and can smear if the paper is already dark
GS ! n — character sizeDoubles height, width or both, so a header reads across a counterDouble width halves your column budget from 48 to 24 on that line
ESC M 1 — Font BSmaller 9 by 17 cell, 64 columns, ideal for legal and footer textNoticeably harder to read on cheap paper and for older eyes
GS B 1 — reverse videoWhite text on a solid black block, maximum attentionBurns the entire cell area: slow, heavy on the head and battery, and the block fades unevenly

My working rule is that a receipt may use at most three of these on any single ticket. Beyond that the reader loses the ordering between them, and the receipt reads as noise with some large text in it.

Diagram of four stacked receipt zones from store name down to footer, each labelled with the ESC/POS command that produces it
The ladder in full, with the command that produces each rung. Level 2 should appear once or twice on a ticket — if the subtotal, tax, total and change are all emphasized, none of them is.

Four levels of hierarchy, and no more

Print typography gives you dozens of levels. A receipt supports four, and trying for a fifth just weakens the other four. This is the ladder I use, expressed directly as the commands that produce it.

Level 1  store name        GS ! 0x11 + ESC E 1   double size, emphasized
Level 2  section label      ESC E 1               normal size, emphasized
Level 3  item lines         Font A, plain         the body text of a receipt
Level 4  legal / footer     ESC M 1 (Font B)      smaller, deliberately quiet

TOKO SUMBER REJEKI          <- level 1, the only double-size line
Jl. Diponegoro 12                level 4
2026-08-18 14:32  Kasir: Rina    level 4
------------------------------------------------
Kopi Susu Gula Aren               2 x 25.000
                                      50.000    <- level 3
Roti Bakar Coklat                 1 x 18.000
                                      18.000
------------------------------------------------
TOTAL                                 68.000    <- level 2, emphasized
TUNAI                                100.000
KEMBALI                               32.000
------------------------------------------------
      Terima kasih atas kunjungan Anda           level 4

The important discipline is that level 2 exists exactly once or twice per receipt. If the subtotal, the tax line, the total and the change are all emphasized, then none of them is, and the customer scans the whole block looking for the number they care about.

Print your candidate layout, then look at it from a metre away for one second — the distance and time a customer actually gives a receipt. Whatever you can read in that second is your real hierarchy, regardless of what you intended.

Why bold is a functional requirement, not a style choice

On a screen you can adjust colour, weight and size independently. On thermal paper, emphasized print is the only control that directly increases the amount of darkened coating per character, which means it is the only control that buys you resistance to fading, weak paper and a worn head.

  • Bold the total. It is the one line that gets read after the paper has aged, photographed for an expense claim, or squinted at in a badly lit stockroom.
  • Bold the store name, and set it double size. It is what makes the ticket identifiable when it is one of thirty in a shoebox at tax time.
  • Never bold body text. Emphasizing every item line costs print time on every sale and removes the contrast that made the total findable.
  • Reach for double-strike only as a remedy. If a specific shop reports pale receipts, enabling double-strike on the total is a two-byte fix that buys months before the head or the paper supplier has to change.

There is a second reason to be sparing that only shows up on battery-powered printers: darkening more dots draws more current. A layout full of emphasized text and black blocks measurably shortens a mobile printer's shift.

A store receipt held in front of a wooden surface, its printed text visibly lighter in places
The same layout after handling. Direct-thermal print is a heat-triggered reaction in the coating, so it keeps reacting to heat, light and friction after printing — which is why the lines you most need later are the ones that must be darkest today. Photo: Виктор Пинчук / Wikimedia Commons, CC BY 4.0

Designing for a document that is actively fading

Thermal paper has no ink. The dark areas are a chemical reaction in a coating, and that coating stays reactive: sunlight, a hot dashboard, the oils on a receipt in a back pocket and simple abrasion all keep pushing it. A receipt that is crisp today can be unreadable in a summer month, and archival storage guidance for thermal rolls is genuinely about temperature and humidity ranges rather than about the printer.

The design implication is concrete. Assume partial loss and make sure the surviving 20 per cent is the part that matters: shop identity, date, transaction number and total. Fine print can fade without consequence; a faded total is a dispute. If customers need a durable copy — a warranty, a business expense — print a short URL or a QR code that resolves to the digital receipt instead of pretending the paper will last.

Resist the large black logo. A full-width reverse block or a heavy raster image is the slowest, hottest, most power-hungry thing a thermal printer can do; it wears the head unevenly, it curls the paper, and it fades into a grey smudge faster than text does. A crisp text header outlives a beautiful logo every time.

Whitespace, feed and the cut

Vertical space on a receipt costs money and time in a way it never does on screen: at 203 dpi a blank Font A line is roughly three millimetres of paper, and a shop doing eight hundred tickets a day pays for every one of them.

  • Use exactly one blank line between logical blocks, and never two. The eye reads the gap; the second gap only buys paper waste.
  • Feed before you cut, not before you print. The gap between print head and blade is why the cut command has a feed variant, and getting this wrong slices the last line in half.
  • End with the smallest feed that lets a hand grab the ticket. Three to four lines is usually enough; six is a habit inherited from older hardware.

A receipt design checklist

Before shipping a layout, I run it through five checks. They take ten minutes and have caught something almost every time.

  1. Print it on the cheapest paper the shop actually buys, not the sample roll that came in the box.
  2. Count the columns of your longest possible product name plus your largest possible amount, and confirm they fit in 48 with a space between them.
  3. Read the ticket from a metre away and confirm that the shop name and the total are the only things you can resolve.
  4. Leave one copy on a sunny windowsill for a week and re-read it. This single test has changed more of my layouts than any style guide.
  5. Hand it to the cashier who will use it eight hundred times and ask what they wish were bigger. They will tell you immediately.

Receipt design is constraint design. There is no colour to hide behind and no font to swap in, so the whole craft is deciding which two or three lines deserve the printer's darkest output and letting everything else stay quiet. Get that ordering right and a 48-column monospaced ticket reads better than most dashboards.

FAQ

Frequently Asked Questions

Short answers to what readers ask most about this topic.

Why does bold matter so much on a thermal receipt?

Emphasized print is the only control that directly increases how much of the paper's coating is darkened per character. That extra density is what survives cheap paper, a worn print head and the gradual fading of thermal paper, which is why the total and the shop name should be emphasized even when nothing else is.

How many levels of typographic hierarchy can a receipt support?

Four in practice: a double-size emphasized store name, an emphasized total or section label, plain Font A body text, and smaller Font B for legal and footer lines. Adding a fifth level weakens the other four, because the reader loses the ordering between them and scans the whole ticket instead.

Should I print my shop logo on the receipt?

Usually not. A raster logo or a full-width reverse block is the slowest and most power-hungry thing a thermal printer can do, it wears the head unevenly, it curls the paper, and it fades into a grey smudge faster than text does. A crisp double-size text header identifies the shop just as well and costs almost nothing.

Why do thermal receipts fade, and what can design do about it?

There is no ink: the dark areas are a heat-triggered reaction in the paper's coating, and that coating keeps reacting to heat, light, oils and friction after printing. Design cannot stop it, but it can decide what survives — keep shop identity, date, transaction number and total in the darkest, largest treatment, and offer a QR code or short URL for a durable digital copy.

How much blank space should a receipt use?

One blank line between logical blocks and no more. At 203 dpi a blank Font A line is roughly three millimetres of paper, so a shop doing several hundred tickets a day pays for every extra gap. End with the smallest feed that still lets a hand grab the ticket, typically three or four lines before the cut.