← Back to explorer
Example workload/workloads/user-generated-content

User-Generated Content

Ingest, transform, store, and deliver user-uploaded media at scale.

For products shaped by user uploads such as images, video, and documents, where storage cost, transformation pipelines, metadata, moderation, and delivery are all core concerns.

ugcuser uploadscreator platformmedia sharingasset pipelinevideo uploadsimage uploads

Recommended primitives

R2

core

S3-compatible object storage for files, audio, images, backups, and exports.

Original asset storage and durable blob layer

Images

core

Managed image storage, transformation, optimization, and responsive delivery.

Image optimization, variants, and responsive delivery

Stream

supporting

Managed video upload, transcoding, and playback for one-to-many video delivery.

Managed ingest, transcoding, and playback for hosted video

Workers

supporting

Serverless edge functions. The entry point for most Cloudflare apps.

Upload APIs, auth, and application glue

D1

supporting

Managed serverless SQLite for relational app data and CRUD workloads under about 10 GB per database.

Metadata, ownership, and relational content records

Queues

optional

Guaranteed message delivery between Workers for async processing and backpressure handling.

Asynchronous moderation, enrichment, and processing pipelines

Architecture notes

  • Separate original asset storage from transformed delivery concerns.
  • Keep upload and metadata APIs in Workers while storage and media products handle the heavy lifting.
  • Use queues when moderation, enrichment, or processing becomes asynchronous.

Starter prompts

We are building a marketplace where users upload many listing photos and short videos.
Need a creator app with user image uploads, variants, and metadata.
Build a course platform where instructors upload videos and students stream them globally.

Avoid notes

Treating interactive calls as hosted video

Two-way calling and conferencing have different transport and latency requirements than UGC hosting.

Consider: Use RealtimeKit for interactive communication features.

Using Stream for every upload

Not every media workload needs a full managed video pipeline; many only need generic object storage and image processing.

Consider: Use R2 for original assets and add Images or Stream only where needed.

Resources

Try your own version

Start from one of these prompts or describe your own variation on the homepage to get a primitive recommendation.

Open the explorer