Skip to main content
L
Loopaloo
Buy Us a Coffee
All ToolsImage ProcessingAudio ProcessingVideo ProcessingDocument & TextPDF ToolsCSV & Data AnalysisConverters & EncodersWeb ToolsMath & ScienceGames
Guides & BlogAboutContact
Buy Us a Coffee
L
Loopaloo

Free online tools for developers, designers, and content creators. Your files are processed in your browser and are never uploaded - no accounts required. A few network utilities (like What's My IP and Currency Converter) call public APIs to do their job and say so on their pages.

support@loopaloo.com

Tool Categories

  • Image Tools
  • Audio Tools
  • Video Tools
  • Document & Text
  • PDF Tools
  • CSV & Data
  • Converters
  • Web Tools
  • Math & Science
  • Games

Company

  • About Us
  • Contact
  • Blog
  • FAQ

Legal

  • Privacy Policy
  • Terms of Service
  • Disclaimer

Support

Buy Us a Coffee

© 2026 Loopaloo. All rights reserved. Built with privacy in mind.

Privacy|Terms|Disclaimer
  1. Home
  2. PDF Tools
  3. PDF Text Extractor
Add to favorites

PDF Text Extractor

Read a PDF's text in the order a person reads it

PDFs never leave your deviceMore pdf toolsJump to full guide

Related reading

  • PDF Accessibility: Making Documents Everyone Can Read12 min read

Initializing in your browser…

You might also like

Image Text Extractor (OCR)

Read text off a picture with Tesseract, after preparation that measures the type and enlarges it: 8px text went from a 53 percent character error rate to 8. Every word carries a confidence and a box drawn on the picture.

PDF Image Extractor

Pull out a PDF's pictures as the files it holds

PDF Splitter

Split a PDF by page, by batch, or by range

PDF Text Extractor: a worked example

You need to quote from a two column paper, and pasting it from the viewer comes out interleaved.

Input

paper.pdf · find columns on
What PDF Text Extractor produces

Output

Read as two columns, split at 232 to 320 points: the left column entire, then the right

The columns are found from the glyph runs BEFORE the lines are built, which is the only point at which the gutter still exists: two columns emitted a line at a time share their baselines, so grouping into lines first merges them. A page written bottom to top also comes out top to bottom, because the order is taken from the baselines rather than from the file. The page says how it read each page and where the gutter is, and column detection can be turned off when the guess is wrong.

About the PDF Text Extractor

Pull the text out of a PDF in the order a person reads it, not the order the file happens to store it in. Columns are found before the lines are built, so a two column page comes out one column at a time rather than interleaved, and a page whose content was written out of order still comes out in order. The tool says how it read each page and where the columns it found are, and you can turn column detection off when the guess is wrong. Search the result, read it page by page, and export it as plain text, Markdown, JSON or CSV. Everything happens in your browser and nothing is uploaded.

Working with your PDF

  1. 1Upload the PDF.
  2. 2Choose how to read it: find columns (on by default), keep line breaks, mark each page. Optionally name a page range.
  3. 3Press Extract the text.
  4. 4Read it in one block or page by page. The page-by-page view says how each page was read and where any columns are.
  5. 5Search the text if you are looking for something, then copy it or export it as TXT, MD, JSON or CSV.

Key features

  • Reading order taken from where the words are, so a page written out of order still comes out in order
  • Column detection that works on the glyph runs, before the lines are built, which is the only point at which the gutter still exists
  • A stated verdict per page: how it was read, where the gutters are, how many lines and words
  • Line grouping with the tolerance taken from the type size rather than a fixed number of points
  • A page range that reads only the pages named
  • One pass over the document rather than two
  • A literal search by default and a regular expression behind its own switch, with a bad pattern reported rather than thrown
  • Exports as plain text, Markdown, JSON (with the per page layout) and CSV (one row per line)
  • Pages with no text layer named, with what that means said out loud
  • Everything in your browser: the document is never uploaded

Common scenarios

  • Quoting from a report

    Get a paragraph out of a PDF whose viewer blocks copy and paste, with the columns in the right order.

  • Feeding a document to something else

    Export as JSON or CSV to get the text into a script, a spreadsheet or a search index, with the page each line came from.

  • Checking what a PDF actually contains

    Find out whether a document has a text layer at all before trying to search it, and which of its pages are scans.

  • Reading an academic paper

    Two column papers are exactly the case a stream-order extractor scrambles, and exactly the case column detection is for.

Tips & best practices

  • If a two column document comes out interleaved anyway, or a single column document is split when it should not be, turn Find columns off and read it again. The page tells you which way it read each page.
  • A scanned page has no text layer however clear it looks, and there is nothing to extract from it. The tool names those pages and says that optical character recognition is what they need.
  • Use the page range for a long document. Reading two pages of eight really is faster than reading all eight and throwing six away.
  • The CSV export gives one row per line with its page number, which is what you want if the text is going into a spreadsheet to be filtered or sorted.
  • The JSON export records how each page was read, including where the gutters were found, so you can check the reading order rather than trusting it.
  • Turn line breaks off if you are pasting into something that reflows text anyway; the words are the same, joined with single spaces.

Examples

  • A two column page

    Read as two columns, split at 232 to 320 points: the left column comes out entire and then the right, which is what poppler does with the same file and what a person does with the paper.

  • A page whose stream is out of order

    A page whose lines were written bottom to top comes out top to bottom, because the order is taken from the baselines rather than from the file.

  • A document with no text layer

    Every page reports as empty and the tool says so in words, rather than showing an empty box and leaving you to guess whether it failed.

How it works

A PDF content stream carries no notion of a line, a paragraph or a column. It carries positioned glyph runs, and the order they were written in is whatever the program that produced the file happened to do. So the reading order is a property of the GEOMETRY and never of the stream, and an extractor that follows the stream is right only by luck.

That is measurable, and it was measured. On a fixture whose stream order was chosen to disagree with its reading order, the previous version of this tool produced a page written bottom to top BACKWARDS, and joined the two columns of a two column page into single lines reading "L01 left column line 01 R01 right column line 01". The words were all there: on eight pages of ordinary body text it produced every one of the 248 lines poppler finds. Only the order was wrong, which is the failure mode nobody notices until they paste the result somewhere.

So the tool does three things in order, and says which it did.

First it finds the COLUMNS, working on the glyph runs and not on the lines. That ordering is the whole of it: two columns emitted a line at a time share their baselines, so grouping into lines first merges them and the gutter between them is gone before anything looks for it. A gutter here is an x interval that no run occupies, at least a quarter inch wide, with real text on both sides occupying the same vertical band. That last condition is what stops a heading at the top left and a page number at the bottom right from looking like a layout.

Then it groups each column's runs into LINES by their baseline, with the tolerance taken from the type's own size rather than a constant. A fixed five points is half a line at six point type and a fifth of a line at twenty four, so one number both joins lines that should be separate and splits lines that should not be.

Then it orders the columns left to right and the lines within each top to bottom, joining runs on a line with a space where the gap is wider than a space in the type that drew them.

Every one of those decisions is reported. The page says how it read the page you are looking at and where the gutter it found is, and column detection can be turned off when the guess is wrong for your document.

The document is read ONCE. The previous version called two separate extractors that each parsed and walked the whole file, which on an eight page document was 489 milliseconds where one pass is about 100. A page range reads only the pages named, which is real work saved rather than pages rendered and then discarded.

And the search box is a search box. It looks for the characters you type, so an open bracket finds an open bracket; a regular expression is available behind its own switch, and a pattern that does not compile is reported rather than raised. The previous version built a regular expression from the raw input inside an effect with no guard, so typing a single "(" threw and took the page down.

Frequently asked questions

Why did my two column document come out interleaved before?

Because the reading order was taken from the order the file stored the words in. A layout engine that fills two columns a line at a time writes left line one, right line one, left line two, and an extractor following that produces exactly what you saw. This tool finds the columns from the geometry first.

It split my page into columns and it should not have. What do I do?

Turn Find columns off and extract again. The page-by-page view tells you how each page was read and where the gutter it found is, so you can see what it decided before you change anything.

Nothing came out. Is the tool broken?

Probably not: the page most likely has no text layer, which is what a scan is. A scanned page is a picture of words, and there is nothing to extract from it. The tool names those pages and says that optical character recognition is what they need.

Is the search a regular expression?

Not unless you turn on the regex switch. By default it looks for the characters you type, so searching for "(" finds an open bracket. With the switch on, a pattern that does not compile is reported on the page rather than raised.

Does it keep the formatting?

It keeps the line and paragraph structure and the reading order. Bold, italic, type sizes, tables and images are not part of plain text and are not carried over.

Is my document uploaded anywhere?

No. The PDF is read in your browser and never leaves it.

Related tools and how they differ

  • PDF Image Extractor: Takes the PICTURES out of a PDF rather than the words, handing back the file's own JPEGs.
  • PDF to Images: Turns each page into a picture. Use it when the PDF has no text layer and you need the page as it looks.

Further reading

  • PDF Accessibility: Making Documents Everyone Can Read12 min read

Private by design

PDF parsing and editing happen in your browser. Documents, and everything inside them, are never uploaded or stored remotely.