PDF Page Organizer

Reorder, rotate, duplicate and delete PDF pages with live previews, then download the rebuilt PDF.

Drag & drop a PDF here, or click to browse

No uploads. Your files stay on your device.

No uploads. Your files stay on your device.

Free forever, no sign-up, no cookies. Buy me a coffee

How it works

Drop a PDF and every page shows up as a card you can reorder, rotate, duplicate or delete. Drag a card, use the arrow buttons, or type a range like 1-3, 5 (or an order like 3,1,2) and press Apply. When the running order looks right, download a brand-new PDF built from exactly those pages.

Everything happens inside your browser: the file is read with the FileReader API, page previews are drawn with PDF.js on a canvas, and the new document is assembled with pdf-lib. Your PDF is never uploaded to a server, so contracts, invoices and scans stay private. Rotation is stored as page metadata, so no page is ever re-rendered or re-compressed and text stays selectable.

Frequently asked questions

How do I rearrange the pages in a PDF for free?

Drop your PDF and every page appears as a card. Drag a card to a new spot, use the arrow buttons, or type an order such as "3,1,2" in the page order box and press Apply. Then click "Download organized PDF" to get a new file with the pages in exactly that order — no account and no upload needed.

Can I delete or duplicate individual pages?

Yes. The ✕ button on a card removes that page from the output, and the ↺ button puts it back, so nothing is lost by accident. To keep only a selection, type a range like "1-3, 5" and press Apply. Repeating a number — for example "1,1,2" — duplicates that page in the new document.

Is my PDF uploaded to a server?

Never. The file is read with the FileReader API, previews are drawn with PDF.js on a canvas, and the new document is assembled with pdf-lib — all inside your browser tab. Nothing is sent anywhere, so confidential contracts, invoices and scans stay on your device. Rotation is stored as page metadata, so pages are not re-rendered and text stays selectable.

Report a bug