PowerPoint to text skips words that are pixels
The extractor reads .pptx Open Packaging XML text runs and speaker notes, not .ppt binaries and not words that live inside a screenshot, chart image or logo.
The extractor reads .pptx Open Packaging XML text runs and speaker notes, not .ppt binaries and not words that live inside a screenshot, chart image or logo.
PowerPoint to Text is a ZIP job on your machine. A .pptx is an Open Packaging Convention archive. Slide copy lives in ppt/slides/slideN.xml. Speaker notes live in ppt/notesSlides/notesSlideN.xml. The tool joins <a:t> runs and keeps paragraph breaks so a title does not weld onto the first bullet. Words that were never runs — a screenshot of a dashboard, a chart exported as a picture, a logo with the brand name drawn in pixels — are not in those parts. They will not appear. That is the constraint, not a missing OCR switch.
Text runs and notes, not pixels
Real text on a slide is a run: a string in the XML, with a font, a size, a paragraph. Speaker notes are the same class of object in a different part. Both survive an extract because they are already text. A picture of text is samples. The archive stores the image bytes. It does not store the sentence.
Someone pastes a live title. Someone else drops a PNG of last quarter’s chart. Someone crops a console screenshot onto slide 8. The title extracts. The chart numbers do not. Paying a vision model to “read the slides” is a generate: transcription of pixels, on the credit meter, for a job the XML already finished for real text. If the argument is locked inside pictures, this tool will not hallucinate it back. Re-type the line. Do not prompt an image model to “recover the slide copy.”
Speaker notes are usually the closest thing a deck already contains to a narration script. Include them when you extract. That is the fastest route from a presentation to a voiceover script. The voiceover itself is a later, billed job.
.pptx is XML. .ppt is a binary
They share a name. They are not the same format. A .pptx is a ZIP of XML parts that can be opened and read directly. The older .ppt is a proprietary binary with no such structure. The extractor cannot walk a binary the way it walks slideN.xml. Re-save as .pptx from PowerPoint or Keynote. Password-protected or corrupt archives fail for the same reason: they are not a readable ZIP of those parts.
That is also why the tool is not a slide renderer. DrawingML — themes, masters, fonts, a chart that is still a live chart object — is not this job. Faking a slide image would look like the deck without being the deck. The UI declines that instead of pretending. If you needed the embedded pictures, videos, and audio at original resolution, that is the sibling PowerPoint Media Extractor. Scaling on the slide does not shrink the stored file. The media extractor pulls those bytes. It does not OCR them. This text tool does not replace that extractor, and the extractor does not replace this text tool.
A live chart may contribute labels if those labels are text runs. A PNG chart contributes none. SmartArt with <a:t> runs extracts; a flattened infographic does not. Inspect the file, not the preview. Nothing is uploaded. The archive is read in the tab. Generation on Versely always costs credits; this path never calls a model.
Time the extracted script. Do not OCR the chart
Once the runs and notes are in a buffer, you have words. You do not yet have a duration. Script Timing Estimator is word count divided by a chosen words-per-minute pace. Presets cover careful tutorial delivery through typical voiceover to fast commercial reads. 150 wpm is a typical voiceover target, not a prediction of a specific speaker. Pauses, names, numbers, and a breath before a line all stretch real speech. If you already have a recording, time that rather than the script.
The clip-count table is the same arithmetic against common short-form lengths: duration divided by 8, 15, 30, or 60 seconds, rounded up. It does not know where a thought ends. It is a fit check against a format, not a cut list. Cut on meaning after you know the script is in the right ballpark.
None of that math invents the chart numbers you did not extract. If slide 4 was a screenshot of a funnel, the estimator will time the title and the notes and skip the funnel. That is correct. Pasting the screenshot into a generate and asking for a read-back is how a free extract becomes a billed transcription of pixels you could have re-typed.
Do not upload the deck to a video model and prompt “narrate these slides.” That will not honour speaker notes as a text layer. Do not treat a missing chart as a bug; the numbers were never runs. Do not skip the estimator and guess a 60-second cut from a 400-word notes pane. Count first. The extract is free. Timing is free.
Speech is a later billed job
When the script exists and the duration is in the right band, then open a billed row. AI text to speech is the catalog door for turning that script into a voice. Quote the credit cost before you confirm, which the app always does. TTS meters characters, not ZIP parts. The extract was not that meter.
/cost is the credit-formula hub: per second, per 1,000 characters, per megapixel, per export. None of those formulas apply to unzipping XML in the tab. Mixing them in your head is how a zero-credit job becomes a surprise invoice.
A talking model is a different generate: a mouth, a duration, a video bill. If the deck never needed a face, do not buy one. If a slide’s argument lived only in a screenshot, replace the picture with a text run, re-save .pptx, extract again. Order: readable .pptx → extract runs and notes → time the script → generate speech if you still need audio.
FAQ
Why can it read a .pptx but not a .ppt?
They are different formats that share a name. A .pptx is a ZIP of XML parts. A .ppt is a proprietary binary. Re-save as .pptx from PowerPoint or Keynote.
Is text from images on the slides included?
No. Only real text runs. Words that are part of a picture — a screenshot, a chart exported as an image, a logo — are pixels. They would need optical character recognition, which is a model, which is a generate. This tool does not do that.
Can the timing estimator replace a real recording?
No. It is word count over a WPM preset. 150 wpm is a typical voiceover target, not your speaker. If you already have a recording, time that. The clip-count table is a fit check against 8 / 15 / 30 / 60 seconds, not a cut list.
Does the extractor spend credits?
No. It never calls a model. Credits start when you send the extracted script to text to speech or another generate. Plan that on /cost.