Image CDN

An image CDN transforms your images on the fly and serves them from the edge. You store one original and get every size and format you need from the URL. Small Pics is an image CDN starting at $9/mo with no bandwidth charges.

What is an image CDN?

An image CDN is a content delivery network designed specifically for images. It sits between your storage and your visitors: a request comes in, it fetches the original, applies whatever transforms the URL asks for, and caches the result at an edge location near that visitor. The next request for the same variant comes straight from cache.

How it differs from a regular content delivery network

A regular content delivery network is a copy machine: what goes in comes out identical, just closer to the user. Upload a 4 MB photo and every visitor downloads 4 MB. An image CDN can transform images on demand instead, producing whatever size and image compression the URL asks for. That is why image delivery ends up a separate product.

Size and format come from the URL

Size comes from the URL, one per width, with the browser choosing between them from your srcset based on the device. Format comes from the URL too, though some services offer an opt-in parameter that reads the request headers and picks AVIF or WebP for you. Small Pics outputs AVIF by default and takes the format from fm. For browsers without AVIF support, serve fallbacks with a <picture> element.

How does it work?

Most image CDN services work on URL parameters. Point the service at an origin, then request transformations by appending them to the CDN image URL:

https://images.yoursite.com/photos/hero.jpg?w=800&h=600&fit=cover&fm=avif

That asks for an 800 by 600 crop in AVIF. The service fetches the original, resizes, crops, encodes, and caches it. Change w=800 to w=400 and you get a different variant from the same file. Most people build these by hand once, then switch to a CDN image URL generator or a framework helper.

Caching at edge locations around the world

Generated transformations are then cached at edge locations around the world, so the encoding cost is paid once and every later request is a cache hit. Small Pics runs on Cloudflare's network, the same infrastructure behind Cloudflare Images. Speed after the first request is a cache lookup, not a transform.

Every image below is the same stored file with different parameters.

Image optimization demo: photograph cropped square at 200 pixels wide for delivery to a small device w=200&fit=cover
The same photograph letterboxed to a square size with a grey background, a common website layout format fit=contain&bg=
Image delivery with the focal point pushed to the right edge so the subject survives a square crop fit=crop-100-0
Image compression at quality 20, showing the artefacts heavy compression introduces at this size q=20
One original, four URLs. Crop, focal point, and image compression are decided at request time, so a single stored file covers every size and device.

Pull-based services read from storage you already own, on demand. Small Pics works this way, reading from S3, Cloudflare R2, DigitalOcean Spaces, Hetzner Object Storage, or any public HTTP origin.

Push-based services make you upload into their storage first. That buys a media library with search and tagging, at the cost of a migration, a second copy of your assets, and vendor-billed storage.

What happens to your images?

An image CDN applies four transformations, in roughly this order of impact.

Resizing to the size the device asked for

The single biggest win in image optimization. Most websites serve images far larger than the space they occupy: a 3000 pixel photo in a 600 pixel column carries twenty-five times the pixels it can show. Sizing to the device is where the saving lives.

Format conversion to AVIF and WebP

AVIF and WebP produce substantially smaller files than JPEG at equivalent perceived quality, which makes format the second lever in image optimization after size. Encoding at request time means one stored original, not a copy per format.

Image compression and file size

Quality settings trade file size against fidelity. Most photographic content is indistinguishable at 75 to 80 and far lighter than the same image at 95.

Cropping and art direction

Fit modes decide what happens when the requested aspect ratio does not match the original: cover crops to fill, contain letterboxes. A focal point keeps an off-centre subject in frame through a tight crop.

Do you need an image CDN?

Some honest cases where you do not. If your site has a handful of images that never change, a build step is simpler and free. If every image is a fixed-size avatar, generate it on upload and stop there.

The cases where an image CDN earns its cost:

  • Editors upload images. Whatever comes out of a phone or a stock library arrives at unpredictable dimensions, so transforming on request means you never depend on someone uploading the right size.
  • You need responsive images. For most websites a srcset means four to six variants per image, one per device class, and generating those at build time multiplies build duration and storage by the same factor.
  • Your transforms run on your web server. Image processing is CPU-intensive, so transform jobs compete with visitor requests and a cache clear can bring the site to a crawl.
  • Core Web Vitals matter to you. Images are commonly the Largest Contentful Paint element, and on an ecommerce site that lever is the one closest to sales.

What does it cost?

Image CDN pricing varies far more than the features do, because services bill on completely different units. There is no meaningful free image CDN tier at production volume, though several run a trial or a small allowance.

Three billing models

Flat tiers

A fixed monthly price for a quota of images and transforms. Predictable, and the bill does not move when a post goes viral. Small Pics uses this model: $9/mo for 2,500 origin images and 17,500 transforms, $19/mo for the tier adding multiple sources and custom domains.

Credit systems

Storage, bandwidth, and operations bundled into a single pool that different actions drain at different rates. Flexible, but costing a month means knowing the conversion rate of every operation type.

Usage-based

Billed per GB delivered or per thousand operations. Cheap at low volume, and it scales linearly with traffic, which is either fair or alarming depending on your traffic pattern.

The costs that catch people out are rarely the headline number. Bandwidth billed separately from transforms. Overage rates well above base rates. Origin storage counted even for images nobody requests. Bot traffic counted as delivery.

Whichever model you land on, the bill tracks how much data you ship, and that comes down to sizing and format. What is an image CDN covers how both get decided.

What should you look for?

Most services in this category ship the same core features, so a feature checklist rarely separates them. Six things do, and they answer two different questions.

Will it fit what you already build on?

Format support: AVIF, WebP, and JPEG XL

AVIF and WebP are table stakes. JPEG XL is not widely supported yet and compresses better than WebP, with lossless recompression of existing JPEGs. Small Pics outputs seven formats: AVIF, WebP, JPEG, Progressive JPEG, PNG, GIF, and JPEG XL.

Origin flexibility

Can it read from the storage you already use, or does it require its own? A service that makes you store images in its bucket is a migration before it is a feature.

Platform and framework support

Check how the service meets the platform you actually build on. A WordPress site, a Craft CMS build, and a Next.js app each want a different integration, and the difference between a plugin and a pile of hand-written URLs is real work. Small Pics accepts Imgix parameters, so any platform that already emits Imgix URLs works without a rewrite.

What will it cost you to stay, and to leave?

Billing model

A site with 500 images and heavy traffic has the opposite cost profile to one with 500,000 images and light traffic. The cheapest service for one is often the most expensive for the other.

What happens at the limit

Some services block delivery when you exceed quota, taking your images offline. If your product images stop loading, so do your sales. Small Pics emails a warning, then bills $5 per 1,000 additional origins (including 7,000 transforms) or $3 per 7,000 transforms. Images keep serving.

How hard it is to leave

The one people underweight. A proprietary URL scheme means every image reference in your templates encodes that vendor, so switching later is a find-and-replace across the codebase with a window where old URLs break. A common parameter syntax cuts that risk.

How does Small Pics compare?

Small Pics is a pull-based image CDN with flat pricing, running on Cloudflare's network. It reads from storage you already own, transforms via URL parameters, and serves from the edge. No bandwidth charges, no per-GB delivery billing.

Two things distinguish it. Imgix parameter compatibility: Small Pics accepts Imgix URL syntax, including w, h, fit, crop, fm, q, dpr, and the watermark set, so an existing Imgix site can move by pointing DNS. Only fit=facearea and fit=min are unsupported.

The second is JPEG XL output, which almost no other transform service offers.

Where it falls short: there is no digital asset manager, so no place to store images, tag them, or search them, and no upload API for pushing media files in. It does not handle videos. And a flat tier is the wrong shape for an enormous library with light traffic.

If you are shopping for the best image CDN for your own case, the honest answer depends on which of those trade-offs you are willing to make. A team that wants a media library and the features around it will want a different product. A team that wants to deliver images from storage it already owns, at a price that does not move with traffic, is the case Small Pics is built for.

How do you set one up?

For a pull-based image CDN the setup is short:

  • Point it at your origin. Give the service the location of your existing images, whether that is an S3 bucket, R2, Spaces, Hetzner, or a public URL.
  • Map a domain. A custom domain such as images.yoursite.com keeps image URLs on your own brand and makes a future switch a DNS change.
  • Update your image URLs to point at that domain, adding transformations where you want specific sizes or formats. Most platforms have a helper, a plugin, or a URL generator for this; on WordPress it is usually a plugin, on a hand-built site a small template function.
  • Add srcset so browsers pick the right variant for their viewport and device pixel density.
  • Pick a small set of standard widths and reuse them, so the cache stays dense rather than filling with one-off variants.
  • Check output quality on a few real images before switching every template over.

No file migration, no build step, no re-encoding pass. That is the practical appeal of an image CDN: the first request for any variant generates and caches it.

Frequently asked questions

What does CDN stand for?

CDN stands for content delivery network: a set of servers spread around the world that cache your files close to the people requesting them. An image CDN is a content delivery network designed specifically for images, so it does the caching and the transformations in one pass.

What is an image CDN?

An image CDN is a content delivery network that also transforms images. It sits between your image storage and your visitors, resizing, cropping, compressing, and converting formats on the fly, then caching the result at edge locations worldwide. A regular CDN moves files unchanged. An image CDN changes them on the way through.

Do I need one if I already use a CDN?

A regular CDN caches whatever you give it. If you upload a 4 MB photo, every visitor downloads 4 MB, just faster. A transform service generates whatever size and format the URL asks for. Pair that with a srcset and the browser downloads the variant that fits its viewport instead of the full 4 MB. The two solve different problems, and most transform services include edge delivery.

How much does image delivery cost?

Pricing runs from roughly $9/mo to several hundred, depending on how the service bills. Flat tiers charge for image counts and transforms. Credit systems bundle storage, bandwidth, and operations into one pool. Usage-based services bill per GB delivered. Small Pics starts at $9/mo with no bandwidth charges.

Does the service store my images?

Not necessarily. Some services require you to upload images to their storage. Others, including Small Pics, pull from an origin you already own such as S3, Cloudflare R2, DigitalOcean Spaces, Hetzner Object Storage, or any public HTTP origin. Pull-based services mean no migration and no duplicate copy of your library.

What image formats should be served?

AVIF and WebP cover almost every modern browser and cut file sizes substantially against JPEG. Small Pics outputs AVIF, WebP, JPEG, Progressive JPEG, PNG, GIF, and JPEG XL, with AVIF as the default when no format is specified.

Will this improve Core Web Vitals?

Usually yes, because images are commonly the largest element on a page and Largest Contentful Paint measures exactly that. Serving a correctly sized AVIF from a nearby edge instead of an oversized JPEG from your origin is one of the highest-leverage LCP fixes available.

Can I switch providers later?

It depends on how the URLs are built. Services with proprietary URL schemes lock your templates in. Small Pics accepts Imgix URL parameters, so sites already using Imgix syntax can switch by pointing DNS rather than rewriting templates.

Is there a free trial?

Small Pics includes a 14-day free trial on every plan with no credit card required. You can connect a source, run transforms, and check output quality before paying anything.

Try Small Pics free for 14 days

No credit card required. Connect an origin, run transforms, and check the output before paying anything.

Start free trial