Skip to content
BatesKit

How do I Bates number PDFs on a Mac?

Most dedicated Bates tools are Windows executables, which is why this question usually ends in advice about Parallels. It does not have to: this runs in Safari or Chrome on macOS, stamps the whole set in one pass, and never uploads anything.

Do it now

Open the tool with numbering on

Free for 20 files and 60 pages with every feature on, $19 once for unlimited. The PDFs are read and written on your Mac — nothing is uploaded.

  1. Open the tool in Safari, Chrome, Edge or Firefox on macOS. Nothing to install, no Rosetta, no VM.

  2. Drag the PDFs in from Finder. Set the prefix, the padding and the start number.

  3. Run it. Chrome and Edge write straight into a folder you choose; Safari gets a ZIP, because it cannot write to a directory directly.

How it actually works

Why this is awkward on macOS in the first place

Bates numbering is a litigation-support job, and litigation support software grew up on Windows. The dedicated batch stampers are .exe downloads; the platforms that run anywhere are per-seat annual contracts aimed at review teams. Preview cannot do it. Automator can be made to draw text on pages with enough scripting, but you are then maintaining a script that has to get crop boxes, rotation and cross-file sequencing right, which is where hand-rolled attempts go wrong.

A browser is the one runtime that is genuinely the same on every machine, which is the whole reason this tool lives in one.

What differs between Safari and Chrome here

One thing, and it is about where the output goes. Chrome and Edge support writing directly into a folder you pick, so stamped files appear next to each other as they finish. Safari and Firefox do not implement that, so the run collects the output and hands you a single ZIP at the end. The stamping itself, the sequencing, the verification pass, the manifest and the load files are identical.

Everything else is ordinary macOS behaviour: drag from Finder, drop on the page. Files can also come from an external drive or a mounted share — they are read through the browser’s file APIs, not copied anywhere first.

Apple Silicon, and why performance is not the interesting question

The work is JavaScript and WebAssembly in the tab, so it runs natively on Apple Silicon with no translation layer, and a set of a few hundred ordinary documents finishes in the time it takes to read the confirmation. The real constraint is memory rather than CPU: each PDF is held while it is written, so a set of very large scans is where a Mac with 8 GB will complain first. If OCR is switched on for a scanned set, that is the slow step by a wide margin.

What you get, which is the same on every platform

One continuous sequence across the set with a prefix, suffix and digit padding you choose; reserved thousands at document boundaries; a refusal to reissue ranges you declare as already produced. The number placed against each page’s own crop box and rotation, as a real text object that Ctrl+F and a review platform can find. Every output re-opened and checked before delivery. A manifest CSV with page count, BegBates, EndBates and a SHA-256 per document, plus optional Summation .dat and Opticon .opt load files. And the metadata and redaction checks over the same queue, which are the two things that leak out of a production that was numbered perfectly.

Open the tool

Free for up to 20 files and 60 pages, with every feature enabled. $19 once for unlimited.