DEV Community

Cover image for Cloudinary Pricing 2026: Free Tier Limits, Transformation Costs & When to Upgrade
Nayan Kyada
Nayan Kyada

Posted on Edited on Originally published at nayankyada.com

Cloudinary Pricing 2026: Free Tier Limits, Transformation Costs & When to Upgrade

Cloudinary is the default image and video CDN recommendation you'll see across headless CMS tutorials — including Sanity setups where teams want more transformation control than the Sanity image pipeline offers. The pricing model looks simple until you hit your first billing surprise. Here's what the tiers actually cost and where the thresholds are.

How Cloudinary pricing works in 2026

Cloudinary bills on credits, not on individual resource units. One credit equals one of the following: 1 GB of managed storage, 1 GB of image bandwidth (2 GB of video bandwidth on paid plans), or 1,000 transformations. That normalisation sounds clean, but in practice transformation usage is almost always the first limit you hit — not storage or bandwidth — because every resize, crop, format conversion, or overlay counts as a separate transformation.

The free plan includes 25 credits per month. For a small marketing site serving pre-sized images in one or two formats, 25 credits is enough. For a Next.js site pulling Sanity assets and using Cloudinary's f_auto,q_auto auto-format pipeline with multiple breakpoints, you can drain 25 credits in a day if a page gets indexed and crawled hard.

Cloudinary plan tiers and real costs

Plan Monthly price Credits included Key differences
Free $0 25 3 users, free add-ons only, forum/ticket/email support
Plus $99 (or $89/mo billed yearly) 225 Paid add-ons available, expedited support
Advanced $249 (or $224/mo billed yearly) 600 Adds custom domain (CNAME) support, 5 users
Enterprise Custom Custom Enterprise SLAs, SSO and user provisioning

Prices are from Cloudinary's pricing page at the time of writing — check it before you commit, and check how your plan handles usage beyond its monthly credits. The free plan has no paid overage path, so running out of credits on a production site is a real outage risk that most teams don't think about until it happens. Upgrading to Plus is the first credible option for any site with real traffic.

The Plus plan ($99/month, $89 billed yearly) is where most small-to-medium Next.js agencies land their client sites. 225 credits is roughly 225,000 transformations per month, which handles a typical content site with 50–100 pages, next/image serving three breakpoints, and both WebP and AVIF variants if you're using Cloudinary for format negotiation rather than Sanity's own auto=format parameter.

What actually eats your credits

Three patterns drain credits faster than teams expect:

1. Eager transformations on upload. If you configure Cloudinary to pre-generate multiple sizes and formats on asset upload — which the dashboard encourages — you're spending transformation credits immediately for every new image, regardless of whether those variants are ever served.

2. Named transformations not caching. Cloudinary caches transformed URLs, but cache keys are based on the full URL including transformation parameters. If your CMS generates slightly different crop parameters per image (common with Sanity hotspot data translated into Cloudinary g_auto gravity), each unique combination counts as a new transformation.

3. Video auto-quality. Video transcoding via q_auto or f_auto on video assets is included on every plan, but video processing and delivery consume credits much faster than images. Model your video volume before assuming the plan you sized for images still fits.

Cloudinary vs Sanity image pipeline: cost comparison

For teams already on Sanity, the most common question is whether Cloudinary is worth adding at all. Sanity's own image CDN — accessed via @sanity/image-url — handles format negotiation (auto=format), quality, and width resizing with no per-transformation charge. Sanity's Free and Growth ($15 per seat/month) plans both include 100 GB of bandwidth a month, which is enough for most sites. You only pay separately for Cloudinary if you need capabilities Sanity's pipeline doesn't have: AI background removal, overlays and text rendering, video transcoding, or face-detection cropping.

Capability Sanity image pipeline Cloudinary (Plus and up)
WebP / AVIF auto-format Yes (auto=format) Yes (f_auto)
Width / quality params Yes Yes
Hotspot / focal crop Yes (native) Yes (g_auto or manual)
AI background removal No Yes (paid add-on)
Video transcoding No Yes (all plans)
Text / overlay compositing No Yes
Per-transformation billing No Yes

For pure image delivery on a Sanity-backed Next.js site, there's rarely a cost justification for adding Cloudinary. The Sanity pipeline covers 95% of what next/image needs. Where Cloudinary earns its fee is when the design calls for generated social share images, AI-cropped headshots, or video that needs adaptive bitrate variants without standing up your own FFmpeg pipeline.

The upgrade triggers to watch

Free → Plus: You hit the 25-credit ceiling in any month, or you need a paid add-on or faster support.

Plus → Advanced: You add heavy video to the project, need a custom domain (CNAME) for delivery, or your credit usage consistently exceeds 200/month. The jump from $99 to $249 a month is steep — model your transformation counts before committing.

Advanced → Enterprise: You need a contractual uptime SLA, SAML SSO for the media library, or your bandwidth alone exceeds several TB per month. Enterprise pricing is negotiated and not published, so get a quote based on your actual volume.

What Cloudinary's pricing model hides

The credit system obscures the real cost structure: you're paying for transformations as a proxy for compute. Teams that cache aggressively at the CDN layer (Vercel Edge Cache, Cloudflare) and avoid redundant transformation variants can stay on the Plus plan indefinitely. Teams that let every page request trigger a new transformation — because they're passing dynamic width parameters rather than a fixed set — burn through credits at 10× the expected rate.

One practical rule: define a fixed breakpoint set (e.g. 640, 960, 1280, 1920) and use Cloudinary named transformations for your site's image variants. Pre-generate on upload for predictable cost. Avoid passing arbitrary w_ parameters derived from viewport width at request time.

If you're choosing between Cloudinary and Sanity's native pipeline for a greenfield Next.js site, start with Sanity's pipeline — it's included in what you're already paying — and add Cloudinary only when a specific capability gap forces the decision.

Top comments (0)