How to extract text from a PDF
- Add the PDF. Tap Choose PDF or drop the file onto the page. If it is password-protected, type the password and tap Open.
- Let it read the pages. Each page's text items are read and rebuilt into lines from their positions. A progress bar shows the page it is on.
- Adjust the output. Tick One page per section to get a header above every page, and Strip hyphenation to join words broken at line ends. The box updates immediately.
- Copy or download. Tap Copy text to put it on the clipboard, or Download .txt to save a plain-text file named after the PDF.
What it does
- Extracts the full text layer of a PDF, keeping line breaks and paragraph gaps as they appear on the page
- One page per section: adds a ‘Page 3 of 12’ header above each page's text
- Strip hyphenation: joins words broken at a line end (docu- / ment → document)
- Copy to the clipboard in one tap, or download as a UTF-8 .txt file
- Tells you when a PDF has no text layer (a scan) and links the OCR tool instead of returning an empty file
- Runs entirely on your device — the only network request fetches the open-source PDF.js library
What does the tool extract?
A PDF page is a list of drawing instructions. When the file was made from a digital document — a Word file, a web page, an e-mail — those instructions include a text layer: the characters themselves plus where each piece sits on the page. PDF.js reads that layer and reports it as positioned text items (its getTextContent API). This tool rebuilds readable lines from those items and gives you the result as plain text. If the PDF is a scan, there is no text layer and nothing to extract; the tool says so and sends you to OCR instead of handing you an empty file.
How are lines rebuilt?
| Rule | What it does | Why |
|---|---|---|
| Same baseline → same line | Text items whose vertical position differs by less than half the glyph height are joined into one line, left to right | PDF writers split a line into many items (per word, per font change, per kerning pair) |
| Gap → space | A horizontal gap wider than a quarter of the glyph height between two items becomes a single space | Many PDFs never store space characters; the gap is the only evidence |
| Big vertical gap → blank line | A gap of more than 1.6 line heights between lines inserts an empty line | Keeps paragraphs and headings visibly separate |
| One page per section (option) | Adds a ===== Page n of N ===== header before each page, empty pages included | Lets you find a passage in the original |
| Strip hyphenation (option) | Joins docu- + line break + ment into document when both sides are lowercase letters; removes soft hyphens at a line end | Justified text is full of end-of-line hyphens that are not part of the word |
When is plain text the right output?
- Pasting a contract clause, a letter or a citation into an e-mail, a note or a search box.
- Feeding a document to a translation tool, a screen reader or a text-analysis script.
- Keeping a searchable copy of a document next to the original, or checking what a scanner's OCR actually recognised.
- Counting and quoting: the PDF word counter gives the numbers; this tool gives the words.
If you need the layout, use the PDF itself or convert pages to images with PDF to JPG. If you need to remove something before sharing, Redact PDF deletes the text underneath, not just the ink.
What are the limits?
- Text layer only. A scan without OCR yields nothing; a scan with OCR yields the OCR's output, errors included.
- Reading order is geometric: top to bottom, left to right. Multi-column pages and tables can interleave.
- Form field values, comments, annotations, bookmarks and attached files are not part of the page text and are not extracted.
- Fonts with broken or missing Unicode mappings (some old PDF generators, some symbol fonts) come out as garbage characters; that is a defect of the file, and a PDF viewer's copy command shows the same thing.
- No formatting survives: bold, italics, colours, links and images are dropped.