I'm Nadia, and I built HEICtoPDF — it turns iPhone HEIC photos
into PDFs without the file ever leaving the browser. I maintain it myself as an indie side
project, so read this as a maker post, not a neutral review.
The interesting part of building it wasn't the conversion. It was deciding, early, that
nothing gets uploaded — and then living with everything that decision took away.
Why "no upload" was the starting point, not a feature
Look at who actually needs HEIC turned into PDF. An iPhone has shot HEIC by default since
iOS 11, and a lot of upload forms still won't take it: government portals, visa and benefit
applications, job application systems, insurance and expense claims, print services.
So the file someone is converting is usually a photo of a passport, a driver's licence, a
signed form, a utility bill with their address on it, a medical receipt. That is the whole
population of this tool.
"Drop your ID onto our server and we'll send you back a PDF" is a bad shape for that job,
even when the server is honest and deletes things on schedule. The user has no way to
verify any of it. Doing the work locally is the only version of this where the promise is
structural rather than a policy statement.
That framing is easy to write on a landing page. What follows is the bill.
What the constraint costs
A file size ceiling. 10MB per input file. On a server you scale past this by renting a
bigger machine; in a browser tab you're spending someone else's device memory, on hardware
you know nothing about, and the failure mode isn't a 500 — it's the tab dying while they
watch. So the cap is set where it is on purpose, and it does turn some files away.
A page ceiling on merging. You can convert a batch and then combine the results into one
multi-page PDF, up to 30 pages. Same reason. Thirty pages covers the actual use case —
"my landlord wants all of this as one file" — and stops well short of someone dropping a
holiday album in.
Lossy output, and I have to say so. Each photo is re-encoded as JPEG at quality 0.85 and
fitted to an A4 page. That is a deliberate trade: forms and portals have their own upload
limits, so a PDF that is faithful but 30MB fails at the next step anyway. But it means a
large iPhone photo gets scaled to fit the page, and the PDF is not a bit-for-bit copy of
your original. If you need the untouched image, keep the HEIC file too. I'd rather say this
plainly than let someone find out later.
Performance you can't fix from your side. Server-side, a slow conversion is a problem you
own and can throw hardware at. Client-side, it runs on whatever phone or laptop the person
has, and all you can do is be honest about it and keep the work small.
No state to be helpful with. Nothing is stored, so there's no history, no "pick up where
you left off", no resuming a batch after a reload. Converted PDFs are cleaned up after ten
minutes. Every session starts from zero — which is the point, but it does mean giving up
every feature that would have been built on top of a server-side record.
What it deliberately doesn't do
- No HEIC to JPG. The name is the scope. People asking for JPG are solving a different problem and there are plenty of tools for it.
- No OCR, no text extraction, no compression settings, no page templates. Every one of those is a reasonable request and every one of them widens the tool past the thing it's supposed to be good at.
- No accounts, no stored files, no history. See above — there's nowhere to put them.
Where the constraint actually pays off
The case I didn't anticipate well enough is merging. Almost nobody converting HEIC has
exactly one photo. They have six photos of a form and one recipient who wants one file.
So the flow is: drop in the whole batch, each one converts, and once at least two are done
a "combine into one PDF" option appears. Page order follows the file list and you move
files up or down with the arrows before combining. It works on Safari on the phone the
photos are already on, which matters more than it sounds — the alternative for a lot of
people is emailing photos to themselves so they can do it on a computer.
Merging is also where the no-upload decision stops being an abstraction. Combining seven
photos of your lease into one document is precisely when you'd least like to hand them to a
stranger's server, and it's the operation most online converters make you do exactly that
for.
Would I take the constraint again
Yes, but I'd write the limits into the interface earlier than I did. A ceiling you discover
by hitting it reads as a bug; the same ceiling stated up front reads as a design decision,
and it is one. Most of the work of building something deliberately narrow turns out to be
telling people where the edges are before they walk into them.
If you have iPhone photos that a form won't accept, it's at
heictopdf.dev — free, no sign-up, nothing to install. And if you
need the original quality or a different output format, use something else; that's a real
answer, not a modest one.
Top comments (0)