Complete PDF Toolkit

Merge multiple PDFs, split page ranges, rotate pages, render PDF pages to PNG/JPG images, and optimize PDF files directly in your browser.

100% Client-Side Private Processing

Your PDF documents are processed entirely in your web browser using WebAssembly and HTML5 Canvas. Files are never uploaded to any remote server or third party.

Looking for PDF to Word (DOCX)?

Authentic PDF-to-Word conversion requires parsing complex typographic bounding boxes, multi-column flow, and vector typography. Rather than providing a broken wrapper that damages formatting, we offer our Extract Text tool above for clean editable content. High-fidelity DOCX layout conversion is currently under research for a future client-side update.

Processed locally in your browser without uploading your inputs. Privacy PolicyReviewed by Muhammad SajjadLast reviewed: 2026-11-04

Complete PDF Toolkit Guide: Merging, Splitting, Rotating & Rendering PDFs Locally

Learn how client-side PDF object-tree manipulation (pdf-lib) and PDF.js rendering work without uploading confidential documents to cloud servers.

Read Full Guide

Five Essential PDF Operations in One Browser Workspace

Legal contracts, bank statements, FBR tax returns, academic transcripts, and medical records almost always live in PDF format (`ISO 32000-1`). Uploading confidential financial or identity PDFs to an unknown remote server just to merge two files or extract page 3 exposes sensitive personal data unnecessarily.

The Complete PDF Toolkit runs five distinct PDF engines directly inside your browser tab using `pdf-lib` and Mozilla `PDF.js`: **Merge PDFs** (combine multiple files in custom order), **Split / Extract Pages** (pull specific pages or ranges like `1-3, 5, 8-10`), **Rotate PDF** (`90°` clockwise, `180°`, or `90°` counter-clockwise across all or custom pages), **PDF to Images** (render every PDF page into high-resolution `PNG` or `JPG` files), and **Compress PDF** (strip redundant metadata and rebuild with compressed PDF object streams).

How to Merge, Split, Rotate, Convert, or Compress a PDF

  1. Select one of the five mode tabs at the top of the workspace: 'Merge PDFs', 'Split / Extract', 'Rotate PDF', 'PDF to Images', or 'Compress PDF'.
  2. Drop your `.pdf` file(s) into the upload area (the tool verifies the `%PDF-` magic header byte signature on every file and displays the exact page count and byte size).
  3. Configure your operation—reorder files in Merge mode, type page ranges like `1-3, 5` in Split mode, pick a rotation angle in Rotate mode, or choose `PNG` vs. `JPG` and DPI scale (`1x`, `2x`, `3x`) in PDF to Images mode.
  4. Click the primary action button ('Merge X PDFs', 'Extract Pages', 'Rotate PDF', 'Convert to Images', or 'Compress PDF') and download your processed output.

PDF Magic Header Validation, Page Range Parser & Object Streams

Magic Header Check: bytes[0..4] === [0x25, 0x50, 0x44, 0x46, 0x2D] ('%PDF-')
Split Range Parser: '1-3, 5' -> 0-based indices [0, 1, 2, 4] via pdfDoc.copyPages()
Object Stream Save: pdfDoc.save({ useObjectStreams: true, objectsPerTick: 50 })

Before parsing, the tool inspects the first 5 bytes of every uploaded `ArrayBuffer` for the hexadecimal signature `25 50 44 46 2D` (`%PDF-`) so renamed non-PDF files are caught immediately. For Merge, Split, and Rotate, `pdf-lib` copies or mutates the page dictionary nodes (`MediaBox`, `Rotate` entry) losslessly without re-rasterizing vector text or fonts. For PDF to Images, Mozilla `pdfjs-dist` rasterizes each page viewport at `1x` (72 DPI), `2x` (144 DPI), or `3x` (216 DPI) onto an HTML5 `<canvas>`.

Worked Examples Across the Five PDF Toolkit Modes

Below are three real workflows executed inside the Complete PDF Toolkit.

Example 1: Extracting Specific Pages from a 10-Page Contract ('Split / Extract' Mode)

Extracting the cover page (page 1), signature page (page 5), and appendix (pages 8 to 10) into a new 5-page PDF.

Tool InputMode: Split / Extract | File: 10-page contract.pdf | Page Range: 1, 5, 8-10
Verified Tool OutputParser validates 5 unique pages ([1, 5, 8, 9, 10]) and downloads `contract-extracted.pdf` containing only those 5 pages in vector quality.

Key takeaway: If you accidentally type a page number greater than total pages (e.g., `15` on a 10-page file) or an inverted range (`5-2`), `parsePageRanges()` highlights the exact error before processing.

Example 2: Rendering a 4-Page PDF Slide Deck into High-Res PNGs ('PDF to Images' Mode)

Converting each page of a PDF presentation into crisp images for a blog post or social carousel.

Tool InputMode: PDF to Images | Format: PNG (Lossless) | Resolution: High (2x — Recommended)
Verified Tool OutputRenders all 4 pages at 2× pixel density with visual thumbnails and individual or one-click 'Download All (4)' buttons.

Key takeaway: `2x` resolution renders a standard `612×792 pt` Letter page at `1224×1584 px`, keeping small body text razor-sharp.

Example 3: Rotating Only Scanned Upside-Down Pages ('Rotate PDF' Mode)

Fixing pages 2 and 4 of a scanned PDF that were fed upside-down (`180°`) into a document feeder.

Tool InputMode: Rotate PDF | Angle: 180° Upside Down | Apply To: Specific Pages (`2, 4`)
Verified Tool OutputUpdates the `/Rotate` dictionary attribute on pages 2 and 4 by `+180°` while leaving pages 1, 3, and 5 untouched.

Key takeaway: Switching 'Apply To' from 'All Pages' to 'Specific Pages' lets you fix individual mis-scanned sheets without rotating the rest of the document.

Why 'Compress PDF' Saves More on Unoptimized Structural PDFs Than Already-Compressed Scans

A PDF file contains two different kinds of data: structural PDF objects (cross-reference tables, font subsets, form fields, XMP metadata streams, and page trees) and embedded image streams.

In the 'Compress PDF' tab, `pdf-lib` clones the page tree into a fresh document, strips legacy Producer/Creator metadata headers, and packs PDF objects into compressed PDF 1.5 Object Streams (`useObjectStreams: true`). This noticeably shrinks PDFs generated by verbose reporting engines or word processors. However, if a PDF consists solely of already-compressed JPEG scans, structural repacking alone yields modest savings—for maximum size reduction on image-heavy documents, compress the source photos in our Image Compressor before running Image to PDF.

Password-Protected (Encrypted) PDFs and Browser Memory Limits

  • Encrypted / password-protected PDFs: If a PDF is locked with an owner or user encryption password, `PDFDocument.load()` cannot modify its object tree without decryption; remove password protection in your PDF reader before uploading.
  • File size limit (100 MB): Each uploaded PDF is validated up to `100 MB`. When using 'PDF to Images' at `3x (Ultra)` resolution on a 50+ page PDF, convert in smaller page batches or use `2x` resolution to stay comfortably within mobile browser canvas memory.
  • 1-based page numbering: Page ranges in Split and Rotate modes use human `1-based` numbering (`Page 1` is the first page).

When to Use a Companion Tool on This Site

  • Image to PDF Converter: Use when starting with `.jpg`, `.png`, or `.webp` images that you want to compile into a new PDF.
  • Image Compressor: Use after exporting pages in 'PDF to Images' mode if you want to convert those PNGs into ultra-light WebP images.
  • Word Counter: Use when pasting text copied out of a PDF to check its word, character, and paragraph counts.

Frequently Asked Questions About the Complete PDF Toolkit

Does merging or splitting PDFs reduce the quality of text and vector graphics?

No. In Merge, Split, and Rotate modes, `pdf-lib` copies the underlying PDF page objects, vector paths, and embedded font streams directly into the new document without rasterizing them. Text remains 100% selectable, searchable, and vector-sharp.

How do I write page ranges in 'Split / Extract' mode?

Separate individual pages and hyphenated ranges with commas—for example, `1-3, 5, 8-10` extracts pages 1, 2, 3, 5, 8, 9, and 10 into a single new PDF in ascending order.

Why did a file with a `.pdf` extension get rejected as 'Not a valid PDF'?

Sometimes users rename a `.jpg` or `.docx` file to `.pdf` in File Explorer, or download an HTML error page saved with a `.pdf` extension. Our toolkit inspects the first 5 bytes of the file for the official ISO 32000 `%PDF-` magic header (`0x25 0x50 0x44 0x46 0x2D`) before loading.

Can I rotate just one sideways page in a PDF without rotating the whole document?

Yes! Open the 'Rotate PDF' tab, upload your file, change 'Apply Rotation To' from 'All Pages' to 'Specific Pages', and type the page number(s) (such as `3` or `2, 5-6`) before clicking 'Rotate PDF'.

What resolution should I pick in 'PDF to Images'?

Choose `High (2x)` for general reading, presentations, and web sharing (~144 DPI). Choose `Ultra (3x)` when the PDF contains small 8pt footnote text or detailed architectural diagrams that you plan to zoom into or print (~216 DPI).