PDF Merge & Split PDF Merge & Split
Add to Chrome — Free

PDF Merge & Split Blog

How to Batch Split Multiple PDFs at Once

Updated March 2026 · 4 min read

Quick Answer For batch splitting multiple PDFs, use pdftk (fastest for simple splits), Ghostscript (versatile, free), or Python with PyPDF2 (most flexible). For a single file, the PDF Merge & Split Chrome extension is the easiest option with no install required.
📋 Table of Contents
📋 Table of Contents

If you have dozens or hundreds of PDF files that each need to be split the same way — into individual pages, into N-page chunks, or at the same page boundaries — doing them one at a time in a GUI tool is impractical. Batch splitting requires command-line tools or scripts.

This guide covers the three most practical approaches: pdftk, Ghostscript, and Python, with working command examples for each common batch split scenario.

Single File? Use the Extension

For one PDF at a time, PDF Merge & Split is the simplest option.

Add to Chrome — Free


Installing the Tools

pdftk

Ghostscript

Python + PyPDF2

pip install PyPDF2


Batch Split 1: Split Every PDF into Individual Pages

Using pdftk (bash/macOS/Linux)

#!/bin/bash
# Split all PDFs in current folder into individual pages
mkdir -p split-output
for f in *.pdf; do
 name="${f%.pdf}"
 mkdir -p "split-output/$name"
 pdftk "$f" burst output "split-output/$name/${name}-page-%04d.pdf"
done

Using pdftk (Windows PowerShell)

$files = Get-ChildItem -Filter "*.pdf"
foreach ($file in $files) {
 $name = $file.BaseName
 New-Item -ItemType Directory -Force "split-output\$name" | Out-Null
 pdftk $file.FullName burst output "split-output\$name\${name}-page-%04d.pdf"
}


Batch Split 2: Split Every PDF into N-Page Chunks

Python script — split all PDFs into 10-page chunks

import os
from PyPDF2 import PdfReader, PdfWriter

PAGES_PER_CHUNK = 10
INPUT_DIR = "."
OUTPUT_DIR = "split-output"

os.makedirs(OUTPUT_DIR, exist_ok=True)

for filename in os.listdir(INPUT_DIR):
 if not filename.endswith(".pdf"):
 continue

 filepath = os.path.join(INPUT_DIR, filename)
 reader = PdfReader(filepath)
 total_pages = len(reader.pages)
 base_name = filename[:-4]

 chunk_num = 1
 for start in range(0, total_pages, PAGES_PER_CHUNK):
 end = min(start + PAGES_PER_CHUNK, total_pages)
 writer = PdfWriter()
 for page_num in range(start, end):
 writer.add_page(reader.pages[page_num])

 out_file = os.path.join(OUTPUT_DIR, f"{base_name}-part-{chunk_num:03d}.pdf")
 with open(out_file, "wb") as f:
 writer.write(f)

 chunk_num += 1

print(f"Done. Output in: {OUTPUT_DIR}")

Change PAGES_PER_CHUNK = 10 to any value. The script processes every PDF in the current directory and writes chunks to the split-output folder.



Batch Split 3: Extract a Fixed Page Range from Every PDF

Useful when you have a consistent structure across many PDFs — for example, extracting the first 5 pages (executive summary) from every report in a folder.

Ghostscript loop (bash)

#!/bin/bash
# Extract pages 1-5 from every PDF
mkdir -p extracted
for f in *.pdf; do
 gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite \
 -dFirstPage=1 -dLastPage=5 \
 -sOutputFile="extracted/${f%.pdf}-summary.pdf" "$f"
done


Batch Split 4: Split PDFs by File Size Target

Splitting to meet an email attachment size limit requires knowing page sizes first. This Python script estimates pages per chunk based on file size:

import os
from PyPDF2 import PdfReader, PdfWriter

TARGET_SIZE_MB = 10 # Target chunk size in MB
INPUT_DIR = "."
OUTPUT_DIR = "split-by-size"

os.makedirs(OUTPUT_DIR, exist_ok=True)

for filename in os.listdir(INPUT_DIR):
 if not filename.endswith(".pdf"):
 continue

 filepath = os.path.join(INPUT_DIR, filename)
 file_size_mb = os.path.getsize(filepath) / (1024 * 1024)
 reader = PdfReader(filepath)
 total_pages = len(reader.pages)

 if file_size_mb <= TARGET_SIZE_MB:
 print(f"Skipping {filename} (already under {TARGET_SIZE_MB}MB)")
 continue

 avg_page_size = file_size_mb / total_pages
 pages_per_chunk = max(1, int(TARGET_SIZE_MB / avg_page_size))

 base_name = filename[:-4]
 chunk_num = 1
 for start in range(0, total_pages, pages_per_chunk):
 end = min(start + pages_per_chunk, total_pages)
 writer = PdfWriter()
 for page_num in range(start, end):
 writer.add_page(reader.pages[page_num])
 out_file = os.path.join(OUTPUT_DIR, f"{base_name}-chunk-{chunk_num:03d}.pdf")
 with open(out_file, "wb") as f:
 writer.write(f)
 chunk_num += 1

 print(f"Split {filename} into {chunk_num-1} chunks")
Note: This estimates pages per chunk based on average page size. Actual chunk sizes may vary — pages with many images are larger than text-only pages. Verify output file sizes after splitting.

One File to Split? Use the Extension

For individual PDFs, PDF Merge & Split is faster than command-line tools.

Install PDF Merge & Split


Related Guides



Frequently Asked Questions

Can I split multiple PDF files at once?

Yes. Use pdftk burst in a loop, Ghostscript in a bash loop, or a Python script with PyPDF2. The PDF Merge & Split Chrome extension handles one file at a time — for batch work, command-line tools are faster.

How do I split all PDFs in a folder into individual pages?

Use pdftk: for f in *.pdf; do pdftk "$f" burst output "${f%.pdf}-page-%04d.pdf"; done. This processes every PDF in the current folder.

How do I batch split PDFs by a fixed page count?

Use the Python script in this guide. Set PAGES_PER_CHUNK to your desired value, point the script at your input folder, and it will split every PDF into equal-sized chunks.

What is the fastest tool for batch splitting large numbers of PDFs?

pdftk is generally the fastest for batch splitting due to low overhead per file. For very large batches (thousands of files), Ghostscript is comparably fast.

Can I batch split PDFs on Windows without installing extra software?

Windows does not include a built-in batch PDF splitter. You need to install pdftk, Ghostscript, or Python — all three are free. For individual files, the PDF Merge & Split Chrome extension requires no additional installation.

More Free Chrome Tools by Peak Productivity

Bulk Image Downloader
Bulk Image Downloader
Download all images from any page
Pomodoro Technique Timer
Pomodoro Technique Timer
25-minute focus timer with breaks
YouTube Looper Pro
YouTube Looper Pro
Loop any section of a YouTube video
Citation Generator
Citation Generator
Generate APA/MLA/Chicago citations
WebP to JPG/PNG
WebP to JPG/PNG
Convert WebP images to JPG/PNG
Auto Refresh Ultra
Auto Refresh Ultra
Auto-refresh pages at custom intervals