A fast, native macOS app for batch file conversion β no dependencies, no bloat.
Drag in hundreds of images, videos, audio files, or PDFs. Pick a preset. Convert them all β in parallel, with RAM kept low by streaming. 100% Apple frameworks (Core Image, AVFoundation), zero external tools.
- Native & dependency-free β Core Image + AVFoundation do the work. No ImageMagick, FFmpeg, or LibreOffice to install. It just runs.
- Batch-first β drop hundreds of files, convert them in bounded parallel waves that respect your concurrency setting.
- Memory-conscious β streaming conversion keeps RAM flat even on large video.
- Watched folders β assign a preset to a folder; anything dropped in is converted automatically (FSEvents).
- Presets & history β reusable transformation pipelines, full processing history, JSON-backed (no Core Data).
| Kind | Read | Write | Operations |
|---|---|---|---|
| Image | JPEG, PNG, TIFF, HEIC, WebP, BMP, GIF, TGA, ICO | JPEG, PNG, TIFF, HEIC⦠| convert · resize (4 modes) · quality · filters |
| Video | MP4, MOV, M4V, AVI, MKV, WebM | MP4, MOV, M4V (H.264) | convert Β· resolution Β· bitrate/quality |
| Audio | MP3, WAV, M4A, AAC, FLAC, ALAC, AIFF | MP3, M4A, WAV, AAC, FLAC | convert Β· bitrate Β· sample rate Β· channels |
| Documents | PDF, TXT, CSV, HTML, RTF | images (JPEG/PNG/TIFF), text | PDF β images Β· basic text conversions |
Grab the latest .dmg from the Releases page, open it, and drag Forge to Applications.
Unsigned build: on first launch, right-click the app β Open to bypass Gatekeeper.
git clone https://github.com/thousandflowers/Forge.git
cd Forge
swift build -c release
.build/release/ForgeRequires macOS 13+ (Ventura) and Swift 5.9+.
Batch convert
- Launch Forge, drag & drop files into the window.
- Pick a preset (e.g. Instagram Post), choose destination (Overwrite / Copy to / Move to).
- Click Start Processing.
Watched folder
- Open the Folders tab, add a folder, assign it a preset.
- Anything dropped in that folder is converted automatically.
Custom preset
- Presets tab β +.
- Set target format, resize, quality (1β100), optional filter. Save β it's now usable in batch and watched-folder modes.
SwiftUI βββΆ ProcessingCoordinator βββΆ ProcessorRegistry βββΆ Image / Video / Audio / Doc processors
β (Core Image Β· AVFoundation Β· PDFKit)
bounded TaskGroup MonitoredFolderWatcher (FSEvents)
(maxConcurrentNative) PersistenceManager (JSON in App Support)
- ProcessorRegistry picks the right processor for each file type.
- ProcessingCoordinator runs conversions, tracks active tasks for cancellation.
- RulePreset β serializable transformation pipelines.
- PersistenceManager β JSON storage for presets, history, monitored folders.
swift test # run the unit suite
bash Scripts/generate_samples.sh # generate sample test files- Native image / video / audio / PDF conversion
- Bounded-concurrency batch processing with live progress
- Presets, processing history, JSON persistence
- Watched-folder UI polish + completion notifications
- Preset import/export
- CLI (
forge) + Shortcuts integration
PRs welcome. Fork β feature branch β tests green (swift test) β PR. Follow the Swift API Design Guidelines, keep memory bounded (stream, don't fully load), use async/await + actors.
MIT β see LICENSE.
Built with Core Image, AVFoundation, and SwiftUI. Inspired by the original Shift β this is a native, from-scratch rebuild.