<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/offloading-ffmpeg-with-cloudflare-gzqcadrcc" -->

---
title: Offloading FFmpeg with Cloudflare | daily.dev
description: Kent C. Dodds shares how a long podcast episode caused his Fly.io primary server to hit 400-500% CPU load, forcing him to offload FFmpeg processing to...
canonical: https://daily.dev/posts/offloading-ffmpeg-with-cloudflare-gzqcadrcc
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Offloading FFmpeg with Cloudflare | daily.dev
og:description: Kent C. Dodds shares how a long podcast episode caused his Fly.io primary server to hit 400-500% CPU load, forcing him to offload FFmpeg processing to...
og:url: https://daily.dev/posts/offloading-ffmpeg-with-cloudflare-gzqcadrcc
og:image: https://api.daily.dev/og/posts/gzqcaDRCC.png
og:image:alt: Offloading FFmpeg with Cloudflare
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Offloading FFmpeg with Cloudflare

**[Kent C. Dodds](https://daily.dev/sources/kentcdodds)** · [@kentcdodds](https://daily.dev/kentcdodds) · 11 min read · 60 upvotes · 2 comments

## Summary

Kent C. Dodds shares how a long podcast episode caused his Fly.io primary server to hit 400-500% CPU load, forcing him to offload FFmpeg processing to Cloudflare Queues and Containers. The new architecture enqueues a job from the app, a Cloudflare Worker forwards it to a Container that runs FFmpeg, uploads results to R2, and POSTs a signed HMAC-SHA256 callback to the app. The post covers the before/after metrics (85% reduction in peak load), cost tradeoffs between Cloudflare and a dedicated Fly.io machine, and several implementation mistakes caught after the initial PR: a counterproductive local fallback, container lifecycle issues with sleepAfter, and a queue worker that blocked for the full transcode duration. The conclusion reinforces a 'start simple, iterate when reality demands it' philosophy.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://kentcdodds.com/blog/offloading-ffmpeg-with-cloudflare>

## Community discussion

Top comments from developers on daily.dev.

**@dheerajverma12** · 0 upvotes

> working on cloud rather than preparing the own server with this much work, I think the own server will serve as the better alternative, if done with right hardware. No burnout

**@snazzie** · 0 upvotes

> Why not just run your own high end cpu server with nvme in raid. saves burning money in the cloud.

## Similar posts on daily.dev

- [Simplifying Containers with Cloudflare Sandboxes](https://daily.dev/posts/simplifying-containers-with-cloudflare-sandboxes-q0fdylxh1) · Kent C. Dodds · 33 upvotes · 0 comments
- [How We Moved Discord Voice to the Edge](https://daily.dev/posts/how-we-moved-discord-voice-to-the-edge-xeeigwjrp) · Lobsters · 1 upvotes · 0 comments
- [Streamline: custom video pipelines with Cloudflare Stream and Workers](https://daily.dev/posts/streamline-custom-video-pipelines-with-cloudflare-stream-and-workers-9beia9yyw) · Cloudflare · 2 upvotes · 0 comments
- [How Cloudflare Eliminates Cold Starts for Serverless Workers](https://daily.dev/posts/how-cloudflare-eliminates-cold-starts-for-serverless-workers-cy0axotzo) · ByteByteGo · 2 upvotes · 0 comments
- [Modular Edge Computing at Multi-Tenant SaaS Scale on Cloudflare Workers](https://daily.dev/posts/modular-edge-computing-at-multi-tenant-saas-scale-on-cloudflare-workers-zgtnvgdda) · InfoQ · 0 upvotes · 0 comments

---

Tags: [#backend](https://daily.dev/tags/backend), [#cloudflare](https://daily.dev/tags/cloudflare)

[View this post on daily.dev](https://daily.dev/posts/offloading-ffmpeg-with-cloudflare-gzqcadrcc)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Offloading FFmpeg with Cloudflare","url":"https://daily.dev/posts/offloading-ffmpeg-with-cloudflare-gzqcadrcc","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/offloading-ffmpeg-with-cloudflare-gzqcadrcc"},"datePublished":"2026-03-09T21:50:46.551Z","dateModified":"2026-03-10T18:00:20.432Z","description":"Kent C. Dodds shares how a long podcast episode caused his Fly.io primary server to hit 400-500% CPU load, forcing him to offload FFmpeg processing to...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/86ba6452ee81c500ae701ad9590c4dca?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/86ba6452ee81c500ae701ad9590c4dca?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Kent C. Dodds","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Person","name":"Kent C. Dodds","url":"https://daily.dev/kentcdodds","image":"https://avatars.githubusercontent.com/u/1500684?v=4","description":"My name is Kent C. Dodds and I'm a JavaScript engineer and teacher. I'm also active in the open source community. I like my family, JavaScript, and React.","interactionStatistic":{"@type":"InteractionCounter","interactionType":{"@type":"EndorseAction"},"userInteractionCount":1780}},"commentCount":2,"discussionUrl":"https://daily.dev/posts/offloading-ffmpeg-with-cloudflare-gzqcadrcc","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":60},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":2}],"keywords":"backend,cloudflare","timeRequired":"PT11M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Kent C. Dodds","item":"https://daily.dev/sources/kentcdodds"},{"@type":"ListItem","position":3,"name":"Offloading FFmpeg with Cloudflare"}]}
{"@context":"https://schema.org","@type":"WebPage","@id":"https://daily.dev/posts/offloading-ffmpeg-with-cloudflare-gzqcadrcc","comment":[{"@type":"Comment","text":"working on cloud rather than preparing the own server with this much work, I think the own server will serve as the better alternative, if done with right hardware. No burnout","datePublished":"2026-03-30T13:17:07.670Z","url":"https://daily.dev/posts/gzqcaDRCC#c-M9pzzkKYO","author":{"@type":"Person","name":"Dheeraj Verma","url":"https://daily.dev/dheerajverma12","image":"https://lh3.googleusercontent.com/a/ACg8ocKaSuu1iuW8ZScdp7jTYs_sBP39s8LWjzakr35OqgUOlzC7mTwoIQ=s96-c"}},{"@type":"Comment","text":"Why not just run your own high end cpu server with nvme in raid. saves burning money in the cloud.","datePublished":"2026-03-10T23:57:10.790Z","dateModified":"2026-03-10T23:59:07.105Z","url":"https://daily.dev/posts/gzqcaDRCC#c-KQ55g906O","author":{"@type":"Person","name":"aaron cooper","url":"https://daily.dev/snazzie","image":"https://avatars.githubusercontent.com/u/19627023?v=4"}}]}
```

