SUBMIT A FILE TYPE CONTACT US SUPPORT ABOUT US

What Is a PPT File? An Older PowerPoint Presentation, and How to Check One That Fails

A PPT file is a PowerPoint presentation in the older binary format, and four readers disagreed on 15 of the 21 damaged copies we made of one. Jump to your question below, or work through it in order.

40 min read Updated October 2026 Checked against sources and tests

What Is a PPT File? The older PowerPoint format, and a second meaning in a handheld game

Short answer

A PPT file is a PowerPoint presentation saved in the older binary format. It stores slides, text, pictures and notes in one compound file. Microsoft's MS-PPT specification covers PowerPoint 97, 2000, 2002 and 2003, and FileInfo names the type Microsoft PowerPoint Presentation (Legacy).

We read 127 PPT files from the Apache POI tests and damaged one of them in 21 ways. The file command named 124 of the 127 as PowerPoint. LibreOffice opened 117 and saved all 117 as PPTX with the same slide count. Our readers disagreed on 15 damaged copies, and 13 kinds of damage came back byte for byte.

To open one, read the open steps. To check one, read the check steps. If your PPT file will not open, begin with the eight causes.

A PPT file is a PowerPoint presentation saved in the older binary format that PowerPoint used from 1987 until PowerPoint 2007 added PPTX, per FileInfo. The ending also names a Sony game texture, so the first bytes show which one you have.

Picture a file called Presentation1.ppt that a colleague emailed and another that belongs to the data of an old PlayStation Portable game. Both end in .ppt. They share no format, no maker and no program.

FileInfo lists one PPT file type. It is the Microsoft PowerPoint Presentation (Legacy), an editable slide show with formatted text, pictures, movies and sound. FileInfo says Microsoft introduced the binary format in 1987 and that it stayed the main save format until PowerPoint 2007 brought PPTX.

File-extensions.org lists two PPT records. They are a Microsoft PowerPoint 97 to 2003 presentation and a Sony PlayStation Portable texture, which it marks obsolete. It also calls the PowerPoint record the Binary Interchange File Format. Microsoft titles its own specification PowerPoint (.ppt) Binary File Format, so we use that name.

We tested the PowerPoint kind and two close relatives. The Apache POI project on GitHub ships 146 PPT files as test data, and we read all of them. We also made one more file, a PPTX with a PPT name.

Where our PPT files come from

Apache POI is a Java project, and HSLF is its component for the binary PowerPoint format. Apache describes HSLF as a pure Java implementation that reads, creates and edits presentations from PowerPoint 97 to 2007.

The test data has 146 PPT files. 19 of them are fuzz test files, which the project builds to break readers. We call the other 127 regular PPT files. They are 9,684 to 3,333,632 bytes long and 40,520,664 bytes in total, and the median is 110,592 bytes.

We damaged one regular file in 21 ways, and every copy changes one thing. We worked on Linux with LibreOffice 24.2 and had no copy of PowerPoint, so we opened no file in PowerPoint.

PPT file facts at a glance

Quick facts about PPT files
Property Value
Meaning FileInfo lists the Microsoft PowerPoint Presentation (Legacy). File-extensions.org adds a Sony PlayStation Portable texture and marks it obsolete.
Ending .ppt. Microsoft Support lists the newer endings .pptx, .pptm, .ppsx and .potx.
First bytes PowerPoint PPT files start with d0 cf 11 e0 a1 b1 1a e1, the signature of a compound file. All 127 of ours do.
Container A compound file in version 3 with sectors of 512 bytes. Microsoft publishes the container as MS-CFB and the presentation as MS-PPT.
Streams 126 of our 127 PPT files contain streams named PowerPoint Document and Current User. 68 also contain a Pictures stream.
Sizes Our 127 regular PPT files are 9,684 to 3,333,632 bytes long, and the median is 110,592 bytes.
Opens with PowerPoint, per FileInfo, plus Keynote, OpenOffice Impress and Google Slides. We tested file, 7-Zip, olefile, catppt, LibreOffice and our script on Linux.
Our tests 127 regular PPT files, 21 damaged copies, 13 repairs checked on 115 files and 117 conversions to PPTX.

Wrong page? A PPTX file starts with PK and is a different format. See how the neighbors differ.

Which Kind of PPT File Do You Have? Four questions, and the first bytes answer the first one

Four questions name the kind of a PPT file. Start with the first bytes. Every PowerPoint file we read starts with d0 cf 11 e0 a1 b1 1a e1, and a PPTX starts with 50 4b 03 04.

Work down the figure and stop at the first yes. We tested the first three rows with files. The last row rests on the page named in it, because we found no sample file.

Decision chart with four questions about the first bytes, the stream names and the program, leading to a PowerPoint 97 to 2003 presentation, a PPTX file with a PPT name, a PowerPoint 4.0 presentation and a Sony PSP texture file.
Figure 1. Four questions that name the kind of a PPT file. The ending names none of them.

The four kinds in detail

Kinds of PPT files and the clues that name them
Kind Clue and source
PowerPoint presentation The first 8 bytes are the compound file signature and a stream is named PowerPoint Document. Microsoft says MS-PPT covers PowerPoint 97 to 2003. Tested on 126 regular PPT files.
PPTX with a PPT name The first 4 bytes are 50 4b 03 04. The file command printed Microsoft PowerPoint 2007+, 7-Zip listed a ZIP package and LibreOffice opened it. Tested on one file we made.
PowerPoint 4.0 A compound file with a stream named PP40 and none named PowerPoint Document. LibreOffice opened pp40only.ppt and made 87 pages. Tested on one file.
PSP texture File-extensions.org lists a Sony PlayStation Portable texture that a video game stores, and marks it obsolete. Source only.

Start with the first bytes

Open the PPT file in a hex viewer or use xxd -l 16. If the first 8 bytes read d0 cf 11 e0 a1 b1 1a e1, the file is compound. If they read 50 4b 03 04, it is a ZIP package and so a PPTX.

The 8 byte signature also starts other compound files, like old Word and Excel files and MSG files. So it names the container and not the presentation. The file command goes further and printed application/vnd.ms-powerpoint for 124 of our 127 regular PPT files.

Three regular PPT files got another answer. Two got application/x-ole-storage and one encrypted file got application/encrypted. So the file command is a good first reader, and it is not a final one.

First bytes first Eight bytes name a compound file and four bytes name a ZIP package.
Stream names second A stream named PowerPoint Document points to PowerPoint 97 or later, and PP40 points to version 4.0.
Program third A file from a PlayStation Portable game points to the texture kind. We found no sample of it.
The ending last Several records share it, so the ending proves nothing.

Not sure your PPT file is a PowerPoint presentation at all? Check it with our script.

What Is Inside a PPT File? A container, a Current User stream and a document stream

PowerPoint PPT files are compound files with a 512 byte header, one directory, the Current User stream and the PowerPoint Document stream. Our example is 194,048 bytes long and has 5 saved edits.

We read PPT files because Microsoft publishes the layout and the Apache POI project ships examples, so every value can be checked. Two short commands show the first 16 bytes and name the type. We copied the example to a short name, example.ppt.

The first 16 bytes and the type of one PPT file
xxd -l 16 example.ppt
00000000: d0cf 11e0 a1b1 1ae1 0000 0000 0000 0000  ................
file -b example.ppt | cut -d, -f1-3
Composite Document File V2 Document, Little Endian, Os: Windows
file -b --mime-type example.ppt
application/vnd.ms-powerpoint

Bytes 0 to 7, d0 cf 11 e0 a1 b1 1a e1, are the signature of a compound file. The file command prints a longer line that adds the title, the author and the program stored in the file. We cut it to three fields.

The last line prints application/vnd.ms-powerpoint. IANA publishes a template page for that type. It is an email from 1996 that names the type Microsoft Powerpoint and calls it a generic label for the program. We could not read the full registry table, so we do not state its status.

Diagram of one PowerPoint PPT file of 194,048 bytes in four blocks: a 512 byte header that starts with d0 cf 11 e0 a1 b1 1a e1, a directory of 6 entries, a Current User stream of 47 bytes that points to the newest edit, and a PowerPoint Document stream of 170,226 bytes with 5 edit records, with three rules about the header, the pointer and saving by appending.
Figure 2. One PPT file from our tests, copied to example.ppt. The blocks are not drawn to scale.

The header, byte by byte

Bytes 24 and 25 give the minor version, 62, and bytes 26 and 27 give the major version, 3. Bytes 28 and 29, fe ff, mark low byte first order. Bytes 30 and 31 read 9, so a sector is 2 to the power of 9, or 512 bytes.

Bytes 44 to 47 give the count of FAT sectors, which is 3 here. Bytes 48 to 51 give the first directory sector, which is 374. Bytes 56 to 59 give the mini stream cutoff, 4,096. Streams below that size live in mini sectors of 64 bytes.

All 127 regular PPT files share the same sector size and cutoff. The minor version is 62 in 115 files and 59 in 12. Other values point to a version 4 file, which the container specification allows, or to damage.

The Current User stream

The stream named Current User is short. Ours has 47 bytes. Microsoft calls its one record the CurrentUserAtom, and it stores the last user name and the location of the most recent edit.

Bytes 12 to 15 are the header token, 5f c0 91 e3, which reads as 0xE391C05F. Microsoft says that value means the file should not be encrypted and 0xF3D1C4DF means it must be. Bytes 16 to 19 give the offset 170,190, counted from the start of the PowerPoint Document stream.

In 119 regular PPT files the token is 0xE391C05F, and in 5 it is 0xF3D1C4DF. The stream stores the last user name in clear text. Ours has 15 characters, so PPT files can show who saved them last.

The PowerPoint Document stream

Microsoft describes this stream as required and says new top level records, called a user edit, can be appended to it. Older records can then become obsolete.

Every record starts with an 8 byte header. A low nibble of 0xF in the first byte marks a container. Bytes 2 and 3 give the record type and bytes 4 to 7 give the length, per Apache POI.

The offset 170,190 lands on 00 00 f5 0f 1c 00 00 00, a record of type 0x0FF5 and length 28. That record is a UserEditAtom. Microsoft defines its offsetLastEdit field as the offset of the previous edit, with 0 meaning none. Ours stores 164,105, and following the links gave 5 edit records.

Across 118 regular PPT files the links read cleanly. 96 files have one edit record, 22 have two or more and 47261.ppt has 22. So PPT files can grow by adding to the stream, and older edits can stay inside them.

The parts of a PPT file

Parts of PPT files
Part What it stores and what we saw
Header 512 bytes with the signature, version 3, the sector size and the cutoff. The values were the same in all 127 regular PPT files.
Directory A tree of storages and streams. Our example has the root and 5 streams.
Current User The token, the offset of the newest edit and the last user name. 126 regular PPT files have it.
PowerPoint Document The record tree with slides, notes, masters and edit records. Our example has 170,226 bytes and 51 records at the top level.
Pictures Image data that the slides use. 68 regular PPT files have this stream, and ours has 15,081 bytes.
Summary streams The title, the author and the program name that the file command prints. 123 regular PPT files have SummaryInformation and 125 have DocumentSummaryInformation.

What the sources say

Microsoft publishes the PPT layout as MS-PPT, and its revision table shows revision 10.1 from 12 November 2024. It says the format is the binary format of PowerPoint 97, 2000, 2002 and Office PowerPoint 2003.

The container comes from a second document, MS-CFB on Microsoft Learn. We used both documents to name the fields, and every number on this page comes from our own files.

The map is small. Our script reads the header, the Current User stream and the newest edit record. It does not read slides, so damage inside a slide can pass it, as the 21 copies show.

What Did We Find in 127 PPT Files? Six readers, and they did not agree

We read 127 PPT files with six readers. The file command named 124, 7-Zip opened 126, olefile opened all 127, catppt returned text for 108 and LibreOffice opened 117. Our 24 line script passed 115 files, with 9 warnings and 3 flags.

All 127 files come from the Apache POI test data, so this is a study of one project and not a survey of every PPT file. We left out 19 fuzz test files, which we cover below, and we opened no file in PowerPoint.

Readers were file 5.45, 7-Zip 23.01, olefile 0.47, catppt from catdoc 0.95, LibreOffice 24.2.7.2 and our own script on Python 3.13, all on Linux. A reader passed a PPT file when it returned data without an error.

127 regular PPT files read
6 readers on every file
21 damaged copies of one file
17 copies our script flagged or warned on
Bar chart of 127 PPT files by size, from 9,684 to 3,333,632 bytes, next to a grid showing how the file command, 7-Zip, olefile, catppt, LibreOffice and our check script did on all 127, and four facts measured in the files.
Figure 3. 127 PPT files, six readers and four measured facts.
What six readers found in 127 PPT files
Test Result
The file command Printed application/vnd.ms-powerpoint for 124 of 127. Two files got application/x-ole-storage and one encrypted file got application/encrypted. It printed Composite Document File V2 for 126 files and CDFV2 Encrypted for the other.
7-Zip Opened 126 files as a Compound archive and listed the raw streams. It refused one regular file, which also ends in a tail of 468 bytes that fills no sector. We did not find the cause.
olefile Opened all 127 files and listed their streams, including the 5 encrypted files.
catppt Returned text for 108 files and nothing for 19. Five of the 19 are the encrypted files, and 14 are other files, like empty.ppt.
LibreOffice Saved 117 files as PDF. It refused 10 with the message source file could not be loaded. Five are the encrypted files, and 5 pass our script. We did not find out why.
Our script Printed OK for 115 files, WARN for 9 and FLAG for 3. The warnings are 5 encrypted files and 4 files with a tail that does not fill a sector. LibreOffice opened all 3 flagged files.
Sizes 9,684 to 3,333,632 bytes, with a median of 110,592 and a total of 40,520,664.
Edit records 22 of 118 files store more than one edit record. The most is 22, in 47261.ppt.

One container and 127 PPT files

Every regular PPT file starts with the compound file signature and uses version 3. All 127 use sectors of 512 bytes, mini sectors of 64 bytes and a mini stream cutoff of 4,096. The minor version is 62 in 115 files and 59 in 12.

126 files contain the PowerPoint Document and Current User streams, and 68 contain the Pictures stream. The one file without that stream is pp40only.ppt, which has a stream named PP40. 123 files have a SummaryInformation stream.

The file command prints the program name stored in the PPT file. It printed Microsoft Office PowerPoint for 47 files, Microsoft PowerPoint for 46, PowerPoint 4.0 for 5, Macintosh PowerPoint for 4 and PowerPoint 7.0 for 3. The other 22 files store no name.

Where readers split on regular PPT files

The 5 encrypted files and 5 other files split the readers. LibreOffice refused all 10. 7-Zip and olefile listed the streams of the 5 encrypted files, because the container is intact, and catppt returned nothing for them.

Three regular PPT files that LibreOffice opened got a FLAG from our script. PPT95.ppt has a Current User stream of 15 bytes. bug56240.ppt has a Current User record of type 0x0000 and an extra storage named PP97_DUALSTORAGE. pp40only.ppt has no PowerPoint Document stream.

The 19 fuzz test files

The 19 fuzz test PPT files behave in another way. The file command named 13 as compound files, 7-Zip opened 8 and olefile opened 18. catppt returned text for 2 and LibreOffice opened 3. Our script printed OK for 3, WARN for 2 and FLAG for 14.

Macros, encryption and pictures

We looked for VBA code with olevba 0.60.2 from oletools. It found VBA code in 3 regular PPT files, 59302.ppt, SimpleMacro.ppt and WithMacros.ppt. 5 files use the encrypted token, and 68 contain a Pictures stream.

Readers differ on healthy PPT files The file command, 7-Zip, catppt and LibreOffice all missed files that olefile opened.
A header check is cheap Our 24 line script reads the header, the Current User stream and the newest edit, and it passed 115 files.
Older files trip checks Three PPT files from older PowerPoint versions got a FLAG and still opened in LibreOffice.
Not tested in PowerPoint We opened no file in PowerPoint, so a pass shows a sound container and not slides that display.

Read the study with care. It shows what six readers do with 127 PPT files from one project. Files from other programs and versions can differ, and we had no copy of PowerPoint to save our own.

What Happens When a PPT File Is Damaged? 21 broken copies, and the readers disagreed on 15

We damaged one PPT file in 21 ways. The four readers that return data disagreed on 15 copies, and none of them matched the original on 10. Our script flagged or warned on 17, and 13 kinds of damage came back byte for byte.

The 21 copies come in three groups of 7. Group A changes the container header. Group B changes the length of the PPT file or how it was moved. Group C changes a pointer, a stream name or the data. Every copy changes one thing in example.ppt, which is 194,048 bytes long.

We asked three questions about every copy. What did every reader return, compared with its answer on the original? Did our script flag it? And did one command restore the original, checked by SHA-256 on the 115 regular PPT files that our script passes?

Grid of 21 damaged copies of one PPT file against the file command, 7-Zip, olefile, catppt, LibreOffice, our check script and a repair test over 115 files. The readers disagreed on 15 copies, our script flagged or warned on 17 and repairs restored 13 kinds of damage.
Figure 4. 21 damaged copies, five readers, our script and a repair test. An amber band marks a copy our script passed that a reader still refused or read differently.

Four copies, four different answers

A2 changes the byte order mark of the PPT file. 7-Zip refused it, while olefile, catppt and LibreOffice returned the original data. B1 cuts the last byte. 7-Zip and olefile returned different data, while catppt and LibreOffice matched the original.

C2 raises the edit offset by one. catppt matched the original, 7-Zip and olefile returned different data and LibreOffice refused it. A4 sets the version to 5. 7-Zip and LibreOffice refused it, and olefile and catppt matched.

So no reader works as judge of the others. A refusal warns you that something is wrong. Any reader that returns different data says nothing, and 7-Zip or olefile did that on 12 of the 21 copies. Both list raw streams, so a changed byte always shows.

The two readers that return text behaved better. catppt and LibreOffice never returned different text. On every copy they matched the original or refused it.

The 17 copies our script flagged or warned on

A1 changes a byte of the signature and B6 removes the first byte, so neither starts with the signature. The script names that for both. A2 and A4 change the byte order mark and the version, and the script names both as one header problem.

A3, B2 and B3 break the directory, so the script prints a directory error. A5, B5, C5 and C7 leave the container open but hide the PowerPoint Document stream. C4 renames Current User, and the script reports that stream missing.

C2 moves the edit offset by one and the script reports no edit record at that offset. C6 zeroes a FAT sector and gets the same message. B7 cuts the last sector, and the script says Current User is too short.

C3 marks the file encrypted and B1 leaves a tail that fills no sector, so both get only a warning. That warning is weak, because 4 healthy regular PPT files have a tail too.

The 4 copies our script passed

A6 sets the FAT sector count to 0 and A7 sets the mini stream cutoff to 0. B4 adds 512 zero bytes and C1 flips one bit. All four keep a header, a Current User stream and an edit record that the script accepts.

B4 is harmless, because every reader returned the data of the original PPT file. A6 reads as the original in the file command and olefile, but 7-Zip, catppt and LibreOffice refused it. A7 made LibreOffice refuse it and 7-Zip print different data. C1 made 7-Zip and olefile return different data.

A pass means the container header is sound and not that the presentation opens. Three of the four passed copies still failed or differed in at least one reader.

Repairs that worked

We wrote one command per kind of damage, 13 in all, and tested it on the 115 regular PPT files that our script passes. A hash matched the original for every kind. Twelve kinds worked on all 115 files.

A5 worked on 107 of 107 PPT files. In the other 8 files the directory already starts at sector 0, so the damage changes nothing. Our first version took the first match and failed on 16 of the 107, because older saves leave a copy of the directory behind.

C2 writes back the offset of the last edit record before the wrong one. C3 writes the not encrypted token back, so use it only when you know the file was not encrypted. B5 mimics a text mode copy.

Every repair fits a case where one thing is wrong. Damage in the wild changes many things at once, so a repair that works here can fail there.

What no command repaired

B1, B2, B3 and B7 cut the PPT file. C1 flips a bit, C6 zeroes a FAT sector and C7 zeroes half of the file. Cut and zeroed data is gone, and no header brings it back. We tested no repair for those 7 copies. B4 needs none.

Readers disagree The four readers that return data gave different answers on 15 of 21 copies.
Containers can be rebuilt 13 kinds of header, pointer and name damage came back byte for byte.
Passed is not intact Three copies passed our script and still failed or differed in at least one reader.
Lost bytes stay lost No command restored a cut or a zeroed body.

Read the grid with care. Every copy changes one thing in one PPT file. Damage in the wild changes many things at once. We opened no copy in PowerPoint, and our repairs rely on rules that fit these 115 regular PPT files.

What Does Our Expert Say About PPT Files? A note from Neeraj Singh on trusting one reader

Compare two readers before you trust one. Our four readers disagreed on 15 of 21 damaged copies, so one reader that opens a PPT file proves little.

Neeraj Singh

Expert insight

“A PPT file is a container, and our readers gave different answers on the same damaged copy. In our test only one of 21 copies read the same in every tool. Compare two readers, keep the original and write down its hash before you repair anything.”

Neeraj Singh Manager, Tech Support & Operations 19+ years fixing Windows and system errors

Why one reader is not enough

Raw readers can return different data without an error. 7-Zip or olefile did that on 12 of our 21 copies, and neither printed a warning. A refusal at least warns you that something is wrong.

We had no copy of PowerPoint. If PowerPoint opens your PPT file, treat that as the best test. Use the readers on this page when it does not. catppt and LibreOffice matched or refused on every copy, so they make better second readers than a raw lister.

Copy your PPT file before you repair it. Work on the copy and keep the original untouched. Write down its SHA-256 hash first, so you can show later that the copy came back as it was.

How Do You Open a PPT File? PowerPoint first, then free programs and Linux tools

FileInfo names PowerPoint as the best program for a PPT file, and lists Keynote, OpenOffice Impress and Google Slides too. We opened none in PowerPoint, and LibreOffice opened 117 of our 127 regular PPT files on Linux.

The table lists what the sources name and what we tested. Rows with version numbers are tools we tested. Every other row rests on the page named in it, and we tested none of those.

Programs that handle PPT files
Program What it does
Microsoft PowerPoint FileInfo says PowerPoint is the best application for PPT files, because it fully supports the formatting. It lists PowerPoint 365 for Windows and Mac and apps for iOS and Android. We did not test it.
PowerPoint Viewer File-extensions.org lists Microsoft PowerPoint Viewer and Documents To Go for Windows, and Microsoft Office Mobile for Android, as viewers. We tested none of them.
Keynote and Preview FileInfo lists Apple Keynote and Apple Preview for Mac. File-extensions.org lists Keynote for Mac and iOS. We tested none of them.
OpenOffice Impress Both sources list it for Windows, Mac and Linux. We did not test it.
Google Slides FileInfo says Google Slides lets you upload a PPT file to view, edit, save or convert it. We did not test it, and a web viewer receives your file.
LibreOffice Version 24.2.7.2 from the command line. It saved 117 of 127 regular PPT files as PDF and as PPTX.
7-Zip Version 23.01. It opened 126 of 127 regular PPT files as a Compound archive and listed their streams. It shows raw parts and not slides.
olefile Version 0.47. A Python library that opened all 127 regular PPT files and listed their streams.
catppt Version 0.95 from the catdoc package. A text extractor that returned text for 108 of 127 regular PPT files.
The file command Version 5.45. It printed the PowerPoint type for 124 of 127 regular PPT files.

Open a PPT file on Linux

Three ways to look at a PPT file
file -b example.ppt | cut -d, -f1-3
Composite Document File V2 Document, Little Endian, Os: Windows
7z l example.ppt (abridged)
452          512  [5]SummaryInformation
15081        15360  Pictures
47           64  Current User
1708         1728  [5]DocumentSummaryInformation
170226       170496  PowerPoint Document
python3 -c "import olefile; print(olefile.OleFileIO('example.ppt').get_metadata().title.decode())"
ROMANCE: AN ANALYSIS

The file command names the type, and 7-Zip lists the raw streams. The olefile library prints the title from the summary stream, which shows that a reader understands part of the file and not only the container.

Open it in LibreOffice without a window

LibreOffice reads PPT files and writes PDF or PPTX from the command line. We used the same two commands on every regular file. The LibreOffice site has the program, and the second command counts slides with python-pptx.

Two commands for LibreOffice
soffice --headless --convert-to pdf example.ppt
soffice --headless --convert-to pptx example.ppt

What to use for every kind

PowerPoint presentations. If PowerPoint is installed, open the PPT file there. Without it, use a program from the table, or read the streams with olefile as shown above.

PPTX with a PPT name. Rename the file to .pptx and open it in a presentation program. LibreOffice opened the one we made without a rename.

PSP textures. We found no sample and no modern program. Read the first bytes and the source page first.

Install programs from their makers. Take PowerPoint from Microsoft and other programs from their own pages. A free site that offers to open any PPT file receives your slides, so try the steps on this page first.

How Do You Check a PPT File? Six steps and a script of 24 lines

Check a PPT file in six steps. Read the first 16 bytes, name the type, use a script and compare two readers. Our 24 line script passed 115 of 127 regular PPT files and flagged or warned on 17 of 21 damaged copies.

First reads need no Python. The xxd command prints bytes, and wc prints the length. In a healthy compound file the length minus 512 divides by 512, and 194,048 does.

Steps 2 and 4 on example.ppt
xxd -l 16 example.ppt
00000000: d0cf 11e0 a1b1 1ae1 0000 0000 0000 0000  ................
wc -c < example.ppt
194048

Read the first line from the left. Bytes 0 to 7 are the signature. The length, 194,048 minus 512, leaves 193,536, which is 378 sectors of 512 bytes. Four of our regular PPT files end in a tail, so a remainder is a warning and not proof of damage.

Check PPT files with Python

The script reads the signature, the version and the byte order of a PPT file. It opens the container with olefile and looks for the PowerPoint Document and Current User streams. It reads the token and the offset from Current User.

It then checks that a record of type 0x0FF5 starts at that offset in the PowerPoint Document stream. It prints the tail check, then OK, WARN or FLAG. It never changes a file.

Check the header, the pointer and the edit record of a PPT file
import sys, struct, olefile
def peek(path):
    b = open(path, 'rb').read()
    if b[:8] != bytes.fromhex('d0cf11e0a1b11ae1'): return 'FLAG', 'start is not D0CF11E0A1B11AE1'
    major, bo, ss = struct.unpack('<HHH', b[26:32])
    if major not in (3, 4) or bo != 0xFFFE: return 'FLAG', 'CFB version or byte order'
    tail = (len(b) - 512) % (1 << ss)
    o = olefile.OleFileIO(b)
    if not o.exists('PowerPoint Document'): return 'FLAG', 'no PowerPoint Document stream'
    if not o.exists('Current User'): return 'FLAG', 'no Current User stream'
    cu = o.openstream('Current User').read()
    if len(cu) < 20: return 'FLAG', 'Current User too short'
    rtype, rlen, size, token, off = struct.unpack('<2xHIIII', cu[:20])
    if rtype != 0xFF6: return 'FLAG', 'Current User record type'
    if token not in (0xE391C05F, 0xF3D1C4DF): return 'FLAG', 'Current User token'
    d = o.openstream('PowerPoint Document').read()
    if off + 8 > len(d): return 'FLAG', 'edit offset past the stream'
    if struct.unpack('<H', d[off + 2:off + 4])[0] != 0xFF5: return 'FLAG', 'no edit record at offset'
    enc = token == 0xF3D1C4DF
    return ('WARN' if tail or enc else 'OK'), '%s, stream %d bytes, %d bytes%s' % ('encrypted' if enc else 'not encrypted', len(d), len(b), ', %d byte tail' % tail if tail else '')
for f in sys.argv[1:]:
    try: r, why = peek(f)
    except Exception as e: r, why = 'FLAG', 'directory: ' + type(e).__name__
    print(r, why, f)

Here is what it printed for four healthy PPT files. They are an empty presentation, a small one, our example and a large file of 3,333,632 bytes.

Four healthy PPT files
python3 ppt_peek.py empty.ppt bullets.ppt example.ppt customGeo.ppt
OK not encrypted, stream 3233 bytes, 10240 bytes empty.ppt
OK not encrypted, stream 12807 bytes, 18944 bytes bullets.ppt
OK not encrypted, stream 170226 bytes, 194048 bytes example.ppt
OK not encrypted, stream 965630 bytes, 3333632 bytes customGeo.ppt

Every answer starts with OK, WARN or FLAG. A healthy answer then says whether the file is encrypted and gives the stream size, the file size and the file name.

Five flagged copies and one that passes
python3 ppt_peek.py A1_signature_changed.ppt A3_sector_shift_12.ppt B2_cut_to_half.ppt B5_crlf_text_mode.ppt C1_bit_flip.ppt C2_edit_offset_plus1.ppt
FLAG start is not D0CF11E0A1B11AE1 A1_signature_changed.ppt
FLAG directory: OleFileError A3_sector_shift_12.ppt
FLAG directory: OleFileError B2_cut_to_half.ppt
FLAG no PowerPoint Document stream B5_crlf_text_mode.ppt
OK not encrypted, stream 170226 bytes, 194048 bytes C1_bit_flip.ppt
FLAG no edit record at offset C2_edit_offset_plus1.ppt

A1 does not start with the signature. A3 and B2 give a directory error. B5 shows no PowerPoint Document stream, and C2 stores an offset that no longer lands on an edit record. C1 passes, because its flipped bit lies outside the parts the script reads.

What the script found in our PPT files

Our script on healthy and damaged PPT files
Result Cases
Passed (115 regular PPT files) The signature, version and byte order are right, both streams exist, the token is valid and a record of type 0x0FF5 starts at the stored offset.
Warned (9 regular PPT files, B1, C3) Five files use the encrypted token and four end in a tail that does not fill a sector. The cut B1 and the encrypted token C3 get the same warnings.
Flagged but healthy (3 regular PPT files) PPT95.ppt has a short Current User stream, bug56240.ppt has a record of type 0x0000 and pp40only.ppt has no PowerPoint Document stream. LibreOffice opened all three.
Start is not the signature (A1, B6) A changed byte in the signature or a lost first byte. Both flagged.
Header fields (A2, A3, A4) A2 and A4 print CFB version or byte order. A3 prints a directory error.
Missing streams (A5, B5, C4, C5, C7) The container opens and the script cannot find Current User or PowerPoint Document.
Cuts and pointers (B2, B3, B7, C2, C6) B2 and B3 print a directory error. B7 prints a short Current User stream. C2 and C6 print that no edit record starts at the offset.
Passed (A6, A7, B4, C1) The header, the pointer and the edit record are sound, so the script passes them. B4 is harmless. The other three fail or differ in at least one reader.

The script has limits. It does not read slides, so it passes A6, A7, B4 and C1. It flags 3 healthy older PPT files, so a flag is a reason to look closer and not a verdict. It repairs nothing. The repair commands fix the 13 kinds of damage we tested.

Check order for any PPT file

  1. Copy your PPT file, write its SHA256 hash and work on the copy.
  2. Read the first 16 bytes. The signature d0 cf 11 e0 a1 b1 1a e1 means a compound file, and 50 4b 03 04 means a ZIP package. See the list of kinds.
  3. Name the type with the file command. application/vnd.ms-powerpoint is the answer you want. A longer name like Composite Document File V2 Document means a compound file of another kind or one it cannot read inside.
  4. Use our script. The first word is OK, WARN or FLAG, and a flag names the part where the PPT file stops making sense.
  5. List the streams with 7-Zip or olefile and extract the text with catppt or LibreOffice. Compare at least two readers, because one reader can return wrong data without an error.
  6. Ask the sender for the PPT file again or for its hash. Only PowerPoint shows whether a presentation displays, and we tested none.

Is a PPT File Safe to Open? Reading is safe, and macros need care

Reading the bytes of a PPT file starts nothing, so it is safe. Treat macros with care, because PPT files can contain them and 3 of our 127 regular PPT files do. A PPTX cannot.

We started no macro. Our readers only read bytes, and the files are public test data from the Apache POI project. We scanned none for malware, but we did look for VBA code with olevba from oletools.

Microsoft Support lists the Open XML presentation endings and says files with an x ending cannot contain macros. PPT files have no x, so they can contain them. The same page lists .pptm for a presentation with macros.

Reading headers and pointers Safe. Our script, xxd and the file command only read bytes.
Writing down hashes Safe. A hash shows which copy you have.
Opening a presentation with macros PPT files can contain VBA macros. 3 of our 127 regular PPT files do. Keep macros off until you trust the sender.
Showing slides in PowerPoint PowerPoint shows the slides as the sender wrote them, with links and media. Treat the file like any attachment from that sender.
Uploading to a free converter The site gets your slides. Use a program you installed from its maker.
Trusting the ending Another format shares the ending, so a name ending in .ppt proves nothing about what a file does.

Encrypted PPT files

5 of our regular PPT files use the encrypted token, which Microsoft says means the file must be encrypted. 7-Zip and olefile listed all 5, because the container is intact. LibreOffice refused all 5 and catppt returned nothing. We tried no password.

A name inside the file

The Current User stream stores the name of the last user in clear text. The SummaryInformation stream stores an author and a last saved by field, which the file command prints. Check both before you share a PPT file, because the names travel with it.

PPTX files with a PPT name

Renamed PPTX files are ZIP packages. 7-Zip listed ours as one, and our script flagged the signature. Read the first 4 bytes before you trust either ending.

A presentation from a stranger

Open the PPT file in a viewer with macros off. Check the sender and the file name before you click any link in the slides.

Not sure? Check it first. Copy the hash, read the first bytes with our check steps and ask the sender where the PPT file came from. Open it last.

Why Will Your PPT File Not Open? Eight causes, and what to do about every one

Most PPT files that will not open fail for one of eight reasons. Read the first bytes, name the type and use the script. Our script flagged or warned on 17 of 21 damaged copies, and 13 kinds of damage came back byte for byte.

We damaged one PPT file in 21 ways and tested repairs on every healthy PPT file where the damage changes bytes. The table groups what we saw into eight causes.

Every row says what happens to your PPT file and what to try. Fixes work on copies, and none changes the original. We opened no repaired file in PowerPoint, so a repaired container shows only that the container is sound.

Eight causes of PPT files that will not open
Cause Result and fix
The wrong kind of file (1) The file does not start with d0 cf 11 e0 a1 b1 1a e1. Renamed PPTX files start with 50 4b 03 04, and our script flagged the start of the one we made. Fix: Find the kind in the kind chart. Rename a ZIP package to .pptx and open it in a presentation program.
A signature that is changed or lost (2) A1 changes the first byte of the signature and B6 loses it. Our script flagged both. Fix: Write d0 cf 11 e0 a1 b1 1a e1 over bytes 0 to 7, or put the lost byte d0 back in front. Both came back byte for byte on all 115 files.
A header field that is wrong (3) A2 changes the byte order, A3 the sector size, A4 the version, A5 the first directory sector, A6 the FAT sector count and A7 the cutoff. Fix: Write fe ff at bytes 28 and 29, 9 at bytes 30 and 31 and 3 at bytes 26 and 27. Find the root entry for A5, count the FAT sectors for A6 and write 4,096 at bytes 56 to 59 for A7. All six came back byte for byte.
A copy made in text mode (4) B5 replaces every newline byte 0a with 0d 0a, so the PPT file grows. Fix: Replace every 0d 0a with 0a. It worked on all 115 files. Use binary mode for transfers from now on.
A pointer or a token that is wrong (5) C2 adds one to the edit offset in Current User, so it no longer lands on an edit record. C3 sets the token to the encrypted value. Fix: For C2, write back the offset of the last edit record before the wrong one. For C3, write 5f c0 91 e3 only if you know the file was not encrypted. Five of our regular PPT files use the encrypted token on purpose, so leave those alone.
A stream name that is changed (6) C4 renames Current User and C5 renames PowerPoint Document, so readers cannot find them. Fix: Write the first letters back, C for Current User and P for PowerPoint Document. Both came back on all 115 files.
A file that is cut (7) B1, B2, B3 and B7 cut the PPT file. Our script warned on B1 and flagged the other three. Fix: Ask for a new copy. We tested no repair. B4 adds zero bytes at the end and needs none.
Data that is zeroed or flipped (8) C1 flips one bit, C6 zeroes one FAT sector and C7 zeroes half of the PPT file. Our script flagged C6 and C7 and passed C1. Fix: Ask for a fresh copy or backup. We tested no repair.

Repairs we tested

One short script covers all 13 fixes. It takes the damaged file, one kind code and a name for the new file. The commands after it are the ones we used, with short file names.

ppt_fix.py, 34 lines
import struct, olefile
SIG = bytes.fromhex('d0cf11e0a1b11ae1')
def pos(b, name):
    o = olefile.OleFileIO(bytes(b)); e = o.direntries[o._find(name)]; chain = []; s = o.root.isectStart
    while s < 0xFFFFFFFA: chain.append(s); s = o.fat[s]
    if e.size >= 4096: return (e.isectStart + 1) * 512
    m = e.isectStart * 64; return (chain[m // 512] + 1) * 512 + m % 512
def fix(b, how):
    b = bytearray(b)
    if how == 'A1': b[:8] = SIG
    elif how == 'A2': b[28:30] = b'\xfe\xff'
    elif how == 'A3': b[30:32] = struct.pack('<H', 9 if b[26] == 3 else 12)
    elif how == 'A4': b[26:28] = struct.pack('<H', 3 if b[30] == 9 else 4)
    elif how == 'A5':
        cands = [s for s in range((len(b) - 512) // 512) if b[512 + s * 512 + 66] == 5 and 2 <= struct.unpack('<H', b[512 + s * 512 + 64:512 + s * 512 + 66])[0] <= 64]
        for s in reversed(cands):
            t = bytearray(b); t[48:52] = struct.pack('<I', s)
            try:
                if olefile.OleFileIO(bytes(t)).exists('PowerPoint Document'): b = t; break
            except Exception: pass
    elif how == 'A6': b[44:48] = struct.pack('<I', sum(s < 0xFFFFFFFA for s in struct.unpack('<109I', b[76:512])))
    elif how == 'A7': b[56:60] = struct.pack('<I', 4096)
    elif how == 'B5': b = bytearray(bytes(b).replace(b'\r\n', b'\n'))
    elif how == 'B6': b = bytearray(b'\xd0') + b
    elif how == 'C2':
        o = olefile.OleFileIO(bytes(b)); d = o.openstream('PowerPoint Document').read(); p = pos(b, 'Current User')
        off = struct.unpack('<I', b[p + 16:p + 20])[0]; b[p + 16:p + 20] = struct.pack('<I', d.rfind(b'\x00\x00\xf5\x0f', 0, off + 4))
    elif how == 'C3': p = pos(b, 'Current User'); b[p + 12:p + 16] = struct.pack('<I', 0xE391C05F)
    elif how == 'C4': b = bytearray(bytes(b).replace('Xurrent User'.encode('utf-16le'), 'Current User'.encode('utf-16le')))
    elif how == 'C5': b = bytearray(bytes(b).replace('XowerPoint Document'.encode('utf-16le'), 'PowerPoint Document'.encode('utf-16le')))
    return bytes(b)
if __name__ == '__main__':
    import sys
    open(sys.argv[3], 'wb').write(fix(open(sys.argv[1], 'rb').read(), sys.argv[2]))
Commands for 13 kinds of damage
# 2  signature changed (A1), first byte lost (B6)
python3 ppt_fix.py A1_signature_changed.ppt A1 A1_fixed.ppt
python3 ppt_fix.py B6_first_byte_lost.ppt B6 B6_fixed.ppt
# 3  header fields (A2 to A7 work the same way)
python3 ppt_fix.py A5_dir_sector_0.ppt A5 A5_fixed.ppt
# 4  text mode copy (B5)
python3 ppt_fix.py B5_crlf_text_mode.ppt B5 B5_fixed.ppt
# 5  edit offset wrong (C2), token wrong (C3)
python3 ppt_fix.py C2_edit_offset_plus1.ppt C2 C2_fixed.ppt
# 6  stream names changed (C4, C5)
python3 ppt_fix.py C4_current_user_renamed.ppt C4 C4_fixed.ppt
# compare with the original
sha256sum example.ppt A1_fixed.ppt B5_fixed.ppt C2_fixed.ppt | cut -c1-12
b20e64554aed
b20e64554aed
b20e64554aed
b20e64554aed

The last lines compare hashes. The first 12 characters match for the original and the three repaired files, so the repaired files equal the original. Apply only the fix that matches the flag.

Check PPT files that will not open, step by step

We tested the steps on Python 3.13 and Linux. We opened no files in PowerPoint, and the steps keep the original untouched at every point.

  1. Copy your PPT file, write its SHA256 hash and work on the copy.
  2. Name the type with the file command and the four kind questions. Only PowerPoint files start with the compound file signature and contain a stream named PowerPoint Document.
  3. Use our check script. A flag names the part where your PPT file stops making sense.
  4. Match the flag to a cause in the table above and try its fix on the copy.
  5. Compare the SHA256 hash of the result with the source if you can get one, and open the result in two readers.
  6. If one fix fails, do not stack another on top. Go back to the copy and try the next cause.
  7. Open the repaired file in PowerPoint. We tested none, so a repaired container is no proof that the slides display.

What to send a helper

Short messages get faster answers. Include the details below and add the script output. Its first word gives OK, WARN or FLAG.

A message that gets an answer
Subject: PPT file will not open
File: name, size in bytes and SHA256 hash
Kind: the output of the file command
Check: the output of ppt_peek.py
Program: name, version and the exact words of the error
Source: who sent the PPT file and when it was copied

What no step can fix

Cut files No command restored B1, B2, B3 or B7. Ask for a new copy or look for a backup.
Flipped data C1 flips one bit and passed our script. Only the source or a hash shows the damage.
Readers that disagree If two readers disagree, trust neither. Try a third reader, then ask for a new copy.
Encrypted files Five of our regular PPT files use the encrypted token, and LibreOffice refused all five. Ask the sender for the password.
Files of another kind Read the first bytes and open them as the kind they are.
Wrong endings A file named .ppt can belong to any kind in the chart. Name the kind first.

Do not try online repair sites. Sites that offer to fix or convert any PPT file receive your upload. A presentation can contain private plans and figures. Try the steps above on a copy first.

Can You Convert a PPT File? Yes, to PPTX and PDF, and the slide count matched

LibreOffice converted 117 of 127 regular PPT files to PPTX, and python-pptx opened all 117. The 1,123 slides matched the PDF page counts for every file. We did not compare text, pictures or layout, so check the result in PowerPoint.

Conversion is a common reason to open PPT files. FileInfo says Google Slides lets you upload and convert PPT files, and LibreOffice writes PDF and PPTX from the command line.

A test with LibreOffice

We converted every regular PPT file to PPTX with LibreOffice 24.2.7.2. It wrote a PPTX for 117 of 127 files and refused 10. Five of the ten are the encrypted files, and five pass our script.

We opened every PPTX with python-pptx library and counted the slides. All 117 opened, and the counts add up to 1,123 slides. The largest file, bug56240.ppt, has 105. Every count matched the number of pages in the PDF that LibreOffice wrote for the same file.

Convert one PPT file to PPTX and count the slides
soffice --headless --convert-to pptx example.ppt
python3 -c "from pptx import Presentation; print(len(Presentation('example.pptx').slides))"
# prints
14

The example PPT file has 14 slides, and LibreOffice also made 14 pages from it. A matching count shows that no slide went missing. It does not show that text, fonts, pictures or animations came across, and we checked none of them.

The files LibreOffice refused

The 10 refusals are the same 10 files that LibreOffice could not save as PDF. We did not find the cause for the five that pass our script. Try PowerPoint or another reader on them, and keep the PPT file.

What every target is for

PPTX The newer presentation format. The Microsoft Support list of endings goes with it. Our PPTX test used LibreOffice only.
PDF A copy to read or print. LibreOffice wrote one for 117 files. Read the page on PDF files for the format.
Compare hashes Write the hash of the PPT file before you convert, and keep the original.
Compare the result Open the PPTX and the PPT file side by side and page through both.

Keep the original file. Convert a copy and keep the PPT file you have. Page through every slide of the result before you delete anything, because matching slide counts do not prove a faithful copy.

How Does a PPT File Differ From PPTX, DOC and MSG Files? Close neighbors, and only one contains a PowerPoint Document stream

PPT files have close neighbors. PPTX files are ZIP packages, DOC and XLS files share the compound file signature and MSG files are Outlook items. Only PPT files contain a stream named PowerPoint Document.

Several kinds of file get mixed up with PPT files because they come from Office. The table lists them next to PPT. Every row ends with its source.

PPT, PPTX, PPTM, DOC, XLS, MSG and PDF files compared
Type What separates it
PPT A compound file that starts with d0 cf 11 e0 a1 b1 1a e1. It stores slides, text and pictures in streams, and PowerPoint 97 to 2003 write it. Source: Our tests and Microsoft.
PPTX A ZIP package that starts with 50 4b 03 04. Microsoft Support says files with an x ending cannot contain macros. Source: Our tests and Microsoft Support.
PPTM, PPSX and POTX Other Open XML endings for presentations with macros, slide shows and templates. Source: Microsoft Support.
DOC The older Word format. Its first 8 bytes match PPT files, because it is a compound file too. Source: Our DOC page.
XLS The older Excel format. It also begins with the compound file signature. Source: Our XLS page.
MSG An Outlook item in a compound file. Its streams differ from PPT files, because it has a stream named __properties_version1.0. Source: Our MSG page.
PDF A document for reading or printing. LibreOffice wrote one for 117 of our PPT files. Source: Our tests.

PPT or PPTX

PPT files are compound files and PPTX files are ZIP packages, so the first bytes separate them. FileInfo says the binary format stayed the main save format until PowerPoint 2007 brought PPTX. Our test converted 117 PPT files to PPTX.

PPT or DOC and XLS

All three begin with the compound file signature, so the first 8 bytes name the container and not the program. The stream names separate them. PPT files contain PowerPoint Document and Current User, and the file command names the type.

PPT or MSG

An MSG file stores one Outlook item and PPT files store presentations. Both are compound files. An MSG file stores properties in a stream named __properties_version1.0, per our tests of 41 MSG files.

Which one do you have

Word files Read the DOC file page for the older Word format and the DOCX file page for the newer one.
Excel files Read the XLS file page for the older Excel format.
Outlook messages Read the MSG file page for one Outlook item in a compound file.
Documents to print Read the PDF file page for files that look the same everywhere.

What Is the PPT File Format Made Of? The facts we could check, and where they came from

PPT is an ending that more than one maker used. Facts below come from our own checks of 127 PPT files and 21 damaged copies. Sources are FileInfo, file-extensions.org, Microsoft, Apache POI and IANA.

Facts about PPT files
Part What we could check
Maker Microsoft for the PowerPoint kind, per FileInfo, which says Microsoft introduced the format in 1987. File-extensions.org marks the Sony kind as obsolete.
Name FileInfo lists Microsoft PowerPoint Presentation (Legacy). File-extensions.org lists a Microsoft PowerPoint 97 to 2003 presentation and a Sony PlayStation Portable texture. Microsoft titles its specification PowerPoint (.ppt) Binary File Format.
First bytes PowerPoint PPT files start with d0 cf 11 e0 a1 b1 1a e1, as our 127 regular PPT files show.
Container A compound file. Our files use version 3, sectors of 512 bytes, mini sectors of 64 bytes and a mini stream cutoff of 4,096.
Streams PowerPoint Document and Current User in 126 files, Pictures in 68, SummaryInformation in 123 and DocumentSummaryInformation in 125.
Records Every record starts with an 8 byte header. Current User stores a record of type 0x0FF6, and every saved edit adds a record of type 0x0FF5.
Encryption A token in Current User. 0xE391C05F means the file should not be encrypted and 0xF3D1C4DF means it must be. 119 of our files use the first and 5 use the second.
Sizes Our files are 9,684 to 3,333,632 bytes long, and the median is 110,592 bytes. We have no size data for other kinds.
Specification Microsoft publishes MS-PPT, revision 10.1 from 12 November 2024, for PowerPoint 97, 2000, 2002 and Office PowerPoint 2003, and MS-CFB for the container.
Media type The file command prints application/vnd.ms-powerpoint for 124 of 127 files. IANA publishes a template page for that type. We did not read the registry row, so we state no status.
Our tests 127 regular PPT files, 21 damaged copies, 6 readers and 13 repairs. The file command, 7-Zip, olefile, catppt, LibreOffice and a 24 line script all read our PPT files on Linux.

About the values we list

Facts about the layout come from our own reading of 127 PPT files and from the Microsoft documents. Facts about the other kinds come from the pages we name, and we did not test them.

Where we found no record, we say so. We found no sample of the PlayStation Portable kind, and we read no registry row for the media type.

What we left out

We opened no PPT file in PowerPoint, Keynote, Google Slides or a web viewer. We had no sample of a PlayStation Portable texture. We scanned no file for malware, and we tried no password on an encrypted file.

All 127 regular PPT files come from the Apache POI tests, and 19 more are fuzz test files that we kept apart. Our damaged copies come from one PPT file and change one thing at a time. Files saved by other versions of PowerPoint can differ from ours.

Sources checked

For the kinds, see the FileInfo page on PPT files and the file-extensions.org PPT list. For the layout, see the MS-PPT specification and the MS-CFB specification.

For the media type, see the IANA media types registry. For the endings that go with PPTX, see the Microsoft note on Open XML formats.

For the readers, see the Apache POI HSLF component, olefile on GitHub and LibreOffice. Every count on this page came from files and scripts in our research folder.

Frequently Asked Questions About PPT Files

What is a PPT file?

A PPT file is a PowerPoint presentation saved in the older binary format. FileInfo says Microsoft introduced it in 1987. PowerPoint PPT files start with the bytes d0 cf 11 e0 a1 b1 1a e1. The same ending also names a Sony PlayStation Portable texture.

How do I open a PPT file?

Open it in PowerPoint if you have it. FileInfo also lists Apple Keynote, OpenOffice Impress and Google Slides. On Linux we read 127 PPT files with the file command, 7-Zip, olefile, catppt and LibreOffice, and LibreOffice opened 117.

How do I open a PPT file without PowerPoint?

Try Keynote on a Mac, OpenOffice Impress or Google Slides. LibreOffice opened 117 of our 127 regular PPT files and saved them as PDF. You can also read the streams with olefile, which opened all 127.

Is a PPT file safe to open?

Reading the bytes starts nothing, so reading is safe. PPT files can contain macros, and olevba found VBA code in 3 of our 127 regular PPT files. Microsoft Support says files with an x ending cannot contain macros. Open PPT files from strangers with macros off.

What is the difference between PPT and PPTX?

PPT files are compound files and PPTX files are ZIP packages. A PPT file starts with d0 cf 11 e0 and a PPTX starts with 50 4b 03 04. FileInfo says PPT stayed the main save format until PowerPoint 2007 brought PPTX.

Can I convert a PPT file to PPTX or PDF?

Yes. LibreOffice converted 117 of our 127 regular PPT files to PPTX and to PDF, and the slide counts matched. We did not compare text or pictures, so page through the result. FileInfo says Google Slides can also convert a PPT file.

Why will my PPT file not open?

Eight causes cover what we saw in damaged PPT files. They are the wrong kind, changed signatures, wrong header fields, text mode copies, wrong pointers or tokens, renamed streams, cut files and bad data. Our script flagged or warned on 17 of 21 damaged copies.

How can I check if a PPT file is damaged?

Read the first 16 bytes of the PPT file, name the type with the file command and compare two readers. Our script also reads the token and the newest edit record. It passed 4 of 21 damaged copies, so only a second reader or the sender finds the rest.

Do all readers agree on a damaged PPT file?

No. Four readers disagreed on 15 of our 21 damaged copies, and on 10 copies none of them matched the original. Only one copy, with 512 zero bytes added, read the same in all four tools.

Can a damaged PPT file be repaired?

Some damage to a PPT file can be repaired. Thirteen kinds of header, pointer and name damage came back byte for byte in our tests. Cut files and zeroed data did not, because the bytes are gone. Keep the original and work on a copy.

What MIME type is a PPT file?

The file command prints application/vnd.ms-powerpoint for 124 of our 127 regular PPT files. IANA publishes a template page for that type. We did not read the registry row, so we state no status for it.

How big is a PPT file?

Our 127 regular PPT files are 9,684 to 3,333,632 bytes long, and the median is 110,592 bytes. 68 of them contain a Pictures stream. The size depends on what the presentation stores.

Still Stuck With a PPT File? Eight routes out, depending on what went wrong

Your PPT file will not open

Read the first bytes and use the check script. The cause table lists what to try in order.

You do not know the kind

The kind questions name the kind from the first bytes, the streams and the program.

Is it a newer presentation? Microsoft Support lists the endings that go with PPTX, like .pptm for macros and .ppsx for a slide show.

Is it a Word or Excel file? The guide to DOC files covers the older Word format, and the guide to XLS files covers the older Excel format.

Is it an Outlook message? An MSG file also starts with the compound file signature, and the guide to MSG files covers it.

Is it a document or an archive? The guide to PDF files covers documents for printing, and the guide to ZIP files covers the package behind a PPTX.

Is it a file type you do not know? Browse the file extension resource library, or send it on the submit a file type page.

Do you need the format facts? Read the format part for the container, the streams and the sources of PPT files.