How-To

How to Build a Hash-Verified, Bates-Numbered Exhibit Packet

Our post on FRE 901 and 902 covers what those rules mean. This one is the practical companion: what a hash value actually is, how you'd generate one, what Bates numbering actually is, and how the two mechanically fit together to turn a raw text-message export into a court-ready exhibit packet.

Hash values, in plain terms

A hash value — for this purpose, a SHA-256 hash — is a fingerprint generated from a file's exact contents. Run the same file through the algorithm twice and you get the same 64-character result every time. Change a single byte anywhere in the file — one character, one timestamp, one pixel — and the hash comes out completely different. That's what makes it useful as a verification tool: if a copy of a file produces the same hash as the original, that's strong mathematical evidence the copy is identical, byte for byte. It's not a summary or a rough comparison — it either matches exactly or it doesn't.

Both major operating systems have a built-in way to generate one — no extra software required:

  • Windows: open Command Prompt and run certutil -hashfile "path\to\your\file" SHA256. Certutil is a built-in Windows utility; the command prints the SHA-256 hash of the file you point it at.
  • Mac: open Terminal and run shasum -a 256 /path/to/your/file. The -a 256 flag specifies SHA-256 — shasum defaults to a different algorithm if you leave it off. You can drag the file from Finder into the Terminal window instead of typing the path by hand.

The practical workflow: generate and record the hash of your native export as soon as you have it, before anyone opens it, edits it, or works from it. If a question ever comes up later about whether the working copy matches what was originally exported, that recorded hash is what lets you answer it. This is also the mechanism behind the certification path in FRE 902(14) — a qualified person certifying that the hash of a copy matches the original is what lets that copy self-authenticate without live testimony. We won't re-explain the rule itself here since the linked post already covers it — this section is just the mechanics of producing the hash the rule relies on.

Bates numbering, in practice

Bates numbering is the practice of stamping a unique, sequential identifier on every page of a document production — usually a short party or case label plus a zero-padded number, like SMITH-000047. It's standard practice in litigation because it gives every single page in a production a permanent, unique reference: instead of describing a page or attaching it loosely, anyone — attorney, opposing counsel, or the court — can cite it by its Bates number and know exactly which page is meant. For a small handful of pages this can feel like overkill, but for any exhibit production of real size, attorneys and courts generally expect it, and its absence makes a production noticeably harder to work with.

Applying it is typically a matter of tooling rather than manual labor. Adobe Acrobat Pro has a built-in Bates numbering feature — under its PDF editing tools, with a Bates Numbering option that lets you set a numbering format and apply it across a document or a batch of documents at once, updating automatically if pages are added or rearranged. Other PDF and legal document management tools offer similar built-in stamping features. This is the kind of tooling a paralegal or attorney's office typically already has access to, which is part of why this step is usually handled on that side of the process rather than by a self-represented party from scratch.

How it fits together for a text-message exhibit

Put together, this is a coherent chain from raw export to court-ready exhibit: start from a native export, not a screenshot. Generate and record its hash value before anyone works with it or makes a copy, so there's a fixed reference point to check against later. Then, when the export is turned into the printed or PDF pages that actually get filed or handed to opposing counsel, Bates-number those pages so every one of them can be individually referenced. The native export establishes what the evidence is; the hash establishes that the working copy matches it; the Bates numbers make the final exhibit pages usable in a filing or a negotiation. Each step covers a different gap, and skipping one doesn't get compensated for by doing the other two carefully.

To be explicit about where Verity fits and where it doesn't: a Verity report is a pattern and behavioral analysis of your export — it is not a hash certification, and generating a Verity report does not Bates-number or hash-verify your exhibit pages for you. Hashing a file, certifying it, and Bates-numbering a production are typically an attorney's or paralegal's responsibility, using the operating-system tools and PDF software described above, not something automated by this site. This is general information about a common process, not legal advice — what your court or case actually requires varies, so talk to an attorney about your specific situation. For the workflow around triaging and organizing the underlying export before it gets to this stage, see our paralegal's guide to organizing text evidence.

Analyze the export before it becomes an exhibit

Upload your native export and get a free health score in minutes — the analysis runs in your browser, nothing is uploaded.

Get your free health score →