A native macOS app for batch converting HEIC images to JPEG — fast, private, and free.
- Drag & drop — drop files or entire folders, conversion starts automatically
- Batch conversion — processes multiple images concurrently
- JPEG quality control — slider to balance file size and image quality
- Custom save location — choose any output folder
- Completion notifications — get notified when a batch finishes
- 100% offline — no internet connection, no cloud upload, no tracking
- App Sandbox — sandboxed with user-selected file access only
Grab the latest .dmg from the Releases page.
Note: The app is ad-hoc signed (no Apple Developer account). On first launch macOS Gatekeeper will block it. To open it:
- Right-click
HEICConverter.app→ Open → Open again in the dialogOr via Terminal:
sudo xattr -rd com.apple.quarantine "/Applications/HEICConverter.app"
- macOS 15.0 (Sequoia) or later
- Xcode 26+
HEICConverter/
├── Models/
│ ├── ConversionError.swift
│ ├── ConversionItem.swift
│ ├── ConversionResult.swift
│ └── ConversionSettings.swift
├── Services/
│ ├── FileSystemService.swift # actor — file I/O
│ ├── ImageConversionService.swift # struct — HEIC → JPEG conversion
│ └── NotificationService.swift # user notifications
├── ViewModels/
│ ├── ConversionViewModel.swift
│ └── SettingsViewModel.swift
├── Views/
│ ├── HomeView.swift
│ ├── DropZoneView.swift
│ ├── ConversionListView.swift
│ ├── ConversionItemRow.swift
│ ├── FooterView.swift
│ └── Settings/
└── Util/
├── GlassStyle.swift
└── Extensions/
- Swift 6 / SwiftUI — 100% SwiftUI interface
- MVVM —
ConversionViewModelandSettingsViewModeldrive the UI - Swift Concurrency — structured task groups for parallel conversion
- Actor isolation —
FileSystemServiceactor; project-wide@MainActordefault isolation viaSWIFT_DEFAULT_ACTOR_ISOLATION
MIT
Built by Anton Paliakou

