imgproxy

imgproxy: Resize and Convert Images on Demand

imgproxy is a standalone HTTP server that resizes, transforms, and converts images when requested. It suits teams that want to move image processing out of their application and serve optimized images through a URL-based API.

Stars
11.1k
Forks
777
Stars, last 10 days
+16

Our take

Health score

62/100

How it is scored
Activity
74
Community
63
Issues
61
Pull requests
50

+16 stars in the last 10 days

  • Releases more often than 79% of the projects we track
  • More contributors than 77% of the projects we track

Overview

imgproxy is a standalone Go HTTP server for processing images on demand. An application supplies a source image URL and processing options in a request URL; imgproxy fetches and transforms the image, then returns the result. This avoids maintaining image-processing code in each application or preparing every image variant in advance.

It is aimed at teams serving images through websites or services that need flexible sizes and formats. Its emphasis on signed URLs and configurable restrictions can also help operators control access to image sources and processing resources.

Key Features

  • Resizes, crops, rotates, and applies filters or watermarks to images.
  • Supports common formats including JPEG, PNG, GIF, WebP, AVIF, and JPEG XL.
  • Optimizes output by stripping metadata and color profiles, with PNG quantization.
  • Uses libvips for image processing.
  • Accepts processing instructions through HTTP URLs, suitable for use in HTML, CSS, or JavaScript.
  • Supports signed URLs, source restrictions, file-size limits, and processing-option limits.
  • Can check image type and dimensions to help limit resource use from unwanted or oversized inputs.

Use Cases

  • Website teams can generate responsive image sizes on demand instead of storing a pre-rendered copy for every layout.
  • Application developers can offload image transformations from application code to a separate service.
  • Platform operators can place an image-processing endpoint behind a CDN or reverse proxy and control requests with signed URLs and access restrictions.
  • Services that need to deliver modern image formats can convert supported source images as part of the request workflow.

Getting Started

Run with Docker:

docker run -p 8080:8080 -it ghcr.io/imgproxy/imgproxy:latest

See the README and Getting Started guide for setup and request details.

Alternatives

  • ImageFlow: ImageFlow combines image conversion and delivery with a management interface and local or S3-compatible storage, while imgproxy focuses on URL-driven image processing.
ProjectLanguageLicenseStarsStatus
imgproxyGoApache-2.011.1kNot checked yet
ImageFlowTypeScriptMIT611Quiet

Considerations

  • Image processing is exposed as an HTTP service, so production deployments should consider where it sits in the request path and how access is controlled. The project recommends using a CDN, load balancer, or reverse proxy for HTTPS termination.
  • Secure operation depends in part on configuration, such as signing URLs and restricting allowed sources, file sizes, and processing options.
  • The OSS feature set differs from imgproxy Pro. Some advanced capabilities, including object detection, advanced smart cropping, and previews for video or documents, are listed as Pro features.
  • The README recommends Docker as the simplest way to run the server and identifies libvips as its image-processing library.

Found this useful?

Share it with someone who would like imgproxy.

Comparisons