Skip to main content

Cloudinary vs Imgix vs Cloudflare Images 2026

·APIScout Team
image cdncloudinaryimgixcloudflare imagesimage optimizationimage apiwebpimage transformation

Every Image on the Web Needs Optimization

A 4MB product image served directly from S3 kills mobile conversion. The same image, resized, compressed, and converted to WebP, loads in under 100ms from a CDN edge node. Image optimization is not a nice-to-have — it's directly correlated with page load time, Core Web Vitals, and conversion rates.

Three platforms dominate developer-facing image optimization APIs in 2026: Cloudinary (the full-featured DAM with video support), Imgix (the real-time transformation specialist), and Cloudflare Images (the simplest and most cost-effective for teams already in the Cloudflare ecosystem). Each represents a different trade-off between features, pricing simplicity, and cost at scale.

TL;DR

Cloudinary is the most feature-complete — DAM, AI-powered transformations, video optimization, generative AI fill, 400+ transformation options. But pricing via credits is complex and can spike unexpectedly. Imgix is the real-time transformation specialist — connect your own storage, transform on-the-fly, no storage costs. Cloudflare Images is the simplest and cheapest — $0.50/1,000 transforms, straightforward pricing, no hidden costs, but fewer advanced features than Cloudinary.

Key Takeaways

  • Cloudinary's free tier includes 25 credits/month — a credit covers approximately 1GB bandwidth OR 1,000 transformations. Complex pricing makes cost prediction difficult.
  • Imgix has a $100/month minimum — no free tier; Imgix doesn't store images, you connect your existing S3/GCS/Azure storage.
  • Cloudflare Images costs $0.50/1,000 transforms — if you serve images from external origins (not Cloudflare storage), you only pay transform fees.
  • Cloudinary includes AI features — background removal, generative expand, auto-cropping with face detection, object recognition — that Imgix and Cloudflare don't offer.
  • All three convert to WebP/AVIF automatically — modern image formats are supported across all platforms.
  • Imgix and Cloudflare support URL-based transformations — transform parameters in the query string, no dashboard configuration required.
  • Cloudinary enterprise contracts range from $2,000 to $10,000+/month — enterprise pricing reflects the breadth of features.

Pricing Comparison

PlatformFree TierPaid StartingTransform Cost
Cloudinary25 credits/month~$89/monthCredit-based (complex)
ImgixNone$100/monthIncluded in plan
Cloudflare Images1,500 stored imagesN/A (pay-as-you-go)$0.50/1,000
ImageKitFree (10GB bandwidth)$9/monthVolume-based

Cloudflare Images pricing detail:

  • Storage: $5/100K images stored
  • Transforms: $0.50/1,000 transforms
  • Delivery: Free (uses Cloudflare's CDN with no bandwidth charge)

Cloudinary

Best for: Full-featured DAM, AI transformations, video optimization, enterprise teams

Cloudinary is the most feature-complete image and video optimization platform — used by Lyft, NBC, and thousands of enterprises. It's not just an image CDN; it's a digital asset management (DAM) platform with a UI for asset management, AI-powered transformation capabilities, and video optimization alongside images.

Pricing (Credit System)

Cloudinary uses a "credit" system that unifies bandwidth, storage, and transformations into one currency — but makes cost prediction complex:

  • 1 credit ≈ 1GB bandwidth
  • 1 credit ≈ 1,000 transformations
  • 1 credit ≈ 1GB storage
PlanMonthly CreditsCost
Free25$0
Plus225$89/month
Advanced1,000$249/month
EnterpriseCustomCustom

A high-traffic site serving 500GB of images per month with 10K transformations uses roughly 510 credits — requiring the Advanced plan.

URL-Based Transformations

<!-- Original image URL -->
https://res.cloudinary.com/demo/image/upload/sample.jpg

<!-- Resize to 800px wide, auto-crop, convert to WebP -->
https://res.cloudinary.com/demo/image/upload/w_800,c_auto,f_auto,q_auto/sample.jpg

<!-- Smart crop to face, add border radius, grayscale -->
https://res.cloudinary.com/demo/image/upload/w_400,h_400,c_fill,g_face,r_max,e_grayscale/sample.jpg

<!-- Generative background fill (AI) -->
https://res.cloudinary.com/demo/image/upload/w_1200,h_600,c_fill,g_auto,b_gen_fill/sample.jpg

SDK Integration

import { v2 as cloudinary } from "cloudinary";

cloudinary.config({
  cloud_name: process.env.CLOUDINARY_CLOUD_NAME,
  api_key: process.env.CLOUDINARY_API_KEY,
  api_secret: process.env.CLOUDINARY_API_SECRET,
});

// Upload with automatic optimization
const result = await cloudinary.uploader.upload("path/to/image.jpg", {
  folder: "products",
  transformation: [
    { quality: "auto", fetch_format: "auto" },  // Auto-convert to WebP/AVIF
  ],
  eager: [
    { width: 400, height: 400, crop: "fill", gravity: "face" },  // Thumbnail
    { width: 1200, height: 630, crop: "fill", gravity: "auto" }, // OG image
  ],
});

console.log(result.secure_url);

AI Transformation Features

# Background removal (AI-powered)
https://res.cloudinary.com/demo/image/upload/e_background_removal/sample.jpg

# Generative expand — AI extends the image canvas
https://res.cloudinary.com/demo/image/upload/ar_16:9,b_gen_fill,c_pad/sample.jpg

# Object recognition crop — crop to specific detected object
https://res.cloudinary.com/demo/image/upload/c_fill,g_auto:airplane/sample.jpg

When to Choose Cloudinary

Teams needing AI-powered image features (background removal, smart cropping), video optimization alongside images, enterprise DAM with non-technical team access, or applications with complex transformation pipelines where Cloudinary's 400+ transformation options are needed.

Imgix

Best for: Real-time transformations, existing S3/GCS storage, performance-critical applications

Imgix takes a different approach: it doesn't store images. You connect Imgix to your existing storage (AWS S3, Google Cloud Storage, Azure Blob, any HTTP origin), and Imgix transforms and delivers on-the-fly. This means you pay only for transformation and delivery — storage stays in your existing infrastructure where you're already paying.

Pricing

  • Minimum: $100/month
  • Sources (storage connections): Included
  • Bandwidth: Volume-based, included in plan tiers
  • Transformations: Included

No free tier — Imgix is aimed at production applications with real traffic.

URL-Based Transformations

<!-- Connect your S3 bucket as an Imgix source -->
<!-- Original: https://yourbucket.s3.amazonaws.com/products/chair.jpg -->
<!-- Imgix URL: https://your-subdomain.imgix.net/products/chair.jpg -->

<!-- Resize to 600px wide, auto WebP/AVIF -->
https://your-subdomain.imgix.net/products/chair.jpg?w=600&auto=format,compress

<!-- Smart crop to subject, square crop -->
https://your-subdomain.imgix.net/products/chair.jpg?w=400&h=400&fit=crop&crop=entropy

<!-- Blur background, focus on center subject -->
https://your-subdomain.imgix.net/products/chair.jpg?w=800&blend-mode=normal&blur=20

<!-- Progressive JPEG for slow connections -->
https://your-subdomain.imgix.net/products/chair.jpg?w=1200&fm=pjpg

SDK Integration

import ImgixClient from "@imgix/js-core";

const client = new ImgixClient({
  domain: "your-subdomain.imgix.net",
  secureURLToken: "your-token",  // Optional: secure signed URLs
});

// Build a transformed URL
const url = client.buildURL("products/chair.jpg", {
  w: 600,
  auto: "format,compress",
  fit: "crop",
  crop: "entropy",
});

// srcSet for responsive images
const srcSet = client.buildSrcSet("products/chair.jpg", { auto: "format,compress" });
// Returns: https://...?w=100&auto=format,compress 100w, ...?w=200&... 200w, ...

React Component with Responsive Images

import { buildURL, buildSrcSet } from "@imgix/js-core";

function ProductImage({ src, alt }) {
  const imgixDomain = "your-subdomain.imgix.net";

  const params = { auto: "format,compress", fit: "crop", crop: "entropy" };

  const src800 = buildURL(`${imgixDomain}/${src}`, { ...params, w: 800 });
  const srcSet = buildSrcSet(`${imgixDomain}/${src}`, params, {
    widths: [400, 800, 1200, 1600],
  });

  return (
    <img
      src={src800}
      srcSet={srcSet}
      sizes="(max-width: 768px) 100vw, 800px"
      alt={alt}
      loading="lazy"
    />
  );
}

When to Choose Imgix

Teams with existing S3/GCS storage that don't want to migrate files to a new platform, performance-critical applications where Imgix's optimized delivery network matters, or projects where the $100/month minimum is acceptable and avoiding storage migration is valuable.

Cloudflare Images

Best for: Simplest pricing, Cloudflare ecosystem, high-volume transforms, bandwidth-sensitive

Cloudflare Images is the image platform built into Cloudflare's network — the same infrastructure as Workers, Pages, and R2. The pricing is the simplest in the market: $5/100K stored images and $0.50/1,000 transforms. Delivery is free via Cloudflare's CDN. No credit system, no bandwidth billing (for most usage patterns).

Pricing

FeatureCost
Storage (images in Cloudflare)$5/100,000 images
Transformations$0.50/1,000
DeliveryFree (via Cloudflare CDN)
External origin transforms$0.50/1,000 (no storage fee)

External origin transforms are particularly interesting: if your images live on S3 or your own server, Cloudflare Images can transform them on-the-fly without storing them in Cloudflare's storage — you pay only the $0.50/1,000 transform fee.

URL-Based Transformations

<!-- Images stored in Cloudflare Images -->
https://imagedelivery.net/{account-id}/{image-id}/public
https://imagedelivery.net/{account-id}/{image-id}/w=600,h=400,fit=crop

<!-- Variants (pre-defined transforms) -->
https://imagedelivery.net/{account-id}/{image-id}/thumbnail
https://imagedelivery.net/{account-id}/{image-id}/og-image

API Integration

// Upload image to Cloudflare Images
const formData = new FormData();
formData.append("file", imageFile);
formData.append("id", "product-chair-001");  // Custom ID

const response = await fetch(
  `https://api.cloudflare.com/client/v4/accounts/${ACCOUNT_ID}/images/v1`,
  {
    method: "POST",
    headers: { Authorization: `Bearer ${CF_API_TOKEN}` },
    body: formData,
  }
);

const result = await response.json();
console.log(`Image URL: ${result.result.variants[0]}`);

Defining Variants (Pre-configured transforms)

# Create a variant (reusable transform configuration)
curl -X POST "https://api.cloudflare.com/client/v4/accounts/{account_id}/images/v1/variants" \
  -H "Authorization: Bearer $CF_API_TOKEN" \
  -d '{
    "id": "product-thumbnail",
    "options": {
      "width": 400,
      "height": 400,
      "fit": "cover",
      "metadata": "none",
      "sharpen": 1
    }
  }'

Workers Integration (Resize on Fetch)

// Cloudflare Worker — resize images from external origin
export default {
  async fetch(request: Request): Promise<Response> {
    const url = new URL(request.url);
    const imageUrl = url.searchParams.get("url");

    if (!imageUrl) return new Response("Missing url param", { status: 400 });

    // Use Cloudflare's image resizing (included with Workers Paid)
    const imageRequest = new Request(imageUrl, {
      headers: { accept: "image/avif,image/webp,image/jpeg" },
      cf: {
        image: {
          width: parseInt(url.searchParams.get("w") ?? "800"),
          quality: 80,
          format: "auto",
        },
      },
    });

    return fetch(imageRequest);
  },
};

When to Choose Cloudflare Images

Teams already using Cloudflare Workers, Pages, or R2, projects prioritizing pricing predictability over feature breadth, high-volume transform scenarios where $0.50/1,000 is cheaper than credit-based alternatives, or teams that don't need AI features (background removal, face detection) that Cloudinary offers.

Feature Comparison

FeatureCloudinaryImgixCloudflare Images
Free tierYes (25 credits)NoYes (1,500 images)
Min paid~$89/month$100/monthPay-as-you-go
Storage includedYesNo (bring own)Yes
AI featuresYes (extensive)LimitedNo
VideoYesNoNo
URL transformsYesYesYes (variants)
Dynamic transformsYesYesLimited
WebP/AVIFYesYesYes
Bandwidth feeVia creditsIncludedFree
Pricing complexityHigh (credits)MediumLow

Decision Framework

ScenarioRecommended
AI features (background removal)Cloudinary
Video + images togetherCloudinary
Existing S3/GCS storageImgix
Simplest pricingCloudflare Images
High volume, cost efficiencyCloudflare Images
Cloudflare ecosystemCloudflare Images
Enterprise DAMCloudinary
Performance-first, no storage migrationImgix
Free tier for small projectCloudinary or Cloudflare

Verdict

Cloudinary is justified when AI features and video optimization are requirements, or when non-technical teams need a polished DAM interface. The credit pricing is complex but the feature breadth is unmatched.

Imgix is the choice for teams with existing cloud storage that want the best real-time transformation performance without migrating assets. The $100/month minimum and no-storage model suit teams that are already paying for S3 and don't want a second storage vendor.

Cloudflare Images wins on simplicity and cost for most production applications. The straightforward $0.50/1,000 transform pricing, free delivery, and Cloudflare ecosystem integration make it the default recommendation for new projects that don't need Cloudinary's advanced AI or Imgix's storage flexibility.


Compare image CDN API pricing, features, and integration documentation at APIScout — find the right image optimization platform for your application.

Comments