There’s a particular kind of defeat that has nothing to do with the work. You’ve written the brief, scanned the exhibit, exported the deck — the hard part is finished, the thinking is done — and then a grey box at the bottom of a web form turns you away. Maximum file size: 5 MB. Your file is 5.31. Not 5.31 of anything you care about; 5.31 megabytes, a quantity you had no reason to think about until this exact second, standing between you and a deadline. The document is right. The content is right. The only thing wrong is a number, and the number is not negotiable.

What makes that moment worse than it should be is the mismatch in how the two sides count. The form counts in bytes. It has a hard, exact ceiling — some integer number of bytes — and it will accept everything below that line and reject everything above it, including the file that misses by a rounding error. Meanwhile every tool you reach for to fix the problem counts in vibes. “Compress PDF.” “Reduce file size.” A quality slider from 1 to 100 with no units on it. You drag the slider, you re-export, you re-upload, you find out. The whole loop is a guess checked against a wall you can’t see until you hit it.

Preflight exists because that’s a strange way to run into a wall. A limit is a number. If the obstacle is exact, the answer should be exact too — measured, not estimated, and known before you submit rather than discovered by the form after.

A number, not a vibe

So the first thing Preflight does is refuse to guess. You give it a limit — the classic email-attachment ceiling, or your own exact figure typed to the byte — and it measures the file against that line the way the form will: in bytes, not “about.” And not only bytes. The page count, whether the text is actually searchable, whether the file is encrypted, whether the page dimensions are in range — each one gets the same three-column treatment. Here is the observed value. Here is the requirement. Here is the verdict. No “should be fine.” No “roughly.” A limit is a number, so the report is numbers.

That sounds almost too plain to be a product, and the plainness is the point. Most software in this corner treats the file size as something to nudge in the right direction and hope about. But the form isn’t going to round in your favor at 5.02 MB, so a tool that speaks in approximations has quietly handed the real, exact question back to you at the worst possible moment. The honest thing is to answer the question the form is actually asking — is this under the line, yes or no — and to answer it in the same currency the form uses.

The upload form has a hard edge and no sympathy: it accepts 5,242,880 bytes and rejects 5,242,881. A tool that answers in “about 5 megabytes” isn’t being friendly. It’s leaving you to find the edge by walking off it.

The source is sacred

Here is the decision that took the most nerve, and it’s the one you’d never see on a feature list. When a file is over the limit, Preflight does not open your document and start deleting things out of it. It builds a separate copy — a new file, staged off to the side, optimized down to at or below the exact target while preserving the page geometry and keeping the text searchable — and it verifies that copy on its own merits before the copy ever lands. Then it publishes the copy with an atomic rename. The file you selected is never modified, never moved, never overwritten. If no safely reduced version can meet the target, Preflight refuses and tells you, rather than shipping you a degraded document that technically fits.

The reason to build it that way is not caution for its own sake. The file you picked is the one you trust — it’s the finished thing, the good copy, sometimes the only copy. An optimizer that overwrites in place is asking you to bet that copy on the compression working out, on the tool having understood your document, on nothing going wrong between “reading” and “writing.” That’s a bet you shouldn’t have to place to shave a few hundred kilobytes. So we designed it out. The source is an input, and inputs are sacred; the output is a new artifact that has to earn its place by fitting and by surviving its own verification. You are never one bad optimization away from losing the original, because the original is never in the blast radius. This is the same instinct that runs under everything the studio ships — the reason we only build what we run is that we’re the ones who’d have to explain it if a tool of ours ate a file it promised to help.

Proof you can keep

Because the whole product turns on an exact number, the receipts are exact too. Preflight recomputes a SHA-256 of both files before it compares them, so “these are the same document, smaller” is a checked claim and not a hope. You get a side-by-side view with synchronized pages and zoom, so “still searchable, still laid out right” is something you see rather than something you’re told. And you get a receipt you can keep: original bytes, output bytes, the target, the savings, down to the digit. Run a hundred of them and the batch writes its own receipt in JSON or CSV. None of it phones home — there’s no network code in the app at all, which makes it the rare privacy policy that’s an architectural fact instead of a promise. Even the on-device explanations are built only from verbatim passages checked against the PDF’s own text; the app would rather quote your document than narrate it.

The through-line is a kind of respect for the exact. The form’s ceiling is exact and merciless, and most of the frustration around file limits comes from tools that meet that exactness with a shrug. Preflight meets it with an equal and opposite precision: it measures to the byte, it fixes without gambling your original, and it hands you proof you can check yourself. The document was always fine. The only problem was arithmetic — so we answered the arithmetic, exactly, and left your file alone. The form doesn’t round in your favor. Neither should the thing that gets you under its line.