Very Good FFmpeg
How it worksPricingDocsBlog

Published Jun 10, 2026

Cloudflare Stream Pricing 2026: Video API, Encoding, Storage, and Delivery Costs

Cloudflare Stream costs $5 per 1000 minutes stored and $1 per 1000 minutes delivered, but H.264 lock-in and no original file download make it a poor fit for power users who need codec flexibility.

What does Cloudflare Stream cost in 2026?

Cloudflare Stream bills on two dimensions: minutes stored and minutes delivered. Storage costs $5 per 1,000 minutes per month, prepaid. Delivery costs $1 per 1,000 minutes viewed, post-paid. Encoding, ingress, and bandwidth are included with no egress fees.

Pro ($20/mo) and Business ($200/mo) plans include 100 free minutes of storage and 10,000 free minutes of delivery each month. The Free plan does not include Stream. You must add it as a $5/mo add-on. Live streaming uses the same rates: $5 per 1,000 minutes recorded and $1 per 1,000 minutes delivered.

Key Takeaways

  • Cloudflare Stream pricing: $5/1k min stored, $1/1k min delivered. Pro and Business tiers include free usage allowances.
  • H.264 encoding only, capped at 1080p. No H.265, AV1, VP9, or ProRes support.
  • You cannot download your original uploaded file. Only re-encoded H.264 MP4 downloads are available. This creates vendor lock-in.
  • Maximum upload size is 30 GB per video. Maximum 120 concurrent queued or encoding uploads.
  • Duration-based billing ($/min) benefits high-bitrate short videos but penalizes low-bitrate long content compared to GB-based pricing.
  • Cloudflare Stream is a locked-down streaming pipeline. A hosted FFmpeg API like Very Good FFmpeg gives full codec control, original file retention, and usage-based GB pricing with no monthly minimum.

What is Cloudflare Stream?

Cloudflare Stream is an all-in-one video platform that handles upload, encoding, storage, delivery, and playback through a single API. You upload a video, Cloudflare encodes it into an adaptive bitrate ladder, stores it on their global edge network, and serves it through a built-in player.

The platform supports RTMP and SRT live ingest and outputs HLS and DASH adaptive streams. It includes AI-generated captions for 12 languages, signed URL access control with geo-blocking and IP restrictions, and per-video analytics through a dashboard or GraphQL API. The built-in player is available as an iframe embed or as React and Angular npm components.

Cloudflare positions Stream as a unified media pipeline that replaces the need to stitch together separate encoding, storage, CDN, and player services.

How does Cloudflare Stream pricing actually work?

Storage is billed on duration, not file size. You pay $5 per 1,000 minutes of video stored per month, regardless of whether those videos are 144p webcam clips or 1080p high-bitrate files. Storage is prepaid: you buy blocks of minutes.

Delivery is billed at $1 per 1,000 minutes viewed. This covers all bandwidth and CDN costs with no separate egress fees. Delivery is post-paid based on actual usage.

Encoding is free. There is no additional charge for transcoding your uploads into the ABR ladder. Live recording uses the same storage and delivery rates. If you stream a live event and the recording is saved, you pay storage on those minutes.

Pro and Business plan subscribers get 100 free minutes of storage and 10,000 free minutes of delivery per month. Beyond those allowances, standard rates apply.

What is a hosted FFmpeg API?

A hosted FFmpeg API is a REST service that runs your exact FFmpeg commands on remote hardware. You send the same flags, filter graphs, and syntax you would use on a local terminal, and the API executes them on a dedicated server.

Very Good FFmpeg is one example. It provides 16 vCPU cores, 32 GB DDR5 RAM, and NVMe storage per job, with optional Nvidia GPU acceleration. Pricing is usage-based: $0.50 per GB for the first 10 GB processed, dropping to $0.10 per GB between 10 and 100 GB, then $0.08 per GB above 100 GB. The first 2 GB are free. There are no storage fees, no egress fees, and no monthly minimum.

The key difference from Cloudflare Stream: you control the FFmpeg command, you choose the codec, you decide the output format, and you keep the original files. The API does not re-encode to a fixed ladder, does not force a player, and does not hold your source files hostage.

How much does Cloudflare Stream actually cost for a real project?

The answer depends on your video duration and playback volume. Here are three scenarios.

Short-form video (40-second clips, 50,000 plays per day). Each clip is 0.67 minutes. If you have 1,000 clips stored, that is 670 stored minutes per month. Storage cost: $3.35 (one block of 1,000 prepaid minutes at $5). Delivery of 50,000 plays at 0.67 minutes each is 33,500 delivered minutes per day, or about 1,005,000 per month. Delivery cost: $1,005. Total: roughly $1,010 per month. Duration pricing works in your favor here because each play is short.

Long-form content (2-hour lectures, 1,000 plays per day). Each lecture is 120 minutes. Storing 100 lectures is 12,000 minutes. Storage: $60 per month (12 blocks at $5). Delivery of 1,000 plays at 120 minutes each is 120,000 minutes per day, or 3,600,000 per month. Delivery: $3,600. Total: roughly $3,660 per month. Duration pricing is punishing here because each play is long, even if the file is a low-bitrate talking head.

High-bitrate archival footage (10-minute clips, low playback). A 10-minute ProRes file might be 6 GB. Storage: $0.05 per clip (0.01 blocks). Delivery is cheap because few people watch it. But on a GB-based model this clip would cost more to process because it is a large file. Duration pricing is effectively a discount for high-bitrate content.

ScenarioMonthly Cost (Cloudflare Stream)Notes
Short clips, high volume~$1,010Duration billing is efficient
Long lectures, moderate volume~$3,660Duration billing is expensive
Archival, low playback~$5-10Cheap because storage is duration-based

The pattern is clear: duration-based pricing is cheap for short, high-bitrate video and expensive for long, low-bitrate video.

What encoding formats and resolutions does Cloudflare Stream support?

Cloudflare Stream encodes all videos to H.264 only. The adaptive bitrate ladder produces renditions from 360p up to 1080p. There is no support for H.265 (HEVC), AV1, VP9, or ProRes.

Input formats are flexible. Stream accepts MP4, MKV, MOV, AVI, FLV, MPEG-2 TS, MPEG-2 PS, MXF, LXF, GXF, 3GP, WebM, MPG, and Quicktime files. But the output is always H.264 in an MP4 container.

Maximum upload size is 30 GB per video. Maximum 120 videos can be queued or encoding simultaneously. HDR content is automatically re-encoded to SDR. Playback is capped at 70 FPS. Variable frame rate content has extra frames dropped.

A hosted FFmpeg API like Very Good FFmpeg supports the full codec spectrum: H.264, H.265 (roughly 40 percent smaller than H.264 at the same quality), AV1, VP9, ProRes, AAC, Opus, and any other codec available in a standard FFmpeg build. You choose the resolution, the bitrate, the pixel format, and the HDR metadata. There is no forced downscaling, no FPS cap, and no resolution ceiling.

Can you download your original files from Cloudflare Stream?

No. Cloudflare Stream's FAQ states clearly: "You cannot download the exact input file that you uploaded." Only re-encoded H.264 MP4 downloads are available through the API or dashboard.

This is the most significant lock-in risk with Cloudflare Stream. If you cancel your subscription, you have 30 days before all videos are deleted. During that window you can download re-encoded versions, but you cannot recover the original source files. Any custom metadata, high-bitrate masters, or production-quality originals you uploaded are gone.

With a hosted FFmpeg API, the dynamic is reversed. You upload source files, the API processes them, and the output is available at a stable URL. Files are not retained after the job completes. You control where and how long you store your originals. There is no lock-in because you never surrender your source files in the first place.

What do developers on Reddit and Hacker News say about Cloudflare Stream?

Developer sentiment around Cloudflare Stream is mixed. The common thread is that Stream is attractive for simplicity but concerning for its lack of control.

One developer building a short-form video app with 40-second clips and 10,000 to 50,000 plays per day evaluated Cloudflare Stream alongside Backblaze and GCP. They described Stream as a "simpler product, possibly cheaper" but worried about whether the ABR quality would match what they could get from GCP. Price was not enough to overcome quality concerns.

An edtech developer compared Cloudflare Stream directly to Mux. They found Cloudflare Stream "more abstract" with "less controls on the player." They chose Mux as the "best balance between rigid platform and building your own." This is a consistent theme: developers who outgrow Stream's abstraction layer have to migrate to a different platform entirely.

Another developer with a production Next.js app shopping for the cheapest video streaming option expressed frustration that pricing pages across all platforms are "not obvious how to project costs" without trying them. They feared "hidden fees not stated on pricing page" and ending up with a "surprisingly huge bill." Transparent, usage-based pricing was what they wanted but could not find.

The pattern across these threads is clear. Cloudflare Stream wins on simplicity. It loses on control, codec flexibility, pricing transparency, and player customization.

Why does duration-based pricing matter for video workloads?

Duration-based billing charges by the minute regardless of file size, bitrate, or quality. A 10-minute 4K ProRes file costs the same to store and deliver as a 10-minute 144p webcam clip. This is simple to understand but disconnected from actual infrastructure cost.

GB-based billing charges by the amount of data processed. High-bitrate content costs proportionally more because it requires more storage space and bandwidth. Low-bitrate content costs proportionally less.

The winner depends on your workload:

  • Duration billing wins for high-bitrate, short videos such as product demos, trailers, and cinematic clips. These files are large per minute, so charging by duration is cheaper than charging by GB.
  • GB billing wins for low-bitrate, long videos such as lectures, podcasts, screen recordings, and archival content. These files are small per minute, so charging by GB is cheaper.
  • GB billing also wins for mixed workloads because you only pay for actual data processed. Failed jobs on Cloudflare Stream still accrue storage costs if the video was uploaded. Failed jobs on Very Good FFmpeg are billed only for the bytes touched before the failure.

Very Good FFmpeg has no storage fees and no egress fees. You pay per GB processed and nothing else. Output URLs and webhook delivery are included.

What can you do with a hosted FFmpeg API that you cannot do with Cloudflare Stream?

A hosted FFmpeg API removes every limitation Cloudflare Stream imposes.

Codec freedom. Encode to H.265 for roughly 40 percent smaller files at the same quality as H.264. Encode to AV1 for next-generation open codec support. Encode to ProRes for post-production workflows. Encode to VP9 for browser optimization. Cloudflare Stream locks you into H.264 only.

Original file retention. Your source files stay under your control. The API processes a copy and returns the output. You never lose access to your originals.

Command chaining. Transcode to multiple resolutions, extract thumbnails, generate HLS segments, and apply filters all in a single job. Pass an array of FFmpeg commands and they execute sequentially on the same instance.

GPU acceleration. Route jobs to Nvidia hardware for faster encoding. FFmpeg supports GPU-based encoders for H.264 (h264_nvenc), H.265 (hevc_nvenc), and others. This is not available on Cloudflare Stream.

Custom pipeline design. No forced ABR ladder. No forced player. No forced output format. Whatever FFmpeg can do, the API can do.

Long runtime. Single jobs can run up to 6 hours. Encode a feature film in one request. No awkward chunking to stay within a 15-minute Lambda timeout.

No storage fees. Cloudflare Stream charges $5 per 1,000 minutes per month whether anyone watches the video or not. A hosted FFmpeg API charges nothing for storage.

No egress fees. Output delivery is included. Cloudflare Stream charges $1 per 1,000 minutes delivered.

When should you choose Cloudflare Stream over a hosted FFmpeg API?

Cloudflare Stream is the right choice when video is a feature, not your core product. If you need a simple embedded player with global CDN delivery, analytics, access control, and AI captions, and H.264 at 1080p meets your quality requirements, Stream gets the job done with minimal configuration.

Choose Cloudflare Stream when:

  • You want one vendor for ingest, encoding, storage, delivery, and playback.
  • Your content is short-form. Duration pricing is efficient for short clips with high playback volume.
  • You are already on a Cloudflare Pro or Business plan and can use the included free storage and delivery minutes.
  • You do not need codec control, original file access, or custom player UI.
  • Your resolution requirements stay within 1080p.

When should you choose a hosted FFmpeg API over Cloudflare Stream?

A hosted FFmpeg API is the right choice when video is central to your product and you need flexibility without vendor lock-in.

Choose a hosted FFmpeg API when:

  • You need codec choice: H.265 for file size reduction, AV1 for modern browser support, ProRes for editing workflows.
  • You need access to original files downstream and cannot risk vendor lock-in.
  • Your content is long-form. Duration billing punishes lectures, podcasts, and archival content that people watch for extended periods.
  • You want full FFmpeg command control: custom filters, overlays, audio mixing, scaling, complex pipeline logic.
  • You need GPU-accelerated encoding for faster turnaround.
  • You prefer GB-based pricing that automatically scales with your volume and charges nothing for idle storage.

Verdict: Cloudflare Stream vs hosted FFmpeg API

Cloudflare Stream is a good product for the right use case. If you need a simple streaming pipeline, do not care about codec choice, and want one vendor to handle everything, Stream works. The pricing is transparent and the integration effort is minimal.

But Cloudflare Stream is not a general-purpose video processing tool. Three dealbreakers prevent it from serving power users: H.264-only encoding, the inability to download original files, and duration-based billing that penalizes long content.

A hosted FFmpeg API like Very Good FFmpeg is the inverse. You get full codec and command control, you keep your original files, and you pay per GB processed with no monthly minimum. The trade-off is that you assemble your own storage, CDN, and player pipeline separately. That is extra work, but it gives you ownership of every layer.

If video is a secondary feature, use Cloudflare Stream. If video is core to your product and you need flexibility, use a hosted FFmpeg API.

FAQ

Can you use your own video player with Cloudflare Stream?

You can use the provided iframe embed, or the React and Angular SDK components. You cannot directly access raw HLS or DASH manifests in the default setup without workarounds.

Does Cloudflare Stream support 4K or 8K video?

No. Encoding is capped at 1080p. Input files exceeding 1080p are downscaled to 1080p or below.

Is there a free plan for Cloudflare Stream?

No. Stream is a $5 per month add-on. Pro and Business plans include limited free minutes but there is no free tier.

What happens to Cloudflare Stream videos if you cancel your subscription?

You have 30 days before all videos are deleted. You cannot download original files. Download re-encoded MP4s before cancellation.

Does Cloudflare Stream support DRM?

No. Stream supports signed URLs with geo-blocking, IP restrictions, and token expiry. There is no Widevine, FairPlay, or PlayReady support.

What is the maximum file size for Cloudflare Stream uploads?

30 GB. Uploads exceeding this limit receive a 413 payload too large error.

How does a hosted FFmpeg API handle your files?

You provide input via URL or direct upload. FFmpeg processes the command. Output is available at a stable URL. Files are not retained after the job completes. You control storage and retention.

Can you use a hosted FFmpeg API for live streaming?

No. Hosted FFmpeg APIs are designed for on-demand and batch processing. Cloudflare Stream supports live RTMP and SRT ingest. They solve different problems.

References

  • Cloudflare Stream Pricing: https://developers.cloudflare.com/stream/pricing/
  • Cloudflare Stream Product Overview: https://www.cloudflare.com/products/cloudflare-stream/
  • Cloudflare Stream FAQ (limits and no original download): https://developers.cloudflare.com/stream/faq/
  • Cloudflare Stream Upload Formats: https://developers.cloudflare.com/stream/uploading-videos/
  • Cloudflare Stream Encoding: https://developers.cloudflare.com/stream/
  • Cloudflare Stream Live Pricing: https://developers.cloudflare.com/stream/stream-live/
  • Cloudflare Stream Player: https://developers.cloudflare.com/stream/viewing-videos/using-the-stream-player/
  • Cloudflare Stream Signed URLs: https://developers.cloudflare.com/stream/viewing-videos/securing-your-stream/
  • Cloudflare Stream Captions: https://developers.cloudflare.com/stream/edit-videos/adding-captions/
  • Cloudflare Stream MP4 Downloads: https://developers.cloudflare.com/stream/viewing-videos/download-videos/
  • Cloudflare Plans: https://www.cloudflare.com/plans/
  • Cloudflare Stream Analytics: https://developers.cloudflare.com/stream/getting-analytics/
  • Very Good FFmpeg: https://verygoodffmpeg.com/
  • Very Good FFmpeg vs Self-Hosted: https://verygoodffmpeg.com/content/compare/self-hosted-ffmpeg
  • HN: Short-form video dev evaluating Stream vs GCP: https://news.ycombinator.com/item?id=46374754
  • HN: Stream vs Mux edtech comparison: https://news.ycombinator.com/item?id=21826197
  • HN: Developer seeking cheapest video streaming: https://news.ycombinator.com/item?id=40020985
  • Product Hunt - Very Good FFmpeg: https://www.producthunt.com/products/very-good-ffmpeg

Related reading

  • Jun 10, 2026

    Hosted FFmpeg REST API: 2026 Pricing and Comparison Guide

    Compare the top hosted FFmpeg REST APIs for video transcoding in 2026. Transparent pricing, hidden costs, and use-case recommendations across Mux, Bitmovin, AWS, Coconut, Rendi, FetchMedia, and Very Good FFmpeg.

  • Jun 10, 2026

    AWS Lambda FFmpeg Video Processing: Layer, Container, and Limit Guide (2026)

    Run ffmpeg in Lambda without hitting layer size, /tmp storage, or 15-minute timeout walls

  • Jun 10, 2026

    Vercel FFmpeg Video Processing: Serverless Function Limits in 2026

    Running ffmpeg on Vercel serverless functions? Here are the hard limits on bundle size, memory, duration, and payload -- and the one workaround that works.

  • Jun 10, 2026

    Cloudflare Workers FFmpeg Video Processing: WebAssembly Limits in 2026

    Can you run ffmpeg in Cloudflare Workers? Here are the hard limits on WebAssembly, memory, CPU time, and bundle size — and what to use instead.

Very Good FFmpegChecking status...
Product
  • How it works
  • Pricing
  • Comparison
  • FAQ
  • Blog
Developers
  • Documentation
  • API Reference
  • MCP Server
  • TypeScript SDK
  • Python SDK
Company
  • Contact
  • Sign in
  • Sign up
  • Terms
  • Privacy
As Seen On
  • G2
  • Product Hunt
  • GitHub
  • PyPI
  • NPM
  • Smithery
  • MCP.so
  • AlternativeTo
  • Make
© 2026 Very Good FFmpeg