# Image formats support

At the moment, imgproxy supports only the most popular image formats:

| Format                      | Extension | Source                         | Result                    |
| ----------------------------|-----------|--------------------------------|---------------------------|
| PNG                         | `png`     | :white_check_mark:             | :white_check_mark:        |
| JPEG                        | `jpg`     | :white_check_mark:             | :white_check_mark:        |
| WebP                        | `webp`    | :white_check_mark:             | :white_check_mark:        |
| AVIF                        | `avif`    | :white_check_mark:             | :white_check_mark:        |
| GIF                         | `gif`     | :white_check_mark:             | :white_check_mark:        |
| ICO                         | `ico`     | :white_check_mark:             | :white_check_mark:        |
| SVG                         | `svg`     | :white_check_mark:             | [See notes](#svg-support) |
| HEIC                        | `heic`    | :white_check_mark:             | :x:                       |
| BMP                         | `bmp`     | :white_check_mark:             | :white_check_mark:        |
| TIFF                        | `tiff`    | :white_check_mark:             | :white_check_mark:        |
| PDF ((pro))                 | `pdf`     | :white_check_mark:             | :x:                       |
| MP4 (h264) ((pro))          | `mp4`     | [See notes](#video-thumbnails) | :white_check_mark:        |
| Other video formats ((pro)) |           | [See notes](#video-thumbnails) | :x:                       |

## SVG support

imgproxy supports SVG sources without limitations, but SVG results are not supported when the source image is not SVG.

When the source image is SVG and an SVG result is requested, imgproxy returns the source image without modifications.

imgproxy reads some amount of bytes to check if the source image is SVG. By default it reads a maximum of 32KB, but you can change this:

* `IMGPROXY_MAX_SVG_CHECK_BYTES`: the maximum number of bytes imgproxy will read to recognize SVG. If imgproxy can't recognize your SVG, try to increase this number. Default: `32768` (32KB)

## Animated images support

Since the processing of animated images is a pretty heavy process, only one frame is processed by default. You can increase the maximum of animation frames to process with the following variable:

* `IMGPROXY_MAX_ANIMATION_FRAMES`: the maximum of animated image frames to be processed. Default: `1`.

:::info
imgproxy summarizes all frames resolutions while the checking source image resolution.
:::

## Converting animated images to MP4 ((pro)) {#converting-animated-images-to-mp4}

Animated image results can be converted to MP4 by specifying the `mp4` extension.

Since MP4 requires use of a `<video>` tag instead of `<img>`, automatic conversion to MP4 is not provided.

## Video thumbnails ((pro)) {#video-thumbnails}

If you provide a video as a source, imgproxy takes a specific frame to create a thumbnail. To do this, imgproxy downloads only the amount of data required to reach the needed frame.

Since this still requires more data to be downloaded, video thumbnail generation is disabled by default and should be enabled with `IMGPROXY_ENABLE_VIDEO_THUMBNAILS` config option.

* `IMGPROXY_ENABLE_VIDEO_THUMBNAILS`: when true, enables video thumbnail generation. Default: `false`
* `IMGPROXY_VIDEO_THUMBNAIL_SECOND`: the timestamp of the frame (in seconds) that will be used for the thumbnail. Default: `1`.

---

## Navigation

- [Getting started](/3.20.x/getting_started)
- [imgproxy Pro](https://imgproxy.net#pro)
- [Installation](/3.20.x/installation)
- [Configuration](/3.20.x/category/configuration)
  - [Configuration options](/3.20.x/configuration/options)
  - [Loading environment variables](/3.20.x/configuration/loading_environment_variables)
- [Usage](/3.20.x/category/usage)
  - [Processing an image](/3.20.x/usage/processing)
  - [Getting an image info](/3.20.x/usage/getting_info)
  - [Signing a URL](/3.20.x/usage/signing_url)
  - [Encrypting a source URL](/3.20.x/usage/encrypting_source_url)
  - [Presets](/3.20.x/usage/presets)
- [Features](/3.20.x/category/features)
  - [Watermark](/3.20.x/features/watermark)
  - [Object detection](/3.20.x/features/object_detection)
  - [Autoquality](/3.20.x/features/autoquality)
  - [Best format](/3.20.x/features/best_format)
  - [Chained pipelines](/3.20.x/features/chained_pipelines)
- [Image sources](/3.20.x/category/image-sources)
  - [Serving local files](/3.20.x/image_sources/local_files)
  - [Serving files from Amazon S3](/3.20.x/image_sources/amazon_s3)
  - [Serving files from Google Cloud Storage](/3.20.x/image_sources/google_cloud_storage)
  - [Serving files from Azure Blob Storage](/3.20.x/image_sources/azure_blob_storage)
  - [Serving files from OpenStack Object Storage ("Swift")](/3.20.x/image_sources/openstack_swift)
- [Monitoring](/3.20.x/category/monitoring)
  - [New Relic](/3.20.x/monitoring/new_relic)
  - [Prometheus](/3.20.x/monitoring/prometheus)
  - [Datadog](/3.20.x/monitoring/datadog)
  - [OpenTelemetry](/3.20.x/monitoring/open_telemetry)
  - [Amazon CloudWatch](/3.20.x/monitoring/cloud_watch)
- [Image formats support](/3.20.x/image_formats_support)
- [About the processing pipeline](/3.20.x/about_processing_pipeline)
- [Health check](/3.20.x/healthcheck)
- [Memory usage tweaks](/3.20.x/memory_usage_tweaks)

## Other versions

- [4.0.x (current)](/image_formats_support)
- [latest (unstable)](/latest/image_formats_support)
- [3.31.x](/3.31.x/image_formats_support)
- [3.30.x](/3.30.x/image_formats_support)
- [3.29.x](/3.29.x/image_formats_support)
- [3.28.x](/3.28.x/image_formats_support)
- [3.27.x](/3.27.x/image_formats_support)
- [3.26.x](/3.26.x/image_formats_support)
- [3.25.x](/3.25.x/image_formats_support)
- [3.24.x](/3.24.x/image_formats_support)
- [3.23.x](/3.23.x/image_formats_support)
- [3.22.x](/3.22.x/image_formats_support)
- [3.21.x](/3.21.x/image_formats_support)
- [3.19.x](/3.19.x/image_formats_support)
