PDF Tools
Convert, merge, split, compress, and edit PDFs locally — your documents never leave the browser.
PDFs are the format everyone agrees on when they can't agree on anything else. They're also the format most online tools quietly upload to a third-party server, which is uncomfortable when the document is a tax return, a signed contract, or a medical record. The PDF tools on this page run on PDF.js (Mozilla's renderer, the same one Firefox ships) and pdf-lib (a pure JavaScript PDF editor) — both in your browser. The file never leaves your device.
A PDF is essentially a container of pages, each described as a small program that draws text, vector shapes, and bitmap images. That structure matters because it explains what these tools can and can't do quickly. Operations that rearrange pages — merging, splitting, rotating, page extraction — are very fast because they just shuffle the page objects without touching the content. Operations that re-encode content — compressing, watermarking, converting to JPG — have to render each page, which takes a few hundred milliseconds per page on a modern laptop.
For text-based PDFs (those produced by a word processor or designer tool), PDF to Text can extract the underlying text directly. For scanned PDFs (each page is an image), you need OCR — use Image to Text on each page. The two cases look the same when you open them, but they behave very differently when you try to extract content.
All pdf tools (15)
PDF to JPG
Convert every PDF page to a JPG image.
PDF to PNG
Convert PDF pages to lossless PNG images.
PDF to Text
Extract plain text from any PDF.
Image to PDF
Combine JPG and PNG images into a single PDF.
JPG to PDF
Convert JPG photos into one PDF document.
PNG to PDF
Convert PNG files into a PDF document.
HEIC to PDF
Turn iPhone HEIC photos into a single PDF.
Markdown to PDF
Render Markdown as a clean, printable PDF.
Merge PDF
Combine multiple PDFs into a single file.
Split PDF
Split a PDF into separate pages or ranges.
Compress PDF
Reduce PDF file size without changing layout.
Add Page Numbers to PDF
Stamp page numbers onto every page of a PDF.
Extract PDF Pages
Pull out specific pages from a PDF into a new file.
Rotate PDF Pages
Rotate individual or all PDF pages.
Watermark PDF
Add a text or image watermark to every PDF page.
Common PDF workflows
Combine a stack of receipts. Photograph each receipt, then run them through Image to PDF in the order you want. The result is a single PDF you can email for an expense report. JPG to PDF and PNG to PDF are specialized variants of the same flow. iPhone users can skip the conversion step with HEIC to PDF.
Send a smaller PDF. Email systems often cap attachments at 10 or 25 MB. Compress PDF re-encodes the embedded images at a lower quality — usually shaving 40-70% off the file. For text-only PDFs (slides, contracts), there isn't much to compress; for image-heavy PDFs (scans, photo books), the savings are dramatic. If you still need it smaller, split off the pages you don't need with Split PDF.
Send only certain pages. Got a 60-page contract and need to send page 7? Extract PDF Pages pulls specific pages or a range into a new document. Split PDF is the bulk version — every page becomes its own file. For the opposite operation (combining several PDFs received separately), Merge PDF stitches them together in any order you want.
Convert PDFs to images. PDF to JPG and PDF to PNG render each page as an image — useful for embedding in a slide deck, sending to someone who can't open PDFs, or pasting into a chat that doesn't preview PDF attachments. Use PNG when the PDF has crisp text or line drawings; use JPG for image-heavy or photo-based PDFs.
Page-level edits. Pages scanned upside down? Rotate PDF Pages handles any combination of 90° rotations. Need numbered pages for a printout? Add Page Numbers. Watermarking a draft contract? Watermark PDF stamps text or an image on every page.
Frequently asked questions
Are my PDFs actually private?▾
Yes. Every PDF tool here runs PDF.js and pdf-lib in your browser tab. The file is read from your disk into memory, edited, and written back out — at no point is anything uploaded. You can verify this in DevTools → Network: nothing leaves your device. This is the whole reason these tools exist.
Is there a page limit?▾
There is no fixed page limit, but very large PDFs (hundreds of pages, especially with embedded images) push memory hard. As a rough guide, 200-300 pages is comfortable on a laptop. If you hit a slowdown or out-of-memory error, split the PDF first and process the halves separately.
Why can't I copy text from this PDF?▾
The PDF is probably a scan — each page is an image, not text. You can confirm by trying to select text in your PDF viewer. To extract text from a scan, you need OCR: use /image-to-text on each page, or first convert the PDF to images with /pdf-to-png and then run OCR on each image.
Will compress-pdf change my document's layout?▾
No. Compression only re-encodes embedded images at a lower quality; text, vector graphics, and page layout are preserved exactly. The visible difference is in the photos and screenshots embedded in the PDF — you'll see typical JPG-style compression on those, but the rest of the document is unchanged.
Can I edit the text inside a PDF?▾
These tools don't do free-form text editing — that requires more sophisticated PDF parsing that's still hard to do reliably in a browser. For text edits, the typical workflow is to open the PDF in a desktop editor (Acrobat, Affinity Publisher) or to extract the text with /pdf-to-text, edit it, and regenerate the PDF.
Can these tools merge encrypted or password-protected PDFs?▾
Encrypted PDFs need to be decrypted first using a desktop tool or the original password. Once a PDF is open and viewable, the tools here can read it; if it requires a password to open, they can't.
Why is the output PDF a different size than I expected?▾
PDF files include a lot more than just the rendered pages — embedded fonts, images at original resolution, metadata, optional content groups. After a merge or split, the size depends on which of those pieces ended up in the output. If a result is much larger than expected, run it through /compress-pdf.