Products · Developer platform

Stream

Store, encode, deliver, and play videos on sites and applications

Pricing and limits

Pricing

as of Nov 3, 2026

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.

Go to Videos ↗

Storage is consumed by:

  • Original videos uploaded to your account
  • Recordings of live broadcasts using RTMP or SRT
  • The reserved maxDurationSeconds for 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:

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

14 entries since February 2024.

October 2026

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.