<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Nadia Kessler</title>
    <description>The latest articles on DEV Community by Nadia Kessler (@nadiakesslerdev).</description>
    <link>https://dev.to/nadiakesslerdev</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4083979%2Fb4337947-0b9d-4af6-80c1-5bba22ab1c79.png</url>
      <title>DEV Community: Nadia Kessler</title>
      <link>https://dev.to/nadiakesslerdev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nadiakesslerdev"/>
    <language>en</language>
    <item>
      <title>I built a HEIC to PDF converter that never uploads your file. Here's what that cost.</title>
      <dc:creator>Nadia Kessler</dc:creator>
      <pubDate>Sat, 29 Aug 2026 09:20:41 +0000</pubDate>
      <link>https://dev.to/nadiakesslerdev/i-built-a-heic-to-pdf-converter-that-never-uploads-your-file-heres-what-that-cost-mj5</link>
      <guid>https://dev.to/nadiakesslerdev/i-built-a-heic-to-pdf-converter-that-never-uploads-your-file-heres-what-that-cost-mj5</guid>
      <description>&lt;p&gt;I'm Nadia, and I built &lt;a href="https://heictopdf.dev/" rel="noopener noreferrer"&gt;HEICtoPDF&lt;/a&gt; — it turns iPhone HEIC photos&lt;br&gt;
into PDFs without the file ever leaving the browser. I maintain it myself as an indie side&lt;br&gt;
project, so read this as a maker post, not a neutral review.&lt;/p&gt;

&lt;p&gt;The interesting part of building it wasn't the conversion. It was deciding, early, that&lt;br&gt;
nothing gets uploaded — and then living with everything that decision took away.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why "no upload" was the starting point, not a feature
&lt;/h2&gt;

&lt;p&gt;Look at who actually needs HEIC turned into PDF. An iPhone has shot HEIC by default since&lt;br&gt;
iOS 11, and a lot of upload forms still won't take it: government portals, visa and benefit&lt;br&gt;
applications, job application systems, insurance and expense claims, print services.&lt;/p&gt;

&lt;p&gt;So the file someone is converting is usually a photo of a passport, a driver's licence, a&lt;br&gt;
signed form, a utility bill with their address on it, a medical receipt. That is the whole&lt;br&gt;
population of this tool.&lt;/p&gt;

&lt;p&gt;"Drop your ID onto our server and we'll send you back a PDF" is a bad shape for that job,&lt;br&gt;
even when the server is honest and deletes things on schedule. The user has no way to&lt;br&gt;
verify any of it. Doing the work locally is the only version of this where the promise is&lt;br&gt;
structural rather than a policy statement.&lt;/p&gt;

&lt;p&gt;That framing is easy to write on a landing page. What follows is the bill.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the constraint costs
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;A file size ceiling.&lt;/strong&gt; 10MB per input file. On a server you scale past this by renting a&lt;br&gt;
bigger machine; in a browser tab you're spending someone else's device memory, on hardware&lt;br&gt;
you know nothing about, and the failure mode isn't a 500 — it's the tab dying while they&lt;br&gt;
watch. So the cap is set where it is on purpose, and it does turn some files away.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A page ceiling on merging.&lt;/strong&gt; You can convert a batch and then combine the results into one&lt;br&gt;
multi-page PDF, up to 30 pages. Same reason. Thirty pages covers the actual use case —&lt;br&gt;
"my landlord wants all of this as one file" — and stops well short of someone dropping a&lt;br&gt;
holiday album in.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lossy output, and I have to say so.&lt;/strong&gt; Each photo is re-encoded as JPEG at quality 0.85 and&lt;br&gt;
fitted to an A4 page. That is a deliberate trade: forms and portals have their own upload&lt;br&gt;
limits, so a PDF that is faithful but 30MB fails at the next step anyway. But it means a&lt;br&gt;
large iPhone photo gets scaled to fit the page, and the PDF is not a bit-for-bit copy of&lt;br&gt;
your original. If you need the untouched image, keep the HEIC file too. I'd rather say this&lt;br&gt;
plainly than let someone find out later.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Performance you can't fix from your side.&lt;/strong&gt; Server-side, a slow conversion is a problem you&lt;br&gt;
own and can throw hardware at. Client-side, it runs on whatever phone or laptop the person&lt;br&gt;
has, and all you can do is be honest about it and keep the work small.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No state to be helpful with.&lt;/strong&gt; Nothing is stored, so there's no history, no "pick up where&lt;br&gt;
you left off", no resuming a batch after a reload. Converted PDFs are cleaned up after ten&lt;br&gt;
minutes. Every session starts from zero — which is the point, but it does mean giving up&lt;br&gt;
every feature that would have been built on top of a server-side record.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it deliberately doesn't do
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No HEIC to JPG.&lt;/strong&gt; The name is the scope. People asking for JPG are solving a different
problem and there are plenty of tools for it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No OCR, no text extraction, no compression settings, no page templates.&lt;/strong&gt; 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.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No accounts, no stored files, no history.&lt;/strong&gt; See above — there's nowhere to put them.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Where the constraint actually pays off
&lt;/h2&gt;

&lt;p&gt;The case I didn't anticipate well enough is merging. Almost nobody converting HEIC has&lt;br&gt;
exactly one photo. They have six photos of a form and one recipient who wants one file.&lt;/p&gt;

&lt;p&gt;So the flow is: drop in the whole batch, each one converts, and once at least two are done&lt;br&gt;
a "combine into one PDF" option appears. Page order follows the file list and you move&lt;br&gt;
files up or down with the arrows before combining. It works on Safari on the phone the&lt;br&gt;
photos are already on, which matters more than it sounds — the alternative for a lot of&lt;br&gt;
people is emailing photos to themselves so they can do it on a computer.&lt;/p&gt;

&lt;p&gt;Merging is also where the no-upload decision stops being an abstraction. Combining seven&lt;br&gt;
photos of your lease into one document is precisely when you'd least like to hand them to a&lt;br&gt;
stranger's server, and it's the operation most online converters make you do exactly that&lt;br&gt;
for.&lt;/p&gt;

&lt;h2&gt;
  
  
  Would I take the constraint again
&lt;/h2&gt;

&lt;p&gt;Yes, but I'd write the limits into the interface earlier than I did. A ceiling you discover&lt;br&gt;
by hitting it reads as a bug; the same ceiling stated up front reads as a design decision,&lt;br&gt;
and it is one. Most of the work of building something deliberately narrow turns out to be&lt;br&gt;
telling people where the edges are before they walk into them.&lt;/p&gt;

&lt;p&gt;If you have iPhone photos that a form won't accept, it's at&lt;br&gt;
&lt;a href="https://heictopdf.dev/" rel="noopener noreferrer"&gt;heictopdf.dev&lt;/a&gt; — free, no sign-up, nothing to install. And if you&lt;br&gt;
need the original quality or a different output format, use something else; that's a real&lt;br&gt;
answer, not a modest one.&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>webdev</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Show DEV: I built a free, no-signup tool that turns audio and video into text</title>
      <dc:creator>Nadia Kessler</dc:creator>
      <pubDate>Wed, 19 Aug 2026 14:31:28 +0000</pubDate>
      <link>https://dev.to/nadiakesslerdev/show-dev-i-built-a-free-no-signup-tool-that-turns-audio-and-video-into-text-4f45</link>
      <guid>https://dev.to/nadiakesslerdev/show-dev-i-built-a-free-no-signup-tool-that-turns-audio-and-video-into-text-4f45</guid>
      <description>&lt;p&gt;I'm Nadia, and I built &lt;a href="https://mp3totext.xyz/" rel="noopener noreferrer"&gt;MP3toText&lt;/a&gt;, a browser-based tool that turns&lt;br&gt;
audio and video files into text. No install, no account, drop a file in and read the&lt;br&gt;
transcript. I maintain it myself as a solo/indie project, so take this as a maker post, not&lt;br&gt;
a neutral review.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I built it
&lt;/h2&gt;

&lt;p&gt;I kept ending up with hour-long interview and meeting recordings that I needed as text, and&lt;br&gt;
every option I tried had friction I didn't want: pay up front, create an account before you&lt;br&gt;
can see if it even works, or install a desktop app to convert one file. I wanted the&lt;br&gt;
opposite — open a tab, drop the file, get a transcript back.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it actually does
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Converts MP3, M4A, WAV, AAC, FLAC and OGG audio, plus MP4, MOV, MKV and WEBM video (the
audio track is pulled out and transcribed).&lt;/li&gt;
&lt;li&gt;Labels different speakers separately, so a two-person interview comes back split by
voice instead of one unbroken block.&lt;/li&gt;
&lt;li&gt;Timestamps every line, and the timestamps survive export to SRT/VTT if you want subtitles
instead of plain text.&lt;/li&gt;
&lt;li&gt;Auto-detects the spoken language across 90+ languages — you don't pick one manually.&lt;/li&gt;
&lt;li&gt;Files up to 2GB / 4 hours are accepted; a one-hour recording is usually done in a few
minutes.&lt;/li&gt;
&lt;li&gt;No account: 4 hours of audio free per day, up to 10 hours total, daily allowance resets
at 00:00 UTC.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  A concrete example
&lt;/h2&gt;

&lt;p&gt;I record a lot of user interviews for MP3toText itself (yes, the tool eats its own dog&lt;br&gt;
food). A 45-minute call goes in as an MP3, comes back a few minutes later as a&lt;br&gt;
speaker-labeled transcript with timestamps. I search it with Ctrl+F for the moment someone&lt;br&gt;
mentioned a bug, jump to that timestamp in the recording to confirm the context, and paste&lt;br&gt;
the relevant lines into a ticket. That loop used to mean replaying the whole call at 1.5x&lt;br&gt;
speed with a notepad open.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it doesn't do
&lt;/h2&gt;

&lt;p&gt;Being upfront about the limits, since a maker post that only lists wins isn't useful:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Accuracy is around 99% on clear speech, but accents, background noise, and people
talking over each other bring that down — same as any speech-to-text tool, this one
included.&lt;/li&gt;
&lt;li&gt;There's no API, no browser extension, and no mobile app. It's a website; it works in a
mobile browser, but that's it.&lt;/li&gt;
&lt;li&gt;Files and transcripts are deleted 24 hours after upload. If you need to keep something
longer, export it before then.&lt;/li&gt;
&lt;li&gt;It doesn't publish a paid tier. Right now it's just the free daily/total allowance above —
I'm not going to promise pricing that doesn't exist yet.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Where it's useful
&lt;/h2&gt;

&lt;p&gt;Journalists, students, researchers, podcasters, and support teams doing recording triage —&lt;br&gt;
basically anyone with more recorded audio than time to re-listen to it. Meeting notes,&lt;br&gt;
podcast prep, lecture review, and voice-memo cleanup are the cases I hear about most from&lt;br&gt;
people using it.&lt;/p&gt;

&lt;p&gt;If you try it and hit something confusing or broken, I'd genuinely like to hear about it —&lt;br&gt;
that's still how most of the fixes happen.&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>webdev</category>
      <category>productivity</category>
      <category>resources</category>
    </item>
  </channel>
</rss>
