Skip to content

Media management

One master image. Every variant, from the URL.

Upload an image once. Add width, fit, format and quality to its URL and the edge resizes, converts and caches the result: AVIF or WebP where browsers support them, JPEG where they don't. No build step, no batch jobs, no egress bill.

Image optimisation is included in every CDN deployment, free tier included.

Try it

Change the URL, change the image

Every control below is a real parameter. Pick a size, a fit and a format, and copy the URL it produces.
All parameters

https://cdn.example.com/flamingo.jpg?width=640&height=640&fit=cover&format=auto

widthpixels
height640px
fitFills the box, cropping the overflow
formatAVIF → WebP → JPEG by browser
quality80 (default)
effects
640×640
Served as
AVIF*
Est. size
20 KB
vs 1.9 MB master
−99%

Illustrative preview: the drawing stands in for your image and sizes are estimates, which vary with the picture. *AVIF for browsers that accept it, then WebP, then JPEG.

The problem

Image pipelines are a job nobody wants

Most teams generate sizes at build time, store every copy and still ship the wrong one to half their visitors.
  1. 01

    Every template change means re-rendering the library

    Sizes live in the URL, not in storage. A new layout is a new query string, generated on first request.

  2. 02

    Phones download desktop-sized JPEGs

    Request the width you'll display and let format=auto pick AVIF, WebP or JPEG for each browser.

  3. 03

    Storage fills up with near-identical copies

    Keep one master. Variants are cached at the edge, so you store and manage a single file.

  4. 04

    Image views drive the bandwidth bill

    Delivery is $0 egress from 988 locations, and image optimisation adds no fee on top.

How it works

Transformed at the edge, then cached

Image optimisation is part of the CDN. The same request that asks for an image describes what it should look like.

Caching

The first request transforms. Every other one is a HIT.

The first visitor to ask for a variant triggers the work: fetch the master, resize, encode, cache. Everyone after gets the finished file from the edge, with no origin trip and no second transform.
  • Each variant is cached on its own URL
  • Default quality and format per deployment, overridable per path
  • Purge to regenerate after changing defaults

Formats

One URL, the smallest format each browser can read

With format=auto, the edge reads each browser's Accept header and serves AVIF where it's supported, then WebP, then JPEG. Your markup keeps a single URL per size.
  • JPEG, PNG, WebP and AVIF in and out
  • Animated GIFs resized with every frame kept
  • LQIP placeholders as an image, base64 or BlurHash

Protection

Brand what you publish. Keep the originals private.

Turn on a watermark for a domain and every image it serves carries your mark, applied after resizing so it scales with each variant. Keep full-resolution masters in a private bucket and share them only through time-limited presigned links.
  • Position, size, opacity and margin per domain
  • Thumbnails below a minimum width stay clean
  • Private buckets refuse unsigned requests

Reference

Every parameter, on one screen

A short list you can learn in a minute. Watermarks are set per domain rather than per URL. Full details are in the image optimisation docs.
ParameterWhat it doesExample
widthTarget width in pixelswidth=800
heightTarget height in pixelsheight=600
fitcover, contain, fill, inside or outsidefit=cover
formatauto, avif, webp, jpeg or pngformat=auto
qualityCompression, 1–100 (default 80)quality=75
blurGaussian blur, 0.3–1000blur=10
sharpenSharpen the imagesharpen=true
grayscaleConvert to greyscalegrayscale=true
lqipTiny placeholder: image, base64 or BlurHashlqip=blurhash

Use cases

Wherever images outnumber the people making them

  • E-commerce

    Listing thumbnails, zoom views and cart images from one product photo.

    ?width=400&height=400&fit=cover
  • Media & publishing

    Hero images, article thumbnails and social cards from a single upload.

    ?width=1200&height=630&fit=cover
  • User uploads

    Users upload straight to Storage with a presigned URL; every view is resized and converted on the way out.

    ?width=800&format=auto
  • Campaigns

    New crops and sizes for a test or a channel, without going back to design.

    ?width=1080&height=1080&fit=cover

Case study: Consumer tech

Tinder

How Tinder delivered Year in Swipe to 30M users

Year in Swipe is Tinder's personalised recap of each user's year, and it lands as one enormous, shareable spike. Edge's CDN handled the real-time image processing and delivery from 988 locations: the campaign launched on time, with zero downtime and zero egress fees at peak.

Read the Tinder case study
Daily users
30M
Downtime
0
Load time
<100ms
Edge locations
988

FAQ

Common questions

What does image optimisation cost?
Nothing extra. It's included in every CDN deployment, including the free tier. Each image served counts as one request, billed at $0.25 per million after the first 500k each month, and egress is $0.
Which formats can I upload?
JPEG, PNG, WebP and AVIF can be transformed and output. GIFs are accepted as input, animation included, and can be converted to animated WebP or PNG. SVGs are passed through untouched.
I changed the default quality. Why do old images look the same?
Defaults apply to newly cached images. Purge the affected paths and each variant is regenerated with the new settings on its next request.
Do I need to change my origin or my markup?
No origin changes. Point the CDN at your existing server or an Edge Storage bucket and add parameters to the image URLs your templates already use.

Stop pre-rendering images

Point a CDN deployment at your images and start adding parameters. Every variant, cached at the edge, with nothing to pay for bandwidth.

Free to sign up. Nothing on Edge silently starts billing.