Products · Developer platform
Stream
Store, encode, deliver, and play videos on sites and applications
Pricing and limits
Pricing
As of Nov 3, 2026, from Cloudflare's docs, last updated there Oct 27, 2026. Licensed CC BY 4.0; navigation removed.
Stream Live WebRTC is now GA:
Billing for WebRTC delivery began on October 15th, 2026.
Pricing for Stream
Cloudflare Stream lets you broadcast, store, and deliver video using a simple, unified API and simple pricing. Stream bills on two dimensions only:
- Minutes of video stored: the total duration of uploaded video and live recordings
- Minutes of video delivered: the total duration of video delivered to end users
On-demand and live video are billed the same way.
Ingress (sending your content to us) and encoding are always free. Bandwidth is already included in "video delivered" with no additional egress (traffic/bandwidth) fees.
Minutes of video stored
Storage is a prepaid pricing dimension purchased in increments of $5 per month for each 1,000 minutes of video storage capacity. You can check how much storage you have and how much you have used on the Stream page of the Cloudflare dashboard.
Storage is consumed by:
- Original videos uploaded to your account
- Recordings of live broadcasts using RTMP or SRT
- The reserved
maxDurationSecondsfor Direct Creator and TUS uploads which have not been completed. After these uploads are complete or the upload link expires, this reservation is released.
Storage is not consumed by:
- Videos in an unplayable or errored state
- Expired Direct Creator upload links
- Deleted videos
- Downloadable files generated for MP4 Downloads
- Multiple quality levels that Stream generates for each uploaded original
- WebRTC broadcasts cannot currently be recorded, thus no storage is consumed
Storage consumption is rounded up to the second of video duration, regardless of file size. Video stored in Stream does not incur additional storage fees from other storage products such as R2.
Note
If you run out of storage, you will not be able to upload new videos or start new live streams until you purchase more storage or delete videos.
Enterprise customers may continue to upload new content beyond their contracted quota without interruption.
Minutes of video delivered
Delivery is a post-paid, usage-based pricing dimension billed at $1 per 1,000 minutes delivered. You can check how much delivery you have used on the Billing page or the Stream Analytics page of the Cloudflare dashboard.
Go to Billing ↗ Go to Analytics ↗
Delivery is counted for the following uses:
- Playback using Stream's built-in player or the HLS or DASH manifests
- WebRTC (WHEP) playback
- MP4 Downloads
- Simulcasting via SRT or RTMP live outputs
Delivery is counted by HTTP requests for video segments or parts of the MP4. Therefore:
- Client-side preloading and buffering is counted as billable delivery.
- Content played from client-side/browser cache is not billable, like a short looping video. Some mobile app player libraries do not cache HLS segments by default.
- MP4 Downloads are billed by percentage of the file delivered.
Minutes delivered for web playback (Stream Player, HLS, and DASH) are rounded to the segment length: for uploaded content, segments are four seconds. Live broadcast and recording segments are determined by the keyframe interval or GOP size of the original broadcast.
Example scenarios
Two people each watch thirty minutes of a video or live broadcast. How much would it cost?
This will result in 60 minutes of Minutes Delivered usage (or $0.06). Stream bills on total minutes of video delivered across all users.
I have a really large file. Does that cost more?
The cost to store a video is based only on its duration, not its file size. If the file is within the 30GB max file size limitation, it will be accepted. Be sure to use an upload method like Upload from Link or TUS that handles large files well.
If I make a Direct Creator Upload link with a maximum duration (maxDurationSeconds) of 600 seconds which expires in 1 hour, how is storage consumed?
- Ten minutes (600 seconds) will be subtracted from your available storage immediately.
- If the link is unused in one hour, those 10 minutes will be released.
- If the creator link is used to upload a five minute video, when the video is uploaded and processed, the 10 minute reservation will be released and the true five minute duration of the file will be counted.
- If the creator link is used to upload a five minute video but it fails to encode, the video will be marked as errored, the reserved storage will be released, and no storage use will be counted.
I am broadcasting live, but no one is watching. How much does that cost?
A live broadcast with no viewers will cost $0 for minutes delivered, but the recording of the broadcast will count toward minutes of video stored.
If someone watches the recording, that will be counted as minutes of video delivered.
If the recording is deleted, the storage use will be released.
I want to store and deliver millions of minutes a month. Do you have volume pricing?
Yes, contact our Sales Team ↗︎.
Pricing for Media Transformations
Media Transformations and Image Transformations use the same subscriptions and usage metrics.
When transforming a video via URL:
- Generating a still frame (single image) from a video counts as 1 transformation.
- Generating an optimized video or extracting audio counts as 1 transformation per second of the output content.
- Each unique transformation, as determined by input and unique combination of flags, is only billed once per calendar month.
- All Media and Image Transformations cost $0.50 per 1,000 monthly unique transformation operations, with a free monthly allocation of 5,000.
When transforming assets via the Workers binding:
- While binding Media Transformations to Workers Bindings is in beta, operations via the binding are not billed.
- After beta, the costs for transforming via bindings will be the same as for transforming via URL, but all operations will be billed individually, not based on uniqueness. Cache or store results for cost optimization and performance.
Timeline
October 2026
- Cloudflare Stream performance issues impacting certain Live Broadcasts and On-Demand Uploads Incident
Minor impact. Resolved Oct 27, 2026, 17:02 UTC.
- Ultra-low latency live with WebRTC is now Generally Available in Stream
Stream WebRTC support lets you deliver high quality live video to thousands of concurrent viewers in milliseconds. WebRTC is compatible with native Web APIs and standard protocols, so creators can go live from a browser without needing a separate broadcast application. This powers platforms to build custom experiences with deep feature integration for creators as well as viewers. Here's how to ge…
July 2026
- Rotate Stream broadcast keys for live inputs
You can now rotate the broadcast credentials for a Stream live input without changing the live input identifier. Use key rotation when live input credentials may have been shared with the wrong audience, exposed in client code or a screenshare, or need to be refreshed as part of your security process. Rotating keys revokes the old credentials, disconnects broadcasts using stale credentials, and r…
May 2026
- Introducing Stream Bindings for Workers
You can now interact with your Stream video library using new bindings for Workers! This allows customers to upload content to Stream, provision direct uploads, manage videos, and generate signed URLs from a Worker without making authenticated API calls. We're excited to bring Stream and Workers closer together to empower more programmatic pipelines, tighter integrations, and support generative A…
March 2026
- Media Transformations binding for Workers
You can now use a Workers binding to transform videos with Media Transformations. This allows you to resize, crop, extract frames, and extract audio from videos stored anywhere, even in private locations like R2 buckets. The Media Transformations binding is useful when you want to: Transform videos stored in private or protected sources Optimize videos and store the output directly back to R2 for…
February 2026
- Stream live inputs can now be disabled and enabled
You can now disable a live input to reject incoming RTMPS and SRT connections. When a live input is disabled, any broadcast attempts will fail to connect. This gives you more control over your live inputs: Temporarily pause an input without deleting it Programmatically end creator broadcasts Prevent new broadcasts from starting on a specific input To disable a live input via the API, set the enab…
August 2025
- Introducing observability and metrics for Stream Live Inputs
New information about broadcast metrics and events is now available in Cloudflare Stream in the Live Input details of the Dashboard. You can now easily understand broadcast-side health and performance with new observability, which can help when troubleshooting common issues, particularly for new customers who are just getting started, and platform customers who may have limited visibility into ho…
July 2025
- Audio mode for Media Transformations
We now support audio mode! Use this feature to extract audio from a source video, outputting an M4A file to use in downstream workflows like AI inference, content moderation, or transcription. For example, Example URLtexthttps://example.com/cdn-cgi/media/<OPTIONS>/<SOURCE-VIDEO> https://example.com/cdn-cgi/media/mode=audio,time=3s,duration=60s/<input video with diction> For more information, lear…
June 2025
- Increased limits for Media Transformations
We have increased the limits for Media Transformations: Input file size limit is now 100MB (was 40MB) Output video duration limit is now 1 minute (was 30 seconds) Additionally, we have improved caching of the input asset, resulting in fewer requests to origin storage even when transformation options may differ. For more information, learn about Transforming Videos.
May 2025
- Introducing Origin Restrictions for Media Transformations
We are adding source origin restrictions to the Media Transformations beta. This allows customers to restrict what sources can be used to fetch images and video for transformations. This feature is the same as --- and uses the same settings as --- Image Transformations sources. When transformations is first enabled, the default setting only allows transformations on images and media from the same…
April 2025
- Signed URLs and Infrastructure Improvements on Stream Live WebRTC Beta
Cloudflare Stream has completed an infrastructure upgrade for our Live WebRTC beta support which brings increased scalability and improved playback performance to all customers. WebRTC allows broadcasting directly from a browser (or supported WHIP client) with ultra-low latency to tens of thousands of concurrent viewers across the globe. Additionally, as part of this upgrade, the WebRTC beta now…
March 2025
- Introducing Media Transformations from Cloudflare Stream
Today, we are thrilled to announce Media Transformations, a new service that brings the magic of Image Transformations to short-form video files, wherever they are stored! For customers with a huge volume of short video — generative AI output, e-commerce product videos, social media clips, or short marketing content — uploading those assets to Stream is not always practical. Sometimes, the greate…
February 2025
- Rewind, Replay, Resume: Introducing DVR for Stream Live
Previously, all viewers watched "the live edge," or the latest content of the broadcast, synchronously. If a viewer paused for more than a few seconds, the player would automatically "catch up" when playback started again. Seeking through the broadcast was only available once the recording was available after it concluded. Starting today, customers can make a small adjustment to the player embed…
January 2025
- Expanded language support for Stream AI Generated Captions
Stream's generated captions leverage Workers AI to automatically transcribe audio and provide captions to the player experience. We have added support for these languages: cs - Czech nl - Dutch fr - French de - German it - Italian ja - Japanese ko - Korean pl - Polish pt - Portuguese ru - Russian es - Spanish For more information, learn about adding captions to videos.