Why extraction stays on your device
A PDF isn't just an image of a page — most of the ones you'll ever open (anything exported from Word, Google Docs, a web page, or typed directly) carry an invisible text layer alongside the visual layout. That's what lets you select and copy text in a PDF viewer in the first place, and it's what this tool reads.
Because that text layer is already inside the file, there's no reason to send the file anywhere to get it out. pdf.js parses the PDF's internal structure locally and walks the text layer page by page, entirely inside the tab you're looking at. Close the tab and nothing about the document persisted anywhere except your own browser's local storage of the extracted result, if you choose to save it.
What this tool can't do — and won't pretend to
Not every PDF has a text layer. A scanned contract, a photographed receipt, or a PDF made by photographing a printed page is, as far as the file format is concerned, just a picture — there's no underlying text to read, only pixels arranged to look like letters. Run one of those through here and you'll get an honest empty result, with a note telling you so, rather than a tool that silently fails or fabricates text that was never there.
Getting text out of an image like that requires optical character recognition (OCR) — actually recognizing the shapes of letters in a picture — which is a different technique from reading a text layer. That's exactly what the sibling image-to-text tool is built for, and this page links to it the moment it detects an empty page rather than leaving you stuck.
Page ranges for long documents
A 200-page report doesn't need to be extracted in full if you only care about chapter three. Once a PDF loads, its page count shows up automatically and you can narrow the range before extracting — or re-run a narrower or wider range afterward without re-uploading the file. That matters more than it sounds: extraction time and the size of the result both scale with page count, so scoping down keeps the output focused and the textarea manageable.
Editable output, not a locked conversion
The extracted text lands in a plain textarea you can edit directly — fix an OCR-adjacent artifact from an unusual font, trim a header that repeated on every page, or just clean up spacing before you use the text elsewhere. Whatever you edit is what gets copied, downloaded, or saved; nothing quietly reverts to the raw extraction behind your back.
Export as a flat .txt file for pasting into another document, or as .md if you want a lightweight file with a title heading ready to drop into a notes app or a static site.
From extracted text to a canvas note
If you'd rather keep the result somewhere permanent than juggle downloaded files, "Save to my canvas" hands the extracted text straight to OmniCanvas, which lays each page out as its own block on an infinite canvas and creates the note before it ever asks you to sign in. That ordering is deliberate: you see your actual work land somewhere useful first, and the account question only comes up once there's something worth keeping — never before.
It's also entirely optional. The local copy, download, and .txt/.md export all work with no account at all; saving to a canvas is there for when you want the result to follow you across devices instead of living in one browser tab.