Stream

All-in-one managed media pipeline for live and on-demand video

Stream makes storing, encoding, and distributing video effortless — eliminating the need for complex infrastructure, multiple vendors, or opaque pricing models.

Unified Media Pipeline

Upload, encode, package, and stream video from a single API — no stitching together services or vendors.

Simple, Predictable Pricing

Avoid convoluted billing models with clear, cost-effective rates that scale with you.

Built on Cloudflare's Network

Delivers video globally with lower bandwidth costs, faster access, and higher reliability.

Fast, global, unified

Stream provides a complete media pipeline from upload to delivery. Upload videos via API or direct upload, automatically encode to multiple formats and bitrates, then deliver through Cloudflare's global network. Built-in player or integrate with your own — all managed through a single, unified API. With RTMP/SRT ingest for live streaming and HLS/DASH output for compatibility, Stream handles both real-time and on-demand content seamlessly.

Background Pattern
Stream

Perfect for modern video workflows

You can use Stream to:

View docs

E-learning and user-generated content

Perfect for educational platforms, journalism, worship services, and sports broadcasting with reliable delivery and flexible player options.

AI-generated media workflows

Integrate with Stream or Media Transformations + R2 for AI-generated video content with automatic optimization and global delivery.

Live streaming events

Broadcast live events with RTMP/SRT ingest and HLS/DASH output, reaching audiences worldwide with minimal latency.

Multi-platform video distribution

Transform videos for different platforms with resizing, cropping, and repackaging — adapt content for social media, mobile, and web.

Cloudflare Stream delivers video at global scale with unified media pipeline

Transform, encode, and deliver video worldwide with a single API. Stream handles upload, encoding, delivery, and playback — letting you focus on creating great content instead of managing complex video infrastructure.

Background Pattern
export default {  async fetch(request, env, ctx): Promise<Response> {    // Upload a video file    const formData = new FormData();    formData.append('file', videoFile);
    const uploadResponse = await fetch(      'https://api.cloudflare.com/client/v4/accounts/{account_id}/stream',      {        method: 'POST',        headers: {          Authorization: 'Bearer ' + env.CLOUDFLARE_API_TOKEN,        },        body: formData,      },    );
    const uploadResult = await uploadResponse