Local PDF Toolkit

Merge, split, reorder, rotate, and compress PDFs entirely in this browser tab. Nothing uploaded.

ZERO UPLOAD · ALL LOCAL

PRIVACY GUARANTEED Your files never leave this tab.

No files selected

    PRIVACY GUARANTEED Your file never leaves this tab.

    No file selected

      PRIVACY GUARANTEED Your file never leaves this tab.

      No file selected

        PRIVACY GUARANTEED Your file never leaves this tab.

        No file selected

        Target size

        Filename
        -
        File size
        -
        Total number of pages
        -
        Filename
        -
        File size
        -
        Total number of pages
        -
        Filename
        -
        File size
        -
        Total number of pages
        -
        Filename
        -
        Original size
        -
        File size
        -
        Reduced by
        -
        Total number of pages
        -
        1. Choose a mode: Merge, Split, Rotate & Reorder, or Compress.
        2. Load your PDF or PDFs by dropping them into the dropzone or opening the file picker (multiple files for Merge, one file for the other three modes).
        3. Set that mode's options: reorder the file list before merging, type the page ranges to extract, drag, rotate, or delete pages, or choose a target size.
        4. Run the mode's action button: Merge PDFs, Extract pages, Save changes, or Compress PDF.
        5. Check the result panel for the new page count, the per-range list, or the size comparison.
        6. Download the result, or click Start over to clear the tab and load another file.

        One folder of scans, one file to send

        You signed a lease page by page, scanned each sheet separately, and now four PDFs sit in your downloads folder in no particular order. Before you can email the landlord, you need one file, in the right sequence, with a single filename that makes sense in a thread full of attachments. That reordering-then-combining step is exactly what Local PDF Toolkit exists for, and it runs entirely inside the tab you're reading this in.

        The same problem shows up in reverse. A colleague sends a ninety-page vendor contract when you only need the pricing appendix on pages 74 through 81. Extracting those eight pages by hand usually means opening a desktop PDF editor you don't have installed, or trusting a random web converter with a document that has your company's terms in it. This tool covers both directions, assembling scattered pages into one document and pulling a slice out of a longer one, without a server ever seeing the file.

        Merging pages in the order you choose

        Merge accepts two or more PDFs at once, whether you drop them onto the dropzone or select them through the file picker. Each file lands in a list with its filename and page count, and you drag the rows into the exact sequence you want the combined document to follow. Because the reordering happens before anything gets written, you can rearrange a five-file bundle as many times as you like without waiting on a single re-encode.

        PDF toolkit Merge mode combining a 3-page and a 2-page PDF into one 5-page file
        Merging a 3-page and a 2-page PDF in the listed order produces one 5-page file of 5.9 KB. The arrows beside each file change the order before you merge.

        Why page copies beat printing to PDF

        Clicking Merge PDFs runs pdf-lib's page-copy routine against every file in that list order, one after another, and hands back a single PDF with a running page count so you can confirm nothing dropped out.1 Copying a page this way preserves its original content stream rather than rasterizing it into an image, so text stays selectable and vector graphics stay sharp in the merged file.2 That's a meaningfully different operation from printing every page to a virtual PDF printer, which flattens whatever it touches.

        Splitting a long document into the ranges you need

        Split works on a single loaded PDF and a plain-text field where you type the pages you want, using a syntax like 1-5, 8, 10-12. As you type, the tool checks each entry against the document's actual page count and shows a live list of what it's about to produce, catching a typo like a range that starts after it ends before you ever click Extract pages.

        Each range becomes its own downloadable file rather than one shared archive. A shared ZIP would need its own compression step inside the worker, and most people extracting a single exhibit or chapter just want that one PDF, not an archive to open first. Request three ranges from a ninety-page contract and you get three separate downloads, each named after the original file and the page range it contains, ready to attach individually wherever they need to go.

        Fixing page order, orientation, and stray pages

        Rotate & Reorder is built for the PDF that's almost right: a scanner fed one sheet upside down, someone stapled the pages out of order before scanning, or a cover sheet you don't need got swept in with everything else. Loading a file here renders every page as a thumbnail using pdfjs-dist, so you're looking at the actual content, not a generic page icon, while you decide what needs to change.3

        Dragging, rotating, and deleting pages

        Drag a thumbnail to a new position, click its rotate control to step through 90-degree turns, or click delete to drop a page entirely, and the grid updates immediately so you can see the new sequence before committing to it. Saving sends that final order, along with each page's rotation and any deletions, through pdf-lib's page-copy pipeline in a background worker, and the rebuilt PDF downloads with your changes applied and nothing else touched.1

        Compressing without a fake quality slider

        Most PDF bloat comes from embedded photos and scanned pages, not from the text layer, so Compress targets those images directly instead of offering a generic quality percentage that doesn't map to anything concrete. The tool walks the PDF's internal object list for images encoded with DCTDecode, the JPEG compression PDF viewers already expect, decodes each one once, and keeps that decoded bitmap as the untouched source for every attempt that follows.4

        Working through the compression ladder

        From there it works through a fixed ladder of scale and quality combinations, redrawing each image through an OffscreenCanvas before re-encoding it, from a light pass at full size down to a more aggressive redraw at reduced dimensions, checking the resulting file size after each step and stopping the moment one fits your target.5 A live counter tracks progress through that ladder, so a large, image-heavy PDF doesn't leave you staring at a frozen button. If every step still lands above your target, usually because the PDF is mostly text with little image weight left to reclaim, the tool returns the smallest file the ladder produced and says so plainly instead of quietly flattening your pages into a blurry image to force a smaller number.

        Before running the ladder at all, Compress checks whether your file already fits the target you picked from the four presets, 500 KB, 2 MB, 5 MB, or 10 MB, or a custom value you type in kilobytes or megabytes. When the original is already smaller than that number, the tool skips the redraw step entirely and hands back the same bytes you loaded, since there's nothing to gain from re-encoding a file that already meets the goal.

        Every operation happens on this device

        None of these four modes ever send your file anywhere. Merge, Split, Rotate & Reorder, and Compress all run pdf-lib's structural work inside a dedicated Web Worker, so the heavy lifting for a large scanned contract doesn't freeze the tab while you wait, and the bytes you loaded stay put.6

        The worker exists only to keep the interface responsive; it has no outbound network request built into its job. Thumbnails for Rotate & Reorder render on the main thread with pdfjs-dist instead, because drawing a page preview is cheap enough not to need a worker, and both paths read the same in-memory bytes you dropped in rather than a copy fetched from somewhere else.3 Close the tab when you're done, and nothing about the document you worked on persists anywhere outside your own downloads folder.

        Sources
        1. 1.

          "pdf-lib," pdf-lib.js.org, accessed September 2026. https://pdf-lib.js.org/

        2. 2.

          Peter Wyatt, PDF Association, "Parsing PDF's Dialects," pdfa.org, October 2023. https://pdfa.org/parsing-pdfs-dialects/

        3. 3.

          Mozilla, "pdf.js," GitHub, accessed September 2026. https://github.com/mozilla/pdf.js

        4. 4.

          ITU-T, "T.81: Information Technology - Digital Compression and Coding of Continuous-Tone Still Images," itu.int, accessed September 2026. https://www.itu.int/rec/T-REC-T.81/en

        5. 5.

          Tim Dresser, "OffscreenCanvas: Speed Up Your Canvas Operations with a Web Worker," web.dev, December 2023. https://web.dev/articles/offscreen-canvas

        6. 6.

          WHATWG, "Web Workers," HTML Living Standard, html.spec.whatwg.org, accessed September 2026. https://html.spec.whatwg.org/multipage/workers.html

        FAQ

        No. Every PDF you load, the pages you extract or rebuild, and the file you download are handled entirely inside this browser tab, and CapyToolkit doesn't send the bytes of your document to a server for any of the four modes. There's no account or upload step to work through first, so you can start working on a file the moment the tab loads.

        The tool tells you plainly that the file is encrypted and can't be opened locally without the password. It doesn't prompt you to enter one, since decrypting a PDF client-side without the owner's password is out of scope here. Remove the password with the program that set it, then load the unlocked file instead.

        Compress downsamples embedded JPEG images, since photos and scanned pages are usually what makes a PDF large, and it works through a fixed ladder of scale and quality steps until one fits. A PDF that's mostly text, or one whose images are already compressed hard, may not have enough image weight left to shed. When that happens, the tool returns the smallest file the ladder reached and says so, rather than quietly flattening pages into blurry images to force a smaller number.

        No. Merge and Split copy each page's original content stream instead of rasterizing it into a picture, so text stays selectable and vector graphics stay sharp. The only modes that change pixel data are Compress, which redraws embedded JPEGs at your request, and rotation inside Rotate & Reorder, which only changes a page's orientation flag.

        There's no fixed cap built into the tool, but every mode runs inside your browser's available memory, so a very large scanned document can be slow, especially when Rotate & Reorder renders a thumbnail for every page. If a file is too large for your device to handle, the tool surfaces a plain-language error instead of freezing the tab.

        Not currently. Each range you extract becomes its own PDF download, since most people pulling a chapter or an exhibit out of a longer document just want that one file rather than an archive to open first. If you request several ranges at once, you'll get several separate downloads with names based on the original file and the pages each one contains.