> ## Documentation Index
> Fetch the complete documentation index at: https://docs.convertly.sh/llms.txt
> Use this file to discover all available pages before exploring further.

# Format & delivery

> AVIF/WebP/JPEG negotiation, content-aware quality, client hints, metadata stripping, and Save-Data awareness.

Convertly picks the best encode format and quality per request while respecting browser capabilities and network conditions.

<Frame caption="`format=auto` — negotiated to WebP or AVIF per Accept header.">
  <img src="https://cdn.convertly.sh/cvly/o/convertly-site/docs/cdn-transforms/examples/format-auto.webp?v=docs-20260717&format=auto&q=auto:eco" alt="Photo exported with format=auto" className="w-full rounded-xl" />
</Frame>

<Frame caption="`q=auto` — content-aware quality tuned to the source.">
  <img src="https://cdn.convertly.sh/cvly/o/convertly-site/docs/cdn-transforms/examples/quality-auto.webp?v=docs-20260717&format=auto&q=auto:eco" alt="Photo encoded with q=auto" className="w-full rounded-xl" />
</Frame>

<Frame caption="Fixed width (left) vs Client Hints `?ch=Width,Dpr` (right).">
  <img src="https://cdn.convertly.sh/cvly/o/convertly-site/docs/cdn-transforms/examples/client-hints-before-after.webp?v=docs-20260717&format=auto&q=auto:eco" alt="Client hints sizing compared to explicit width" className="w-full rounded-xl" />
</Frame>

## Format negotiation

`format=auto` (the SDK default) picks the best format from the browser's `Accept` header:

* **AVIF** when `image/avif` is advertised
* **WebP** when `image/webp` is advertised
* **JPEG** fallback for older browsers

```html theme={"system"}
<img src="https://cdn.convertly.sh/assets-acme/{fileIdOrSlug}?w=1200&format=auto" alt="…" />
```

The CDN sets `Vary: Accept` so edge caches stay correct — at most two variants per URL (modern + JPEG).

Force a specific format with `format=webp`, `format=avif`, `format=jpeg`, or `format=png`. For SVG tracing and SVG source handling, see [Vector & SVG](/docs/image-cdn/transforms/vector-svg). For forced downloads, see [Download](/docs/image-cdn/transforms/format-download).

## Progressive JPEG

When output format is JPEG (explicit `format=jpeg` or negotiated from `format=auto`), Convertly uses **progressive** encoding by default. The full image appears quickly at low quality and sharpens as more bytes arrive — unlike baseline JPEG, which paints top-to-bottom.

<Frame caption="Progressive (default) vs baseline (`jpgProgressive=0`) loading behaviour.">
  <img src="https://cdn.convertly.sh/cvly/o/convertly-site/docs/cdn-transforms/examples/progressive-jpeg-demo.webp?v=docs-20260717&format=auto&q=auto:eco" alt="Progressive vs baseline JPEG loading comparison" className="w-full rounded-xl" />
</Frame>

```
?w=1200&format=jpeg
?w=1200&format=jpeg&jpgProgressive=0
```

| Param                                                    | Value                          | Default                 |
| -------------------------------------------------------- | ------------------------------ | ----------------------- |
| `jpgProgressive` (`jpeg-progressive`, `jpg-progressive`) | `1` / `true` or `0` / `false`. | `1` when output is JPEG |

The final decoded image is identical — only the byte stream order changes.

## Content-aware quality

Adaptive quality analyzes the source on the first cache miss and picks a quality band:

| Image type                | Auto quality |
| ------------------------- | ------------ |
| Flat graphic / logo       | 92           |
| Illustration / screenshot | 88           |
| Mixed content             | 82           |
| Photo                     | 76           |
| Very high-detail photo    | 72           |

Choose the delivery intent that fits the surface:

| Value                         | Behavior                                                  | Good for                                             |
| ----------------------------- | --------------------------------------------------------- | ---------------------------------------------------- |
| `q=auto:eco`                  | Content-aware target reduced by 12 quality points.        | Image-heavy marketing pages, feeds, and thumbnails.  |
| `q=auto` or `q=auto:balanced` | Content-aware quality with no adjustment.                 | General-purpose delivery.                            |
| `q=auto:best`                 | Content-aware target increased by 6 points, capped at 95. | Product detail, portfolio, and inspection views.     |
| `q=20`-`100`                  | Fixed encoder target.                                     | Controlled workflows that require an explicit value. |

Framework image adapters default to `q=auto`. Raw CDN URLs without `q` retain the backward-compatible `q=80` default. All adaptive modes work inside [presets](/docs/image-cdn/presets-and-signing#named-presets) too.

Actual byte reduction varies by source complexity, requested dimensions, and negotiated format. Adaptive modes express delivery intent rather than promising a fixed percentage reduction.

## Client hints

Pass `ch=Width,Dpr` to opt into browser Client Hints for sizing. When `w` is omitted and `ch=Width` is set, the CDN uses `Sec-CH-Width` (CSS pixels) multiplied by `dpr`.

```
?ch=Width,Dpr&fit=cover&h=600
```

For setup (Accept-CH headers, Next.js middleware, fallbacks), see the [Client Hints guide](/guides/client-hints).

## Metadata stripping

`strip=all` (or `strip=1`) removes EXIF/XMP/ICC from output. `strip=icc` keeps colour profile metadata but drops camera tags.

<Frame caption="`?strip=all` — visually identical; metadata removed from the JPEG container.">
  <img src="https://cdn.convertly.sh/cvly/o/convertly-site/docs/cdn-transforms/examples/strip-metadata.webp?v=docs-20260717&format=auto&q=auto:eco" alt="Portrait with metadata stripped" className="w-full rounded-xl" />
</Frame>

## PDF pages and GIF frames

```
?page=1&w=1200&pdfDensity=200
?frame=3&w=800
```

| Param        | Purpose                                        |
| ------------ | ---------------------------------------------- |
| `page`       | PDF page number (1-based).                     |
| `pdfDensity` | Rasterization DPI (`72`–`600`, default `150`). |
| `frame`      | GIF frame index (0-based).                     |

## Network-aware quality

When the browser sends `Save-Data: on`, Convertly drops encode quality by 15 points (floored at 40). The route sets `Vary: Save-Data` and caches both variants independently — no client-side changes required.

See [Transforms overview → caching](/docs/image-cdn/transforms#how-caching-works) for cache behaviour with `Accept` and `Save-Data`.
