# Convert PNG to JPEG (convert_png_to_jpeg)

Converts PNG to JPEG when no transparency. The convert_png_to_jpeg filter: what it does, its risks and the Apache, nginx and IIS directives.

Canonical URL: https://modpagespeed.com/docs/filters/convert_png_to_jpeg/

- Category: Image
- CoreFilters: Yes
- OptimizeForBandwidth: Yes
- Risk: Generally safe

**`convert_png_to_jpeg`** converts PNG images with no alpha channel (fully opaque) to JPEG, which is typically much smaller for photographic content.

## How it works

`convert_png_to_jpeg` turns a PNG into a JPEG only when the module's image analysis says the file is photographic, meaning not sensitive to compression noise, and it has no transparent pixels. The analysis is what protects flat graphics: a logo or a diagram analyzes as non-photographic and keeps its PNG. On a photographic PNG without transparency the filter authorizes lossy encoding, and the format that ships depends on the browser: when the request prefers WebP and `convert_jpeg_to_webp` is on, the file becomes WebP rather than JPEG; otherwise it is re-encoded as JPEG at the JPEG quality setting. A PNG with transparency is never made a JPEG. The converted file is kept only when it is smaller (`ImageLimitOptimizedPercent`), and a PNG carrying a C2PA content-credentials manifest is left untouched so its provenance chain survives. The filter runs in CoreFilters through `rewrite_images`.

## When to use it

- In CoreFilters, the default RewriteLevel: it runs unless you disable it.
- Part of OptimizeForBandwidth, the level that optimizes resources without changing their URLs.
- Also switched on by [`recompress_images`](https://modpagespeed.com/docs/filters/recompress_images/) and [`rewrite_images`](https://modpagespeed.com/docs/filters/rewrite_images/).
- Risk rating on these docs: **Generally safe**.

## Risks

- `convert_png_to_jpeg` drops the alpha channel on opaque PNGs. mod_pagespeed checks for alpha before converting, but semi-transparent pixels at the boundary may cause subtle edge artifacts.

## Configuration

Enable it in the module configuration, at server, virtual-host or location scope:

**Apache**

```apache
ModPagespeedEnableFilters convert_png_to_jpeg
```

**nginx**

```nginx
pagespeed EnableFilters convert_png_to_jpeg;
```

**IIS (pagespeed.config)**

```text
pagespeed EnableFilters convert_png_to_jpeg
```

It is on by default under CoreFilters; to turn it off:

```text
ModPagespeedDisableFilters convert_png_to_jpeg   # Apache
pagespeed DisableFilters convert_png_to_jpeg;   # nginx
pagespeed DisableFilters convert_png_to_jpeg   # IIS
```

| Parameter                          | Default | Description                                        |
| ---------------------------------- | ------- | -------------------------------------------------- |
| `ProgressiveJpegMinBytes`          | 10240   | Minimum JPEG size before converting to progressive |
| `WebpRecompressionQuality`         | 80      | Quality for lossy WebP conversion                  |
| `WebpAnimatedRecompressionQuality` | 70      | Quality for animated WebP conversion               |

Scoping, `ForbidFilters` and the thresholds filters read: [Choosing filters](https://modpagespeed.com/docs/filter-selection/).

## Frequently asked questions

**What does the convert_png_to_jpeg filter do?**

`convert_png_to_jpeg` converts PNG images with no alpha channel (fully opaque) to JPEG, which is typically much smaller for photographic content.

**Is convert_png_to_jpeg enabled by default?**

Yes. `convert_png_to_jpeg` is in CoreFilters, the default RewriteLevel, so it runs unless you turn it off with `DisableFilters`. It is also part of the OptimizeForBandwidth level.

**How do I turn off convert_png_to_jpeg?**

Add `ModPagespeedDisableFilters convert_png_to_jpeg` on Apache or `pagespeed DisableFilters convert_png_to_jpeg;` on nginx. On IIS, add `pagespeed DisableFilters convert_png_to_jpeg` to pagespeed.config.

## Related filters

- [`convert_gif_to_png`](https://modpagespeed.com/docs/filters/convert_gif_to_png/): Convert GIF to PNG
- [`convert_jpeg_to_progressive`](https://modpagespeed.com/docs/filters/convert_jpeg_to_progressive/): Progressive JPEG
- [`convert_jpeg_to_webp`](https://modpagespeed.com/docs/filters/convert_jpeg_to_webp/): Convert JPEG to WebP
- [`convert_to_webp_animated`](https://modpagespeed.com/docs/filters/convert_to_webp_animated/): Animated WebP
- [`convert_to_webp_lossless`](https://modpagespeed.com/docs/filters/convert_to_webp_lossless/): Lossless WebP
- [`convert_jpeg_to_avif`](https://modpagespeed.com/docs/filters/convert_jpeg_to_avif/): Convert JPEG to AVIF
- [`convert_to_avif_animated`](https://modpagespeed.com/docs/filters/convert_to_avif_animated/): Animated AVIF
- [`convert_to_avif_lossless`](https://modpagespeed.com/docs/filters/convert_to_avif_lossless/): Lossless AVIF

This page is drawn from the [convert_png_to_jpeg entry on Image filters](https://modpagespeed.com/docs/image-filters/#convert_png_to_jpeg). Every filter in one table: [PageSpeed filters](https://modpagespeed.com/docs/filters/).
