How to make a PDF from photos
Every device you own already does this, without an app and without a website. Here is the built-in route on each one, and what each route quietly does to the picture.
Free toolImages to PDFPhotos or scans into one PDF, at full resolution. Any number of pictures on any page, dragged where you want them, and a JPG goes in as the bytes it already is.Open the PDF builderThe short answer
On an iPhone, put the images in the Files app, select them, press and hold, and choose Create PDF. On Windows, select them in File Explorer, right-click, choose Print, and pick Microsoft Print to PDF as the printer. On a Mac, select them in Finder, right-click, and choose the Quick Actions menu, then Create PDF. On Android, open one image, tap Print, and choose Save as PDF, which handles one picture at a time and no more.
All four are free, offline and lossless. The reason people still reach for a converter is control: none of the built-in routes let you set a margin, reorder the pages by dragging, or see what the file will weigh before it is written. That is the trade this page is about.
iPhone and iPad
The route through Files is the one that handles a set of photos in one go. Open the Photos app, select the pictures you want, tap the share button, and choose Save to Files. Then open Files, select the same images, press and hold the selection, and tap Create PDF. One PDF appears in the same folder, one photo per page, at full resolution.
There is an older trick that still works and is quicker for a single photo. Share the picture, choose Print, then pinch outwards on the print preview. iOS opens the preview as a PDF, and the share button in the corner will save it to Files.
The catch is the order. iOS builds the PDF in the order you tapped the photos, not the order they appear in the grid, so a block selection can come out shuffled in a way that is genuinely hard to predict. Tap them one at a time, in the order you want to read them.
Android
Android is the weakest of the four and it is worth saying so plainly. Open the image in Google Photos or Files, open the menu, tap Print, and choose Save as PDF from the printer list. That works, it is lossless, and it does exactly one image.
There is no built-in way to combine several photos into one PDF on stock Android. Samsung's My Files can do it on Galaxy devices, and Google Drive can scan documents to a multi-page PDF, but a plain Android phone with a folder of photographs has no offline route to a single document. That gap is why most of the search traffic for this job comes from Android and why most of the results are apps asking for storage permission. A browser tool is the offline answer on that platform, because the phone already has the one piece of software that can write a PDF locally.
Windows
Microsoft Print to PDF has shipped with Windows since Windows 10 and handles a whole selection. Select the images in File Explorer, right-click, and choose Print. In the Print Pictures dialog, set Printer to Microsoft Print to PDF, choose Full page photo in the layout list on the right, untick Fit picture to frame so nothing gets cropped, and press Print. Windows asks where to save the PDF.
That layout list is also how you get several photos onto one sheet: pick 2 x 4 wallet or Contact sheet instead of Full page photo. The arrangement is fixed, so you take the grid you are given, but for a page of passport-sized prints it is the fastest route on any platform.
Two things to watch. The page order follows the sort order of the folder window, so rename the files if you need a specific sequence. And Fit picture to frame is ticked by default, which crops the edges off any photo whose shape does not match the paper. It is the single most common complaint about this method and it is one checkbox.
Mac
Select the images in Finder, right-click, and choose Quick Actions then the Create PDF action. macOS combines them into one document in the order they are sorted in the window. It is the fastest route on any of the four platforms.
The print route gives you more control. Open the images in Preview, select all the thumbnails in the sidebar, choose File then Print, and use the PDF menu at the bottom left to Save as PDF. That path lets you set the paper size and the orientation, which Quick Actions does not. Its Images per page setting will put two, four, six or more on a sheet. Like the Windows layouts, the grid it uses is not adjustable.
In a browser
A modern browser can write a PDF without any help from a server, which means a web tool does not have to be an upload. Two routes exist. Any browser will print a page of images to PDF, which is how the Chrome measurement below was made. Or a tool built for the job can assemble the document properly, with page order, margins, rotation and a size readout, and still do all of it in the tab. The images to PDF tool here is the second kind, and it is the only route in this whole list that tells you what it did to the picture before you commit to the file. It is also the only one where the pages are yours to compose: two pictures on the first sheet and three on the second, each dragged where you want it. The built-in routes offer fixed grids that apply the same count to every page, and the four converters measured below will not put two on a page at all.
What each route does to the picture, measured
Every method below was given the identical three files on 28 August 2026: a 3024×2016 JPEG photo of 1,254,194 bytes, a 1700×2200 JPEG scan of 1,716,314 bytes, and a 1200×800 JPEG chart of 47,102 bytes. That is 3,017,610 bytes going in. Each resulting PDF was then opened and its image objects read directly, so the resolution and the encoder settings in the table are what the file itself declares rather than what the page claimed.
| Route | Output | Resolution | Re-encoded | Page |
|---|---|---|---|---|
| floi, in the browser | 3,019,331 B | Kept in full | No | Fits the image |
| Smallpdf | 3,019,032 B | Kept in full | No | A4, auto-rotated |
| Chrome, Print to PDF | 3,021,530 B | Kept in full | No | US Letter, forced |
| macOS print pipeline | 3,029,504 B | Kept in full | No | US Letter, forced |
| PDF24 | 2.88 MB, its own figure | Kept in full | No | A4 |
| iLovePDF | 452,825 B | Capped at 1240 px | Yes, JPEG quality 60 | A4 |
Five of the six are lossless and land within 10,472 bytes of each other, which is the difference between one implementation's page furniture and another's. The sixth is the result that ranks first for the search term. It is not a fault, exactly: quality 60 at 1240 pixels is a sensible size for a receipt going into an email, and the resulting file is six and a half times smaller. It is a fault that nothing on the page mentions it. The setting is written into the PDF it produces, as /DecodeParms << /Quality 60 >>, where only somebody who already suspected would go looking.
Smallpdf's own help page asks whether image quality is affected and answers no. That is true, and it is the only one of the six to make the claim at all. Its file is 299 bytes smaller than floi's on the same input because it drops the metadata block from each JPEG while floi keeps every byte of the original.
Method. Run on macOS 15 with Chrome 151 on 28 August 2026. The three commercial converters were driven in a normal browser session at their default settings, and the PDFs they returned were read byte by byte. Chrome's figure came from --print-to-pdf on a page holding the three images at full width. The macOS figure came from cupsfilter, the printing pipeline behind Save as PDF, run once per image, so its total is three single-page files rather than one document. PDF24's figure is the one its own interface reported, because its download could not be read the same way. iPhone, Android and Windows were not measured, because running the identical files through them needs the devices, and a number copied out of documentation is not a measurement. The steps above for those three are documented behaviour. The table is not about them.
How fast is it, and where does it stop?
The other question worth putting a number on. Eight camera-sized JPEGs totalling 6,623,468 bytes, read off a local disk into the browser tool, took 547 milliseconds from dropping them in to the finished size appearing on screen. The PDF was 6,627,520 bytes, so the eight pages of document structure cost 4,052 bytes between them, about 507 bytes each, and every image stream inside was exactly the length of the file it came from.
The largest run was 140 pages and a 51.5 MB PDF held in one Chrome tab on a MacBook, which stayed responsive throughout. Nothing was uploaded in any of it, so none of those times include a network. That is the real difference between a browser tool and a converter: a 60 MB set costs you the time to read your own disk, and an upload costs you the time to send 60 MB twice.
Where it does stop is memory, and only on the non-JPEG path. A JPEG never has to be decoded, so its size barely matters. A PNG does, and a very large one has to exist as raw pixels for a moment, which is why anything over 80 megapixels is refused rather than left to take the tab down with it.
Which route to actually use
| If you want | Use |
|---|---|
| One photo, right now, on a phone | The built-in print route. It is two taps and it loses nothing. |
| A folder in alphabetical order, on a desktop | Windows Print Pictures, or Finder's Create PDF on a Mac. |
| A specific page order, or margins, or numbered pages | A tool with a page strip you can drag. No built-in route does this. |
| Several photos on one sheet, in a fixed grid | Windows Print Pictures, or the Images per page setting in the macOS print dialog. |
| A different number of pictures on each sheet | A browser. Every built-in layout applies one count to the whole document, and none of the four converters measured above will put two on a page at all. |
| Several on one sheet, positioned where you want them | A browser. Nothing built in will let you move a picture once it is placed. |
| Several photos into one PDF on Android | A browser, because the platform has no offline route of its own. |
| To know the file size before you commit to it | A tool that shows you. Almost none of them do. |
| The pictures kept off other people's servers | Anything built in, or anything that runs in the tab. |