Dreep vs Cloudflare Images

Cloudflare Images bills per image stored, delivered and transformed, and handles video through a separate product, Cloudflare Stream. Dreep uses flat monthly plans that bundle storage, image and video transformations, OCR and presets, and on paid plans it can store originals and variants in your own S3-compatible bucket. Pick Cloudflare for very high image delivery volumes; pick Dreep for one media API across formats.

Feature comparison

Cloudflare figures are from Cloudflare's own documentation at the time of writing (October 2026). Dreep figures are from the live plans on the pricing page.

Dreep vs Cloudflare Images
CapabilityCloudflare ImagesDreep
Pricing modelUsage-based: $5 per 100,000 images stored, $1 per 100,000 images delivered, $0.50 per 1,000 unique transformations after 5,000 a month.Flat plans: Free $0, Starter $2.99/mo, Pro $5.99/mo. One-time image transformation packs from $1.99 for 10,000.
Free allowance5,000 unique transformations a month for images stored elsewhere. Storing images in Cloudflare Images needs the Images Paid plan.1 GB storage, 100 image and 20 video transformations a month, 3 presets.
Resizing modelNamed variants (up to 100) or flexible variants on imagedelivery.net. Comma-separated options in /cdn-cgi/image/ URLs on your own zone.Query parameters on one asset URL: width, height, fit, format, quality, gravity, dpr, blur, rotate, radius, bg. Saved presets.
Images in your own bucketTransforms images from any origin you allow, served through a Cloudflare zone with transformations enabled.BYOB on Starter and Pro: AWS S3, Cloudflare R2, Wasabi, DigitalOcean Spaces, MinIO or any S3-compatible bucket. Originals and variants live in your bucket.
Upload sizeHosted images up to 10 MB and 100 megapixels.Up to 500 MB per file, images and video.
VideoCloudflare Stream, a separate product billed per minute stored and per minute delivered.Same URL model as images: resize, trim, MP4, WebM, MOV, HLS, GIF, thumbnails and audio extraction.
OCRNot part of Cloudflare Images.format=txt on an image or PDF, or POST /ocr. Billed per OCR page.
Private mediaSigned delivery URLs for private images. Flexible variants cannot be used with signed URLs.Public, Private or Signed folders. HMAC-SHA256 signed URLs generated locally by the SDKs, with any transform.
ToolingREST API, dashboard and an Images binding for Workers.JavaScript/TypeScript and Go SDKs with zero dependencies, plus REST.

Pricing models and a worked example

Cloudflare Images charges for three things: images stored ($5 per 100,000, sold in 100,000-image blocks on the Images Paid plan), images delivered ($1 per 100,000) and unique transformations ($0.50 per 1,000 after the first 5,000 each month). Dreep charges a flat plan price with monthly allowances, and you buy add-ons when you run out instead of paying overage.

Assumptions

  • An online shop with 8,000 product photos averaging 500 KB, about 4 GB of originals.
  • Three sizes per photo: thumbnail, listing card and detail view.
  • 40,000 resized image responses a month.
  • Dreep counts every request for a transformed variant against the monthly image transformation allowance; originals are never counted.
  • Published USD prices at the time of writing (October 2026), before tax.

Cloudflare Images (hosted)

Storage, one 100,000-image block
$5.00
40,000 deliveries at $1 per 100,000
$0.40
Three variants (not counted as stored images)
$0.00
Total per month$5.40

Dreep Pro

Pro plan, 50 GB and 50,000 image transformations
$5.99
4 GB of originals, inside the 50 GB
$0.00
40,000 transformations, inside the 50,000
$0.00
Total per month$5.99

At this size the two land within a dollar of each other. The picture changes with traffic: at 1,000,000 deliveries a month Cloudflare's delivery line is $10, while Dreep would need about 950,000 extra transformations from one-time packs (roughly $50 at $4.99 per 100,000). For image-only sites with heavy traffic, Cloudflare's per-delivery model is likely to cost less. Dreep's plan is better value when the same budget also covers video, OCR and storage.

How Dreep handles an image in your own bucket

Cloudflare can transform images from any origin, provided they are served through a zone on Cloudflare with transformations enabled. Dreep's Bring Your Own Bucket (BYOB) works differently: Dreep handles the upload, writes the original and every generated variant to your bucket, and delivers through Dreep CDN URLs. Your domain does not need to move anywhere.

  1. Upload

    SDK upload or presigned URL from your backend

  2. Your bucket

    S3, R2, Wasabi, Spaces or MinIO

  3. Transform URL

    width, height, fit, format, quality

  4. First request

    Variant generated, stored, then cached

  5. Dreep CDN

    Same URL serves every later request

BYOB needs a Starter or Pro plan, is connected per project while the project is empty, and cannot be changed afterwards.

Variants against URL parameters, in code

Cloudflare hosted images are served through named variants you define in advance (up to 100), or through flexible variants once you enable them. Dreep has no variant list: every asset URL accepts transform parameters, and presets give a stable name when you want one.

# Upload an image
curl --request POST \
  https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/images/v1 \
  --header "Authorization: Bearer $API_TOKEN" \
  --form file=@./hero.jpg

# Deliver through a named variant you defined first
https://imagedelivery.net/<ACCOUNT_HASH>/<IMAGE_ID>/thumbnail

# Or, with flexible variants enabled on the account
https://imagedelivery.net/<ACCOUNT_HASH>/<IMAGE_ID>/w=400,sharpen=3

What the differences mean in practice

No variant list to maintain

When design asks for a new size, you change a query string rather than create a variant in a dashboard first. Presets exist for the sizes you want to name and change centrally, and they work on video too.

One product for images and video

A product video is resized, trimmed or packaged as HLS with the same URL pattern and API key as your images. Heavy video jobs return 202 while they process; you re-request the URL until it returns 200. There is no player, so use hls.js or Safari's native support.

Originals stay in your account

With BYOB, both originals and generated variants are written to your own bucket. If you leave Dreep, the files are already where you control them, rather than behind an export API.

Text out of receipts and documents

Request .txt on an image or PDF asset and Dreep returns the extracted text. You are billed per OCR page for the first extraction of a document only, so you do not need a second vendor for document capture.

Where Cloudflare Images is the better choice

Cloudflare Images is a mature product and the right answer for a lot of teams. These are the cases where we would point you to it.

Very high delivery volume

At $1 per 100,000 images delivered, Cloudflare's model scales well for image-heavy sites with millions of monthly requests and a stable set of sizes.

A large, mature global network

Cloudflare Images is a long-established product on Cloudflare's global network. If your domain is already proxied by Cloudflare, URL transformations work on your existing zone.

Workers integration

The Images binding lets a Worker resize and re-encode images in code, which suits teams that already build request logic on Workers.

Automatic format choice

Cloudflare can pick the best format per browser. Dreep needs an explicit format, so you choose avif or webp yourself or list sources in a picture element.

Who this is for

  • Teams that want images, video, OCR and storage on one fixed monthly price.
  • Apps that must keep originals in their own S3, R2, Wasabi, Spaces or MinIO bucket.
  • Developers who prefer readable query parameters and typed SDKs in JavaScript or Go.
  • Products that need video transcoding and HLS alongside image resizing.

When Dreep is not the right fit

  • Image-only sites serving millions of requests a month, where per-delivery pricing wins.
  • Stacks built around Workers that want image processing inside Worker code.
  • Teams that rely on automatic per-browser format negotiation.
  • Anyone needing live streaming, a hosted video player or DRM.

Migrating from Cloudflare Images

Dreep has no importer for Cloudflare Images (its dashboard importers cover Cloudinary, Amazon S3 and Cloudflare R2), so a move is a scripted export and re-upload.

  1. 1

    Map variants to presets

    List your Cloudflare variants and create a Dreep preset for each, with the same width, height and fit. Call sites can then switch from a variant name to the same preset name.

  2. 2

    Decide on BYOB before uploading

    A bucket can only be connected while the project is empty, and it cannot be changed later. Connect your S3 or R2 bucket first if you want originals there.

  3. 3

    Export the originals

    Cloudflare's API returns the stored file for each image at GET /accounts/{account_id}/images/v1/{image_id}/blob. Very large images may come back as a near-lossless version.

  4. 4

    Upload and record the mapping

    Upload each file with the SDK or the presigned flow, and store the Cloudflare image ID next to the new Dreep asset ID so you can rewrite URLs in one pass.

  5. 5

    Switch URLs, then retire

    Replace imagedelivery.net URLs with dreep.url(asset, { preset }) and keep both live until traffic to Cloudflare stops. Videos on Stream are re-uploaded from your source files.

Frequently asked questions

Can Dreep transform images that are already in my R2 or S3 bucket?

Not in place. BYOB means new uploads made through Dreep are stored in your bucket, connected while the project is empty. For existing objects, the dashboard's S3 and R2 importers run a one-off background job that copies the files you choose into a Dreep project, after which they can be transformed. Cloudflare's URL transformations, by contrast, read existing images directly from any origin you allow.

Does Dreep have an equivalent of Cloudflare's automatic format?

No. Dreep has no format=auto, so you set format=avif, webp, jpeg or png explicitly. A picture element with an avif source and a webp fallback gives most of the benefit.

How does Dreep video compare with Cloudflare Stream?

Stream is a separate product priced at $5 per 1,000 minutes stored and $1 per 1,000 minutes delivered, with free encoding, at the time of writing. Dreep video transforms are URL parameters counted against a monthly video transformation allowance (20 on Free, 1,000 on Starter, 4,000 on Pro). Dreep has no player and no live streaming.

What happens when I reach a limit?

On Dreep, requests beyond an allowance return LIMIT_EXCEEDED and nothing is billed automatically: you buy an add-on or upgrade. On Cloudflare's free tier, new transformations beyond 5,000 a month return error 9422 while cached ones keep working.

Can I use both?

Yes. Some teams keep Cloudflare Images for high-traffic marketing images and use Dreep for user uploads, video and OCR. They are separate URL hosts, so the two do not interfere.

Related

Test Dreep against your current variants

The Free plan includes 1 GB of storage and 100 image transformations a month: enough to upload a sample of your catalogue and compare output side by side before you move anything.

Sources

Cloudflare facts on this page were checked against these official pages in October 2026.