PDFImageMerger
Linux WindowsDrop your images. Get one PDF.
Merging a folder of scans or photos into a single PDF shouldn't require a dozen browser tabs, an upload to some unknown server, or a heavyweight office suite. It's a small, well-defined job — it deserves a small, well-defined tool.
PDFImageMerger does exactly that, entirely on your machine. Pick a folder, select files, or drag them straight into the window — even whole folders at once. Reorder the list by drag & drop, check each image's preview, dimensions and size, then build.
Page format is your call: A4, Letter, Legal, A5 in portrait or landscape, or "fit to image" for no fixed page at all — every image becomes a page of its own size. Resolution and compression level are what actually decide the final file size, and PDFImageMerger tells you that size before you commit, by compressing a real sample with your chosen settings.
For the moments you don't want any re-encoding, the "don't modify images" flag switches to a byte-for-byte lossless path: JPEGs are embedded exactly as they are on disk, everything else goes through lossless compression. Bigger file, zero quality lost — your choice, made explicit.
Built to handle real batches too: hundreds of images are merged in chunks rather than held entirely in memory, so a run of 800 photos stays around half a gigabyte of RAM instead of the tens of gigabytes a naive approach would need. Open source. MIT licensed. Built in the AurigaLAB.
Features
Everything you need. Nothing in the way.
Drop files or entire folders straight into the window. Reorder the list by drag & drop, with live previews, dimensions and file size for each image.
A4, Letter, Legal, A5 — or "fit to image", with no fixed page: every image becomes a page of its own size.
Resolution (72–600 DPI) and compression level, with the final PDF size estimated by actually compressing a sample — not a guess.
"Don't modify images" embeds JPEGs byte-for-byte unchanged and everything else as lossless Flate. Zero quality loss, guaranteed.
PDFs are built in chunks instead of held entirely in RAM — hundreds of images stay within a few hundred MB of peak memory.
Linux AppImage and Windows portable build from the same codebase — pywebview + Franken UI, no browser and no internet connection required.
Free and open source. Linux and Windows.
The Linux AppImage and Windows portable build need nothing pre-installed. Running from source instead needs Python and a WebView backend:
Any platform
pip install -r requirements.txt
Windows and macOS get their native WebView backend as a dependency automatically.
Linux has no default backend, so the same command also pulls in Qt — pure pip, no sudo required.
Changelog
What's changed across versions.
Localization & fixes
- — Now speaks English, Italian, Spanish, French, Chinese (Simplified) and Hindi — follows the OS language on first launch, or pick one in Preferences
- — Fixed: language and theme preferences did not survive an app restart (now saved to a JSON config file instead of localStorage)
- — Fixed: a "ModuleNotFoundError: No module named 'gi'" traceback appeared on every Linux launch
- — Fixed: the "Don't modify images" toggle never changed color when turned on
First release
- — Add images by folder, individual files, or drag & drop — even entire folders
- — Reorderable file list with drag & drop, previews, dimensions and file size
- — Page format: A4 / Letter / Legal / A5, or "fit to image" with no fixed page
- — Portrait/landscape orientation for fixed page formats
- — Resolution (72–600 DPI) and compression level with a real size estimate before building
- — "Don't modify images" mode: byte-identical JPEGs embedded losslessly, zero quality loss
- — Large batches built in chunks to keep memory use low (~550MB peak for 800 A4 images)
- — Linux AppImage and Windows portable build
// Built at AurigaLAB
Source on GitHub