n8n logon8n Automation Hub
Build breakdown

The 25MB Limit That Broke My Podcast Transcription Pipeline

Build breakdown · n8n workflow · August 31, 2026 · Updated October 13, 2026

The pipeline had already processed a dozen short test clips without a single failure. Then I pointed it at a real, full-length podcast episode for the first time, and it died on step one β€” not because the idea was wrong, but because every test I'd run so far had accidentally been too small to find this bug.

Workflow at a glance
  1. AI clipping pipeline extracts audio from a long video with ffmpeg, then sends it to Groq's Whisper API for transcription
  2. Worked cleanly through every short test clip during development
  3. The first real ~70-minute episode failed immediately with β€œRequest Entity Too Large”
  4. Root cause: the ffmpeg extraction settings were sized for short clips, not full episodes β€” output audio came out at 34.2MB, over Groq's 25MB API limit
  5. Fixed by lowering the extraction bitrate from 64kbps to 32kbps mono
  6. 32kbps mono 16kHz audio stays under 25MB up to roughly 104 minutes β€” safe margin for this show's episode lengths
Screenshot of the actual n8n workflow canvas: the AI clipping pipeline, including the ffmpeg audio-extraction step and the Groq Whisper Transcription node that rejected the oversized file

The actual workflow canvas, straight from my n8n instance.

A pipeline that worked, right up until it met a real episode

The clipping pipeline's job is simple to describe: take a long video, pull the audio out with ffmpeg, transcribe it with Groq's Whisper API, hand the transcript to an LLM to pick the best moments, then render short clips from the result. Every piece of that had been tested β€” on short clips, a few minutes each, built specifically to exercise the pipeline without waiting around for a real download and a real transcription every time.

The first real production input was a podcast episode running close to seventy minutes. It failed at the very first network call the pipeline makes after extraction β€” the request to Groq's Whisper endpoint β€” with Request Entity Too Large.

The error Groq actually returns

The extracted audio file for that episode came out at 34.2MB. Groq's Whisper API has a hard 25MB limit per request, and the API doesn't chunk or downsample anything on its end β€” it just rejects the file. Nothing about the short test clips had ever come close to that ceiling, which is exactly why the bug had stayed invisible through every earlier test run.

The ffmpeg extraction step was set to -c:a libmp3lame -b:a 64k -ar 16000 -ac 1 β€” 64kbps mono, 16kHz sample rate. That's a perfectly reasonable setting for a two-minute test clip. It's also a setting that scales linearly with runtime, and nobody had done the arithmetic for a seventy-minute file before this ran.

Why a bitrate change was the right fix, not a workaround

The tempting quick fix here is to catch the error and split the audio into chunks before sending it β€” more moving parts, more places for the pipeline to break. The actual fix was smaller: drop the extraction bitrate to 32kbps mono. Whisper's transcription quality doesn't meaningfully degrade at 32kbps for spoken-word audio β€” it isn't music, there's no reason to protect frequency range that speech doesn't use β€” and cutting the bitrate in half cuts the file size in half for the same runtime.

The number that made the fix durable, not just a patch

32kbps mono at 16kHz stays under Groq's 25MB limit up to roughly 104 minutes of audio. That's not a guess β€” it's the actual ceiling this specific setting buys, and it's comfortably above every episode length this show has run so far. The fix isn't β€œmake this one episode work,” it's β€œmake the whole show's realistic episode-length range work without hitting this again,” which is the difference between a fix and a patch that fails again on the next slightly-longer episode.

What I'd check before the next long-form input

Any pipeline step whose resource cost scales with input length needs its test data to actually reach production scale at least once before going live β€” a two-minute test clip cannot surface a limit that only bites past the 25-30 minute mark. If a future episode runs past 100 minutes, the same math says drop further, to 24k or 16k, or split the audio into chunks before transcription instead of relying on bitrate alone.

The arithmetic, so you can size your own settings

For a constant-bitrate MP3, file size is bitrate times duration. One minute at 32 kbit/s is 32,000 / 8 x 60 = 240,000 bytes, about 0.24 MB, plus a little container overhead.

Bitrate (mono)Size per minuteLongest audio under 25 MB
64 kbit/sabout 0.48 MBabout 52 minutes
48 kbit/sabout 0.36 MBabout 69 minutes
32 kbit/sabout 0.24 MBabout 104 minutes
24 kbit/sabout 0.18 MBabout 138 minutes
16 kbit/sabout 0.12 MBabout 208 minutes

The 70-minute episode at 64 kbit/s came out at 34.2 MB, which matches the table. Leave some headroom below the limit rather than aiming for 24.9 MB.

The extraction command

ffmpeg -y -i input.mp4 -vn -ac 1 -ar 16000 -c:a libmp3lame -b:a 32k audio.mp3

-vn drops the video, -ac 1 makes it mono and -ar 16000 sets a 16 kHz sample rate. Whisper models work on 16 kHz audio internally, so a higher sample rate only makes the file bigger.

A size check before the upload

Bitrate alone fixes the known episode lengths. A guard makes sure a much longer file fails with a clear message instead of an API error:

SIZE=$(stat -c %s audio.mp3)
if [ "$SIZE" -gt 24000000 ]; then echo "audio too large: $SIZE bytes" >&2; exit 3; fi

Check the SSH node's exit code afterwards, because the SSH node reports a non-zero exit code as data rather than failing.

When the audio really is too long

Above about three hours even 16 kbit/s isn't enough, and quality starts to suffer. Then the file has to be split, for example with ffmpeg -f segment -segment_time 1800 into 30-minute parts. Each part is transcribed separately, and the timestamps of every part after the first have to be shifted by the part's start time before the transcripts are joined. Cutting in silence avoids splitting a word, but fixed-length parts with a few seconds of overlap are simpler and work well enough for clip picking.

Frequently asked questions

What is the file size limit for Groq's Whisper API?

This pipeline hit a 25 MB limit per request on the account's plan. Check Groq's documentation for the current limit on your tier.

What bitrate should I use to transcribe long podcasts?

32 kbit/s mono at 16 kHz keeps audio under 25 MB up to about 104 minutes and works well for speech.

Does a lower bitrate hurt transcription quality?

For spoken word at 32 kbit/s mono, quality was not noticeably affected here. Speech doesn't need the frequency range that music does.

What if my audio is longer than about 100 minutes?

Lower the bitrate further for moderately longer files, or split the audio into parts and shift each part's timestamps before joining the transcripts.

Feeding real-world input sizes through an AI pipeline and not sure where it'll actually break?

I build and stress-test n8n automation pipelines against realistic production data, not just clean demo inputs.