A standalone desktop app for converting images and PDFs — drag, drop, convert. No internet connection required, no file size limits, no subscriptions.
Status: Personal project / work in progress. Shared as-is for anyone who finds it useful. Issues and PRs may not be addressed. Fork freely.
- Input formats: AVIF, WEBP, PNG, JPG, BMP, TIFF, PDF
- Output formats: JPG or PNG (selectable per conversion)
- Batch conversion: queue multiple files and convert in one go
- PDF support: choose DPI, page range, and output dimensions
- Resize options: fit within bounds, crop to exact dimensions, or stretch
- Presets: save and reload your favourite settings
- Metadata control: strip or preserve EXIF data
- Fully offline: files never leave your computer
- Go to the Releases page of this repo and download
FileConverter.exe - Double-click to run — no installation needed
Windows SmartScreen warning: Because the exe is not code-signed, Windows may show a "Windows protected your PC" message. Click More info → Run anyway to proceed. The source code is fully visible in this repo.
No pre-built binary is provided. Mac unsigned binaries trigger a security block that requires non-trivial workarounds, so the cleanest option is to run from source:
git clone https://github.com/jcddc83/simple-file-converter.git
cd simple-file-converter
pip install -r requirements.txt
# Mac/Linux: install poppler via Homebrew or apt
brew install poppler # macOS
sudo apt install poppler-utils # Ubuntu/Debian
python converter.py- Add files — drag and drop onto the drop zone, or click Add Files...
- Choose settings — pick a preset or configure manually
- Click Convert — for a single file you'll be prompted for a save location; for multiple files you'll choose an output folder
| Setting | Description |
|---|---|
| Width / Height | Target dimensions in pixels. 0 = keep original. |
| Fit | max — fit within bounds, keep aspect ratio. crop — crop to exact size. scale — stretch to exact size. |
| Output Format | JPG or PNG. PNG preserves transparency; JPG composites on white. |
| Strip metadata | Remove EXIF data from the output file. |
| Quality | JPG compression quality, 1–100. Has no effect when output is PNG. |
| Setting | Description |
|---|---|
| Pixel Density (DPI) | Resolution of the output image. Default 300. Higher = larger file, more detail. |
| Width / Height | Optional output dimensions. 0 = determined by DPI. |
| Pages | all, a range (1-3), or specific pages (1,3,5). |
Presets are saved automatically to %APPDATA%\FileConverter\presets.json on Windows (or ~/.config/FileConverter/presets.json on Mac/Linux). They survive app updates and exe rebuilds — you won't lose them when you download a new version.
Built-in presets:
| Preset | Settings |
|---|---|
| Web Optimized | Quality 85, strip metadata |
| High Quality | Quality 95, preserve metadata |
| Thumbnail | 400×400 max, quality 80, strip metadata |
| PDF Standard | 300 DPI, all pages |
| PDF High Quality | 600 DPI, all pages |
| PDF Web | 150 DPI, all pages |
pip install -r requirements.txt
pip install pyinstaller
python -m PyInstaller --onefile --windowed --collect-all Pillow --collect-all pdf2image --name FileConverter converter.pyThe exe will be in the dist/ folder. Use python -m PyInstaller (not bare pyinstaller) to ensure PyInstaller runs in the same Python environment where your dependencies are installed.
To rebuild cleanly:
Remove-Item -Recurse -Force dist, build, FileConverter.spec
python -m PyInstaller --onefile --windowed --collect-all Pillow --collect-all pdf2image --name FileConverter converter.py-
Python 3.8+
-
PyQt6 — GUI
-
Pillow — image processing (AVIF support included in modern pip wheels)
-
pdf2image — PDF conversion
-
poppler — required by pdf2image; must be installed separately
- Windows: download from oschwartz10612/poppler-windows, extract, add
bin/to PATH - macOS:
brew install poppler - Linux:
sudo apt install poppler-utils
- Windows: download from oschwartz10612/poppler-windows, extract, add
"No module named 'PyQt6'" when running the exe
Use python -m PyInstaller instead of bare pyinstaller — this ensures the build uses the same environment where PyQt6 is installed.
PDF conversion fails
Poppler is not installed or not in PATH. Test with pdftoppm -h in a terminal — it should print help text.
AVIF files don't convert
Your Pillow installation may not include AVIF support. Try pip install pillow-avif-plugin and rebuild.
MIT — see LICENSE