← All writing

An exact size, not a guess

Most compressors give you a quality slider and hope. TargetSize takes the number the upload form gave you and works backwards from it — and measures the answer before showing it.

Every so often a form asks for a photo under 500 KB, or a PDF under 2 MB, and refuses to say anything else. You have a 4 MB scan. What now?

The usual answer is a quality slider. Drag it to 60, export, check the size, drag it to 45, export again. Three or four rounds later you have something that fits, and no particular reason to think it is the best version that would have.

TargetSize inverts that. You type the number the form gave you, and it searches for the largest, best-looking file that stays under it.

The number has to mean what the form means

This sounds pedantic and is not. A kilobyte is 1,000 bytes or 1,024 bytes depending on who is counting, and the difference compounds: a “1 MB” limit is either 1,000,000 bytes or 1,048,576. Upload forms and government portals overwhelmingly mean the first. A tool that quietly means the second will produce a file it calls “under your 1 MB limit” that the form rejects.

So TargetSize is decimal throughout — 1 KB is 1,000 bytes, 1 MB is 1,000,000 — and every rounded figure has its exact byte count a hover away. It also aims a little under your limit by default, because a portal that counts a byte differently, or compares with >= rather than >, should still take the file.

Measured, never predicted

The rule the whole product is built on: a size you are shown was read from the finished file.

That sounds obvious. It is not what most tools do. Estimating a result from the encoder settings is faster and usually close, and “usually close” is exactly the failure that costs someone an application deadline. So the search encodes, measures the real bytes, and only then decides whether that attempt fits. If nothing fits, you are told why and offered the smallest achievable file — clearly labelled as over the limit, never dressed up as success.

For PDFs there is a further step. After a document is produced it is reopened from its own bytes, its pages counted and rendered, and the text, links and form fields that were promised are confirmed still present. A page object can survive surgery while its content stream does not; the page count still looks right and the file opens to a blank sheet. That check is the difference between shipping that file and catching it.

Nothing is uploaded, and that is structural

Files are read, processed and discarded in your own browser tab. There is no server of ours for them to reach.

That is not a promise about our conduct — it is a property of the package. The extension requests no host permissions, so it cannot read the pages you visit. Its content security policy sets connect-src 'none', which instructs the browser to block every outbound request it might make. It could not upload your file if a bug tried to.

The consequence worth stating plainly: we hold no copy. If you lose the result, we cannot recover it. Keep your originals — the software never modifies or deletes the file you opened, but your backups are yours.

What it will not tell you

TargetSize changes the size, dimensions and format of a file. It does not know whether the result will be accepted by anyone.

The size presets named after documents — passport, visa, ID — set pixel dimensions and nothing else. A photo that is exactly 413 × 531 is not therefore a valid passport photo. Head position, background colour, expression, glasses, lighting, how recent the photo is and print quality are all set by the authority you are applying to, and those rules change and differ by country and by application route.

We say that in the app, directly under the preset, rather than only in a disclaimer nobody opens. If your application depends on it, check the authority’s current published requirements, and use an official service or a professional photographer.

TargetSize is coming to the Chrome Web Store shortly.