PowerPoint to Text Extractor for Slides and Notes
A presentation holds most of its value in words, yet PowerPoint keeps those words inside a ZIP archive of XML parts that ordinary text tools will not open. This extractor reads the .pptx in your browser, walks the slide parts from slide1 through slideN in numeric order, and prints the body lines with speaker notes underneath. Choose plain text or markdown, keep the notes or drop them, and download the result as a .txt file. The deck is read into an ArrayBuffer locally, so material that has not shipped yet never leaves the machine.
Extract Slide Text and Notes
Choose a PowerPoint file
One .pptx at a time. Legacy .ppt files must be saved as .pptx before extraction.
Reading options
Extracted text
Download .txtHow It Works
A .pptx file is a ZIP archive with a fixed layout: a content-types manifest at the root, the deck description in ppt/presentation.xml, and one part per slide at ppt/slides/slide1.xml, ppt/slides/slide2.xml, and onward. The loader inflates that archive with JSZip inside this tab and then requires ppt/presentation.xml to be present, so a binary .ppt or an unrelated ZIP stops with the not-a-pptx message before any text is read.
Inside a slide part, wording lives in a:t runs and runs are grouped by a:p paragraphs. Every a:p block is scanned, its a:t runs are pulled in order, XML entities such as escaped angle brackets and numeric character references are decoded, and the runs are joined into one line with repeated spaces collapsed. Empty paragraphs are dropped, and colors, fonts, and bold flags are ignored because they carry no words of their own.
Speaker notes take a second path. Each slide has a sibling relationships file at ppt/slides/_rels/slideN.xml.rels, whose entry for the notes slide points at a part under ppt/notesSlides. Following that target and running the same paragraph walk over it produces the note lines printed under the slide body whenever the include notes box is on.
Order is decided next. A plain name sort would place slide10.xml between slide1.xml and slide2.xml, so the parts are sorted by the digits in the file name instead, which keeps slide2 ahead of slide10 in any deck long enough to have one. The result reports slides, words, and how many slides carried notes, and the download link wraps the finished text into a local blob.
Before and After
file: q3-review.ppt
press Extract text
result: That file is not a valid .pptx.
fix: Save As, PowerPoint (.pptx) file: q3-review.pptx
summary: 12 slides, 643 words, 4 with notes
output: 643 words in the pane
download: extracted.txt slide1
slide10
slide11
slide2
slide20 Slide 1
Slide 2
Slide 10
Slide 11
Slide 20 Use Cases
| Developer | Production | Workflow |
|---|---|---|
| Export slide copy as plain-text fixtures for a deck parser | Send a deck to a translator as text instead of a file | Notes off for on-screen copy, notes on for the rehearsal script |
| Diff two revisions of the same deck with the Text Diff Checker | Publish talk abstracts from a conference presentation | Markdown mode so slide headings paste into a CMS cleanly |
| Pull a script out of a deck for subtitle timing work | Quote a localization job by word count | Compare a summary deck against the full version |
| Index slide wording for a searchable static site | Archive retired training material as readable text | Read a long presentation without opening PowerPoint |
Common Mistakes and Troubleshooting
- Handing over a legacy .ppt. The archive check fails and the red line says the file is not a valid .pptx, so re-save it as .pptx first.
- Waiting for chart numbers to arrive. Table cells come through as ordinary lines, while chart parts are never opened, so figures drawn inside a chart graphic are absent.
- Reading the last number of the summary as note lines. It counts slides that carried notes, not the number of lines in them.
- Pasting markdown output into a plain field. Hash marks and dashes come along with the text; switch the format box to plain text for a clean read.
- Expecting pictures, embedded video, or slide backgrounds to survive. Only slide and notes XML is read, so every non-text part is skipped.
- Closing the tab before saving. Nothing is stored between visits, so press the download link while the result is on screen.
Best Practices
- Save decks as .pptx before sharing one for extraction, so nobody meets the legacy message on a deadline.
- Leave include notes on for rehearsal, accessibility, and translation work, and clear it when only the on-screen copy matters.
- Pick markdown when the text is heading for a site or a review document, and plain mode when it is heading for a diff or an editor.
- Read the summary line after each run: slide count, word count, and note count say which parts of the deck were reached.
- Name the downloaded file after the deck, such as q3-review.txt, when several exports end up in the same folder.
Frequently Asked Questions
What is the difference between .pptx and legacy .ppt?
.pptx files are ZIP archives of XML parts, so this page opens one and reads the slide parts directly. Legacy .ppt files are a binary format from the nineties and fail the archive check at once. Open the deck in PowerPoint or LibreOffice and save it as .pptx before coming back.
Are the speaker notes included?
Yes, while the include notes box is checked, which is the default. Each slide part has a sibling relationships file that points at a notesSlide part, and the lines from that part print under the slide body. Clear the box for body copy only, and the summary line still reports how many slides carried notes.
What happens to tables and chart text?
Table cells are text runs inside the slide XML, so their wording arrives as ordinary lines in the output. Charts live in separate parts with their own cached numbers, and those parts are not opened, so figures inside a chart graphic are missing. Copy such figures into a text box when the deck has to read completely.
Can it handle a 100-slide deck?
Yes. Slide parts are read one at a time in a loop and the text is assembled in page memory, so a hundred slides finish in a couple of seconds on an ordinary laptop. Pictures are skipped entirely, so decks heavy with photographs take the same path and produce the same text.
Does it keep the slides in the right order?
Yes. Parts are sorted by the digits in their names rather than alphabetically, so slide2 comes before slide10 and a long deck reads the way it was assembled. Plain mode labels each block Slide 1 and Slide 2, while markdown mode puts each block under a ## Slide heading.
Does my presentation get uploaded?
No. The bytes are read into an ArrayBuffer in this tab, JSZip inflates the archive in memory, and the extracted text sits in the page until you copy or download it. Nothing about the file, its name, or its contents travels to a server, which keeps unreleased decks on your machine.
What is this useful for with accessibility and translation prep?
Both workflows start from plain text. Pull the slide copy and notes out, hand the result to a screen reader check, a translator, or a terminology pass, and paste the finished wording back into the deck. Markdown mode gives one heading per slide, which is a convenient shape for review documents and for comparing two revisions.