PDF to Text

Pull the plain text out of a PDF, page by page, ready to copy or download.

Extract the Text From a PDF

A PDF does not really contain text in the way a document does. It contains instructions to place particular glyphs of a particular font at particular coordinates — which is why copying from a PDF so often produces jumbled words, missing spaces, or strings of meaningless characters.

This extractor reads the content streams directly, follows the font encoding of every run of characters, and reconstructs the words. Where a document carries a ToUnicode map — which almost every modern producer emits — the original characters are recovered exactly, including accented and non-Latin scripts. Line breaks are inferred from the text-positioning operators rather than guessed from spacing.

Key features

  • Proper font decoding — ToUnicode CMaps, WinAnsi encoding and custom /Differences arrays are all honoured, so subset-embedded fonts come out as readable words.
  • Two-byte fonts supported — Identity-H and other Type0 encodings are decoded as 16-bit codes, which is what CJK and most modern subset fonts use.
  • Layout-aware line breaks — new lines come from the text matrix and the leading, not from guesswork, so paragraphs keep their shape.
  • Page-by-page control — extract everything or just a range, with optional page-break markers for long documents.
  • Honest about scans — a page that holds a picture of text has no text to find, and the tool says exactly that rather than returning empty output with no explanation.
100% client-side — no data leaves your machine

This tool runs entirely inside your browser using native Web APIs. Your files and text are never uploaded to a server, never logged and never shared with third parties.

How to use: PDF to Text

  1. Drop in your PDF
    The file is parsed in your browser and every page is scanned for text immediately. Nothing is uploaded at any point.
  2. Choose the pages
    Leave the range as 1- for the whole document, or narrow it to something like 2-8. The word and character counts update with the selection.
  3. Read and tidy
    Page-break markers are on by default so you can see where each page starts; turn them off for a continuous block of prose.
  4. Copy or download
    Use the copy button for the clipboard, or download a .txt file named after the original PDF.

Technical specifications

Processing locationEntirely in your browser — no server round trip
Data uploadedNone. Files and text never leave your device
PriceFree — no account, no trial, no usage cap
CategoryPDF
Works offlineYes, once the page has loaded
Browser supportChrome 90+, Edge 90+, Firefox 90+, Safari 15+
Interface languagesEnglish, 中文, हिन्दी, Español, العربية

Frequently asked questions

Why is the output empty for my PDF?

Almost certainly because the pages are scans — photographs of paper saved inside a PDF wrapper. There is no text in the file to extract, only an image. Reading words out of a picture requires OCR, which this tool does not attempt; the status line tells you when that is what it found.

Does it handle accented characters and other alphabets?

Yes, when the PDF carries the mapping. Modern producers embed a ToUnicode CMap that ties each glyph code back to a Unicode character, and that map is parsed and applied. Older files with no such map fall back to their declared encoding, which covers Latin text well.

Why is the spacing sometimes odd?

PDF has no space character in the layout sense — words are separated by moving the drawing position. Spaces and line breaks are reconstructed from those movements, which is reliable for ordinary prose but can be approximate in multi-column layouts, tables and heavily kerned headings.

Is the text sent anywhere for processing?

No. Parsing, decompression and font decoding all happen in the browser tab. This matters for PDF text specifically, because the documents people most often want to read are contracts, statements and medical letters.

Can I extract the images too?

Not with this tool — it reads text only. Images inside a PDF are separate objects in their own formats, and pulling them out is a different job from reading the content streams.

Related tools

Back to all tools