# The smallest font that survives a fax, measured

> One passage at 4 to 16 pt in four open fonts, rasterised at both fax resolutions and read by OCR. The numbers from our run, the method and its limits.

Page: https://faxforagents.com/blog/smallest-font-that-survives-a-fax/
Last changed: 2026-11-12

One passage at 4 to 16 pt in four open fonts, rasterised at both fax resolutions and read by OCR. The numbers from our run, the method and its limits.

- Published Nov 8, 2026
- Updated Nov 12, 2026
- About 9 min read ([dated method](https://faxforagents.com/facts.json))
- By [Fax for Agents team](https://faxforagents.com/about/)

Every font we tested read at 98% or better from 7 pt at standard fax resolution, and from 6 pt at fine resolution. At 5 pt standard, accuracy dropped to between 31.56% and 95.84%. These are our own numbers from one run on 2026-11-08, read by OCR software, not by a person. It is a simulation: no fax call was placed and no carrier was involved.

The code, the passage and every OCR output are in the [fax legibility bench](https://github.com/faxforagents/fax-legibility-bench) repository, MIT licensed.

## What we measured

The bench sets one passage of plain prose on a US Letter page with 1 inch margins. The passage is the opening of Chapter I of *Pride and Prejudice* by Jane Austen. The text comes from [Project Gutenberg eBook 1342](https://www.gutenberg.org/ebooks/1342). It is 1,201 characters after whitespace is collapsed. It has no digits.

The four open fonts are the ones installed on the test machine, Ubuntu 24.04. Liberation Serif and Liberation Sans are version 2.1.5 and DejaVu Sans is 2.37. Noto Sans comes from the Ubuntu fonts-noto-core package, version 20201225.

The [send fax docs](https://faxforagents.com/docs/send-fax/) list the same families in the renderer that turns HTML into fax pages for Fax for Agents. The bench uses its own layout, so these numbers say nothing about that renderer's output.

Each page was set at every whole size from 4 to 16 pt with [Typst](https://typst.app/) 0.15.1, with hyphenation off. Ghostscript 10.02.1 then rasterised each PDF straight to 1-bit black and white, with no anti-aliasing. It used the two resolutions of [ITU-T T.4](https://www.itu.int/rec/T-REC-T.4). Standard is 204 by 98 dots per inch and fine is 204 by 196.

A fax printer shows each scan line as a band of the page. To match that, the bench repeats every row until the pixels are square, without smoothing.

Tesseract 5.3.4 with the English model then read each image.

Character accuracy is 1 minus the edit distance between the OCR text and the passage, divided by 1,201. Curly quotes and dashes are folded to plain ones on both sides first. Case and punctuation still count. We set 98% as the pass mark before the first run.

As a control, the bench also reads every page at 300 dpi in 8-bit gray. That mode is not a fax. It shows what the OCR engine manages when resolution is not the limit.

## Results at standard resolution

Character accuracy in percent, 204 by 98 dpi, 1-bit, run on 2026-11-08.

| Size | Liberation Serif | Liberation Sans | DejaVu Sans | Noto Sans |
| --- | --- | --- | --- | --- |
| 4 pt | 47.04 | 63.20 | 76.52 | 64.70 |
| 5 pt | 75.77 | 31.56 | 93.26 | 95.84 |
| 6 pt | 99.00 | 94.59 | 98.92 | 98.75 |
| 7 pt | 99.33 | 99.42 | 99.67 | 99.17 |
| 8 pt | 99.67 | 99.75 | 99.25 | 99.08 |
| 9 pt | 99.67 | 99.25 | 99.67 | 99.75 |
| 10 pt | 99.83 | 99.92 | 99.92 | 99.83 |
| 12 pt | 99.92 | 99.75 | 99.92 | 99.92 |
| 14 pt | 100.00 | 99.75 | 99.75 | 99.92 |
| 16 pt | 100.00 | 99.83 | 99.42 | 100.00 |

The odd sizes 11, 13 and 15 pt are in the repository's results file. None of them is below 99.75%.

## Results at fine resolution

Character accuracy in percent, 204 by 196 dpi, 1-bit, same run.

| Size | Liberation Serif | Liberation Sans | DejaVu Sans | Noto Sans |
| --- | --- | --- | --- | --- |
| 4 pt | 91.42 | 94.17 | 96.75 | 97.92 |
| 5 pt | 97.42 | 98.83 | 98.67 | 99.33 |
| 6 pt | 98.17 | 99.25 | 99.92 | 98.50 |
| 7 pt | 99.67 | 99.42 | 99.92 | 99.75 |
| 8 pt | 99.75 | 99.67 | 99.92 | 99.92 |
| 10 pt | 100.00 | 99.92 | 99.92 | 99.92 |
| 12 pt | 99.83 | 99.83 | 99.92 | 99.92 |
| 16 pt | 100.00 | 99.92 | 99.83 | 100.00 |

The sizes left out of this table (9, 11, 13 to 15 pt) are all 99.75% or higher. The 300 dpi gray control never fell below 98.17%, at any size from 4 pt up.

## What the numbers say

The edge is sharp. At standard resolution, every font passed at 7 pt and three of four passed at 6 pt. Liberation Sans scored 94.59% at 6 pt. One size lower, the scores spread from 31.56% to 95.84%.

Fine resolution moves the edge down by about a point. At 5 pt fine, three of the four fonts passed. The fourth, Liberation Serif, scored 97.42%.

The gray control passed at every size, so the engine can read 4 and 5 pt type. The losses there come with the fax image.

From 10 pt up, the errors that remain are mostly the same few shapes. A capital I read as a vertical bar in the sans fonts, and a lower case k read as a capital. At 8 pt standard, DejaVu Sans had "so" read as "50" twice. On a fax full of account numbers, that kind of swap matters more than the percentage suggests.

The Liberation Sans score at 5 pt standard (31.56%) is lower than at 4 pt (63.20%). The OCR output shows why. At 5 pt the engine split some lines into separate blocks and put them out of order. The edit distance counts every misplaced character as an error. Below 6 pt, the scores mix misread letters with lines read in the wrong place.

## The same cases on Tesseract 5.5.4

Added on 2026-11-12. [Tesseract 5.5.4](https://github.com/tesseract-ocr/tesseract/releases/tag/5.5.4) came out on 2026-10-28, so we ran all 156 cases again with it.

The fonts, Typst, Ghostscript, the English model file and the settings were the ones from the first run. The new run was in a container, with Tesseract built from source and linked to Leptonica 1.82.0. As a check, we built 5.3.4 the same way and ran it first. It gave the published score for every case, so the changes below come from the engine version.

The conclusions did not move. The smallest passing size is the same for every font at both resolutions and in the control. No case crossed the 98% mark in either direction.

The scores moved a little. The edit distance changed in 41 of the 156 cases. That is 22 of 52 at standard resolution, 16 of 52 at fine and 3 of 52 in the control. Version 5.5.4 made fewer errors in 23 of those cases and more in 18. It is not a net gain. The edit distance summed over all 156 cases went from 3,732 to 3,748.

The largest change was 1.17 percentage points. That was Liberation Sans at 4 pt standard, which went from 63.20% to 62.03%. From 7 pt up, no case changed by more than 2 characters out of 1,201.

Fonts out of four whose score changed, by size.

| Size | Standard | Fine | 300 dpi gray control |
| --- | --- | --- | --- |
| 4 pt | 4 | 4 | 0 |
| 5 pt | 3 | 3 | 0 |
| 6 pt | 3 | 1 | 0 |
| 7 pt | 2 | 2 | 0 |
| 8 pt | 2 | 1 | 1 |
| 9 pt | 0 | 0 | 0 |
| 10 pt | 1 | 1 | 0 |
| 11 pt | 2 | 0 | 1 |
| 12 pt | 2 | 1 | 0 |
| 13 pt | 0 | 1 | 1 |
| 14 pt | 1 | 1 | 0 |
| 15 pt | 2 | 1 | 0 |
| 16 pt | 0 | 0 | 0 |
| All sizes | 22 | 16 | 3 |

The result tables above are still the first run. The repository has the [5.5.4 results](https://github.com/faxforagents/fax-legibility-bench/tree/main/results-tesseract-5.5.4) and a [case by case comparison](https://github.com/faxforagents/fax-legibility-bench/blob/main/results-tesseract-5.5.4/comparison.md).

## Limits of this test

- It is one passage of English prose, 1,201 characters, with no digits. Fax pages are often forms, tables and numbers.
- It is one OCR engine with its default page layout analysis. A person reads differently, and so does another engine.
- It is a clean image. There is no scanner, no paper, no phone line, no error correction and no receiving printer.
- The result tables are from one run. A repeat of the 6 to 16 pt sizes on the same engine version gave the same numbers, because every step is deterministic.

So the table is a best case. A real fax adds noise at each of those steps, and small text loses first.

## What we would do with it

Keep body text at 10 pt or above. In this run that is 3 pt clear of the edge at standard resolution, which leaves room for the noise a real line adds. Keep small print, such as footers and form labels, at 8 pt or above. Use bold or a larger size for numbers someone has to copy, because those swaps are the ones that cost.

If you send through an API, check the pages before you send. Fax for Agents returns a page preview for each document, described in the [send fax docs](https://faxforagents.com/docs/send-fax/). The [fax API](https://faxforagents.com/fax-api/) quotes the document to the number before anything is sent.

## Run it yourself

The bench needs Python 3.12 or later, uv, Typst, Ghostscript, Tesseract with the English model, and the fonts. From a clone of the repository:

```
`uv sync uv run python bench.py`
```

It writes `results/results.csv`, `results/results.md`, the OCR text for every case and an `environment.json` with tool versions and font hashes. The full run is 156 cases: 13 sizes, 4 fonts and 3 modes.

## Questions

### What is the minimum font size for a fax?

In our simulation of 2026-11-08, every one of four open fonts read at 98% or better from 7 pt at standard resolution. At fine resolution every font held from 6 pt. At 5 pt standard, accuracy fell to between 31.56% and 95.84%. The run had no phone line or receiving machine, so treat these as best-case numbers. For body text we would stay at 10 pt or above.

### Does fine resolution help small text?

Yes, by about a point in our run. Fine resolution doubles the scan lines to 196 per inch. At 5 pt, three of the four fonts stayed at 98% or better in fine mode and none did in standard mode. From 10 pt up, both modes read above 99.4% for every font. The gain shows up below 7 pt.

### Is this a test of real fax transmissions?

No. It is a simulation of the page image. The bench renders a PDF, turns it into a 1-bit image at fax resolution and runs OCR on that image. No number is dialled, no modem or carrier is involved and nothing is printed. Scanner noise, line errors and the receiving machine's printer are all missing, so real faxes can read worse.

## Cite this bench

This entry is for the bench, version 0.1.0. The result tables are from the run of 2026-11-08 with Tesseract 5.3.4. Give the run date and the Tesseract version when you quote a number.

Plain text

```
`JSB Holdings LLC (2026). fax-legibility-bench (version 0.1.0). URL: https://faxforagents.com/blog/smallest-font-that-survives-a-fax/`
```

BibTeX

```
`@misc{faxlegibilitybench2026, author = {JSB Holdings LLC}, month = {11}, title = {fax-legibility-bench}, url = {https://faxforagents.com/blog/smallest-font-that-survives-a-fax/}, year = {2026} }`
```

## On this site

- [Send a fax](https://faxforagents.com/docs/send-fax/)

## Related posts

- [What a fax API is and how one works, from PDF to T.30](https://faxforagents.com/blog/what-is-a-fax-api/) A file becomes monochrome pages. Then the cover sheet, the quote, the T.30 call phase by phase, and the delivery evidence a receipt holds. Sources named.
- [How to send a fax in 2026: machine, computer, email or API](https://faxforagents.com/blog/how-to-send-a-fax/) Every way to send a fax today, what each one needs and what it costs. How to know the pages arrived, and what to do when the line is busy.
