How to Split a PDF: Extract Pages from Any PDF File

Extract specific pages, split into chapters, or break a large PDF into individual pages — every method explained.

PDF Tools 2026-04-09 By Risetop Team 10 min read

You've received a 200-page PDF and only need pages 45–60. Or you want to email just one chapter of a report without sending the entire file. Or you need to separate a scanned document into individual pages for processing. In all these cases, you need to split a PDF — and it's easier than you might think.

This guide walks you through every way to split PDFs: quick online tools, free desktop software, command-line utilities for batch processing, and programming libraries for automated workflows.

Common Scenarios for Splitting PDFs

Method 1: Online PDF Splitter (Easiest)

Online tools handle most splitting tasks in seconds with zero installation. Here's how to use one:

Step-by-Step: Splitting a PDF Online

  1. Upload your PDF — Go to the PDF split tool and drag your file into the upload area
  2. Choose your split method:
    • Extract specific pages: Enter page numbers or ranges (e.g., "1, 3, 5-8")
    • Split by ranges: Divide into chunks of N pages each
    • Split every page: Create one PDF per page
  3. Click "Split" — The tool processes your request instantly
  4. Download the result — Save the extracted pages as a new PDF (or multiple PDFs)
💡 Pro tip: Browser-based PDF splitters that use JavaScript (like Risetop's tool) process your file locally. Your document never leaves your computer — ideal for confidential files like contracts, medical records, or financial statements.

Method 2: Desktop Software

macOS Preview

Preview on macOS makes splitting incredibly simple:

  1. Open the PDF in Preview
  2. Show the thumbnails sidebar (View → Thumbnails)
  3. Select the pages you want to extract (click + Shift for range, or Cmd + click for non-contiguous)
  4. Drag the selected thumbnails to your desktop — they become a new PDF

Adobe Acrobat

  1. Open the PDF in Acrobat
  2. Go to Tools → Organize Pages
  3. Select the pages you want to extract
  4. Click Extract and choose whether to delete the extracted pages from the original
  5. Save the new file

PDF Arranger (Free, Cross-Platform)

PDF Arranger provides a visual interface for splitting, rotating, deleting, and rearranging PDF pages:

# Install sudo apt install pdfarranger # Linux brew install --cask pdfarranger # macOS

Split your PDF in seconds — no signup, no download, no watermark.

Split PDF Online →

Method 3: Command Line

pdftk

# Extract specific pages pdftk input.pdf cat 1 3 5-8 output extracted.pdf # Extract a range pdftk input.pdf cat 10-25 output chapter2.pdf # Split every single page into individual PDFs pdftk input.pdf burst # Split into chunks of 5 pages each pdftk input.pdf cat 1-5 output part1.pdf pdftk input.pdf cat 6-10 output part2.pdf

qpdf

# Extract pages 1-10 qpdf input.pdf --pages . 1-10 -- output.pdf # Extract pages 1, 3, 5 qpdf input.pdf --pages . 1,3,5 -- output.pdf # Split into individual pages qpdf input.pdf --split-pages -- output_page_

Ghostscript

# Extract pages 5-10 with size optimization gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite \ -dFirstPage=5 -dLastPage=10 \ -sOutputFile=extracted.pdf input.pdf

Method 4: Programming

Python — PyPDF2

from pypdf import PdfReader, PdfWriter reader = PdfReader("large_report.pdf") writer = PdfWriter() # Extract pages 10-25 (0-indexed: 9-24) for page_num in range(9, 25): writer.add_page(reader.pages[page_num]) with open("chapter2.pdf", "wb") as f: writer.write(f)

Python — Split into individual pages

from pypdf import PdfReader, PdfWriter reader = PdfReader("document.pdf") for i, page in enumerate(reader.pages): writer = PdfWriter() writer.add_page(page) with open(f"page_{i+1}.pdf", "wb") as f: writer.write(f)

JavaScript — pdf-lib

const { PDFDocument } = require('pdf-lib'); const fs = require('fs'); async function extractPages(inputFile, pageNumbers, outputFile) { const bytes = await fs.promises.readFile(inputFile); const pdf = await PDFDocument.load(bytes); const newPdf = await PDFDocument.create(); const pages = await newPdf.copyPages(pdf, pageNumbers.map(n => n - 1) // convert to 0-indexed ); pages.forEach(page => newPdf.addPage(page)); const result = await newPdf.save(); await fs.promises.writeFile(outputFile, result); } extractPages('report.pdf', [1, 2, 3], 'intro.pdf');

Advanced Splitting Techniques

Split by bookmarks

Many PDFs (especially reports and textbooks) have bookmarks that mark chapters or sections. You can split based on these bookmarks using pdftk:

# Dump bookmark info to see page numbers pdftk input.pdf dump_data | grep BookmarkPageNumber # Then extract based on the page numbers you find pdftk input.pdf cat 1-15 output chapter1.pdf pdftk input.pdf cat 16-30 output chapter2.pdf

Split by file size

When you need to meet email attachment limits, split by approximate file size:

#!/usr/bin/env python3 from pypdf import PdfReader, PdfWriter import os input_pdf = "large_file.pdf" max_size_mb = 20 max_size_bytes = max_size_mb * 1024 * 1024 reader = PdfReader(input_pdf) current_writer = PdfWriter() current_size = 0 part = 1 for page in reader.pages: test_writer = PdfWriter() test_writer.add_page(page) import io buf = io.BytesIO() test_writer.write(buf) page_size = buf.tell() if current_size + page_size > max_size_bytes and len(current_writer.pages) > 0: with open(f"part_{part}.pdf", "wb") as f: current_writer.write(f) part += 1 current_writer = PdfWriter() current_size = 0 current_writer.add_page(page) current_size += page_size if len(current_writer.pages) > 0: with open(f"part_{part}.pdf", "wb") as f: current_writer.write(f)

Preserving Quality and Metadata

PDF splitting is a lossless operation — it copies page data without re-encoding. However, be aware of these details:

Extract the pages you need — fast, free, and private.

Try PDF Splitter →

Conclusion

Splitting PDFs is straightforward once you know your options. For a quick extraction of a few pages, an online PDF splitter is the fastest route. For batch processing or automation, pdftk and qpdf on the command line are unbeatable. And for integration into applications, libraries like PyPDF2 and pdf-lib give you full programmatic control.

The most important consideration is privacy: when working with sensitive documents, always prefer tools that process files locally — either desktop software, command-line tools, or browser-based tools that use JavaScript without uploading to a server.