DEV Community

white
white

Posted on

What I Learned Building a Pay-As-You-Go Transcription Tool

I recently launched Transcribe Audio, a small web app that turns audio and video files into text. Most transcription apps are monthly subscriptions. I wanted to try the opposite: buy minutes once, use them whenever, and never have them expire. Here are a few things I learned building it.

  1. Let people try it before asking for an email Many transcription apps ask you to sign up before you can upload anything. I flipped it: anyone can upload, and files up to 30 minutes get the full transcript with no account (3 files a day). Downloads (TXT, Word, SRT, VTT) need a free account.

The bet is that people are happier to sign up once they've seen the result is good. The trick is making sure a guest's transcript moves into their new account when they sign up, so nothing is lost.

  1. Price by the minute, but show it in hours
    Billing is per minute (1 credit = 1 minute, rounded up per file), but nobody thinks of their recordings in "credits". The packs are shown as hours instead: 3 hours for $6.99, 15 hours for $19.99, 50 hours for $49.99. The cost of a file is shown before it's processed, so there are no surprises.

  2. Long files need a different flow
    Short files are easy: upload, transcribe, show the result. Long files (an hour or more) take long enough that people close the tab. Two things helped:

An email when the batch finishes, with direct download links signed per file (so they work without logging in, and expire after a week).
Batch upload of up to 50 files at once for signed-in users, with one email for the whole batch.

  1. Page speed matters even for a tool page
    The homepage includes the uploader, so it's interactive and JavaScript-heavy. Getting PageSpeed to 100 on mobile came down to boring things: deferring analytics until the first interaction, lazy-loading anything that's switched off by config, and not shipping a whole package.json to the browser by accident (it happened twice).

  2. Write your limits as plain text
    People increasingly ask AI assistants "what's a free transcription tool?" The assistants quote whatever limits they can read on your page. So the free limits live in a plain HTML table, generated from the same constants the backend enforces, so the page and the product can't drift apart.

Stack
Next.js on Vercel, Postgres on Neon, Cloudflare R2 for uploads, a speech-to-text API for the actual transcription, and Resend for email.

If you transcribe interviews, meetings or podcasts, I'd love feedback on what's missing.

Top comments (0)