DEV Community

Serhii Kalyna
Serhii Kalyna

Posted on

How I built a free HEIC image converter with Rust + libvips

How I built a free HEIC image converter with Rust + libvips

I needed a simple tool to convert HEIC photos from iPhone to JPG and WebP.
Most online converters require signup or add watermarks, so I built my own.

Tech stack

  • Backend: Rust + Axum + libvips
  • Frontend: React + Vite + MUI
  • Hosting: VPS with Caddy reverse proxy

The hardest part — HEIC support

Getting HEIC to work was the biggest challenge. The package manager version
of libheif was too old and didn't support newer iPhone photo formats.
I had to build libheif 1.21.2 from source:

cmake -DCMAKE_BUILD_TYPE=Release \
      -DLIBHEIF_ENABLE_PLUGIN_LOADING=ON \
      -DWITH_DAV1D=ON \
      ..
make -j$(nproc)
sudo make install
Enter fullscreen mode Exit fullscreen mode

Why libvips?

libvips is significantly faster than ImageMagick for large files — it streams
pixels through a pipeline without loading the entire image into memory.
For batch conversion of 10 images this makes a real difference.

Privacy

All uploaded files are automatically deleted from the server within 6 hours.
No account required, no watermarks.

Result

Supports 20+ formats: HEIC, HEIF, WebP, PNG, JPG, AVIF, TIFF, BMP, GIF.
Batch convert up to 10 images at once.

Try it: convertifyapp.net

Source code coming soon on GitHub.

Top comments (0)