You’ve got a cover letter, a CV, and two certificates as separate PDFs, and the application form wants a single file. The quickest-looking option is a “merge PDF” website — which means uploading your personal documents to a server you don’t control. For anything with your name, address, or signature on it, that’s not worth it.
WSL merges PDFs locally, for free and fully offline. pdfunite joins whole files in seconds, and qpdf steps in when you want to pull specific page ranges from each one. Nothing gets uploaded.
No WSL yet? See the WSL install guide.
Install the tools
pdfunite comes from poppler-utils; qpdf is its own package:
sudo apt update && sudo apt install -y poppler-utils qpdf
Quick check:
pdfunite -v
qpdf --version
Merge with pdfunite (the simple way)
List the input PDFs in order, then the output file last:
pdfunite cover.pdf cv.pdf certs.pdf application.pdf
That joins the first three into application.pdf. The order on the command line is the order of the pages — cover.pdf first, certs.pdf last.
Merge every PDF in a folder
To combine all PDFs in the current folder, mind the ordering — a glob sorts alphabetically:
pdfunite *.pdf merged.pdf
Because *.pdf would also try to include merged.pdf once it exists, write the output somewhere else or use a name that sorts safely. A cleaner approach is a subfolder:
mkdir -p out
pdfunite *.pdf out/merged.pdf
Check the order a glob will use first:
ls -1 *.pdf
If the sequence is wrong, zero-pad the filenames (01-intro.pdf, 02-body.pdf, 10-appendix.pdf) so alphabetical order matches page order.
Merge specific pages with qpdf
When you don’t want whole files — say pages 1–3 of one PDF and just page 2 of another — qpdf handles it:
qpdf --empty --pages first.pdf 1-3 second.pdf 2 -- combined.pdf
--emptystarts from a blank document.- Each
file.pdf rangepair adds those pages. --marks the end of the page list, then the output filename.
To merge two whole files with qpdf instead of pdfunite:
qpdf --empty --pages a.pdf b.pdf -- merged.pdf
Merge commands at a glance
| pdfunite a.pdf b.pdf out.pdf | Join whole files, simplest option |
|---|---|
| pdfunite *.pdf out/merged.pdf | Merge all PDFs in a folder |
| qpdf --empty --pages a.pdf b.pdf -- out.pdf | Merge whole files with qpdf |
| qpdf --empty --pages a.pdf 1-3 -- out.pdf | Merge only selected page ranges |
Getting the order right every time
Page order trips people up more than anything else here. Two habits fix it for good:
- Name files so they sort correctly: zero-pad numbers and the alphabetical glob order matches what you want.
- List explicitly when in doubt: typing the filenames in sequence removes all ambiguity.
Wrapping up
Merging PDFs on Windows is a one-liner: pdfunite a.pdf b.pdf merged.pdf for whole files, or qpdf --empty --pages ... -- merged.pdf when you need specific page ranges. The only thing to watch is order, which follows the file list — so name files to sort cleanly or list them explicitly.
It’s free, lossless, and runs entirely in WSL, so your documents stay offline. To break a PDF back apart, see split a PDF into separate pages.