heic2jpg
heic2jpg is a fast HEIC to JPEG converter designed to resolve the compatibility gap between iPhone image files and common desktop workflows. Conversion runs in parallel across worker threads using pillow-heif for fast, in-process decoding.
🚀 Installation
- Install the
uvpackage manager with the official installer, or:
- macOS:
brew install uv - Windows:
winget install astral-sh.uv - Linux (Debian):
apt-get install uv
- Install the tool:
uv tool install heic2jpg
- Test the installation (if the command is not recognised try
uv tool update-shelland restart your terminal):
heic2jpg --version
Alternative (macOS only)
Install with Homebrew: brew install lucuma13/dit/heic2jpg
📖 Usage examples
Convert a single file:
heic2jpg path/to/photo.HEIC
Convert all files in directory:
heic2jpg path/to/photo/album
heic2jpg # current directory
Convert all files in current directory recursively, preserving metadata and timestamps:
heic2jpg -Rmt
Other options:
-q, --quality [1-100] Target quality (default: 30)
-m, --metadata Preserve EXIF metadata
-t, --times Preserve source file timestamps
-k, --keep Keep originals (default: delete after conversion)
-R, --recursive Recurse into subdirectories when a directory is given
-f, --force Overwrite existing .jpg outputs
📊 Performance
pillow-heif's C code releases the Python's GIL during HEIF decode and JPEG encode. The default ThreadPoolExecutor therefore gets full CPU parallelism with no per-worker process startup cost. That offers over 6x the speed of traditional ImageMagick workflows.
| Version | Backend | 100 files |
|---|---|---|
| heic2jpg 2.0.0 | pillow-heif | ~2.5s |
| heic2jpg 1.1.0 | ImageMagick | ~15.5s |
Note: absolute throughput will vary with CPU and disk speed.
Metadata
Release files for heic2jpg 2.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| heic2jpg-2.3.0.tar.gz | 35.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| heic2jpg-2.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 55.4 kB
Release files / heic2jpg-2.3.0.tar.gz
| Download URL | heic2jpg-2.3.0.tar.gz |
|---|---|
| Size | 35.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a941b5c74a22f1475667f877502e7e4738f93fa6364dc6d50723bcdfeb23d6dd
|
|
BLAKE2b-256 checksum How to use checksums |
6875aff96a4bc6d357678246bf59ea2ea931c00c5991af50c3fe193d657fbf32
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / heic2jpg-2.3.0-py3-none-any.whl
| Download URL | heic2jpg-2.3.0-py3-none-any.whl |
|---|---|
| Size | 20.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
829b3c76a9a0a9594401feb4d8afe26ce65a9f43338b4cba0635dfaf14ad86b6
|
|
BLAKE2b-256 checksum How to use checksums |
336e8f99e0a9097eae7d686fa27863a23b07e8a7ae164907114e83eb4fd64e69
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|