File types · Explainer

The PPSM file (.ppsm)

A PPSM file is a PowerPoint Show that is allowed to contain VBA macros: double-click it and PowerPoint starts the slide show instead of the editor. This guide explains what makes a file a show, how to edit one, how shows run by themselves, what to know about the macros, and has free sample PPSM files, without macros, to download for testing.

At a glance

Full name
PowerPoint Macro-Enabled Show
Extensions
.ppsm
MIME type
application/vnd.ms-powerpoint.slideshow.macroEnabled.12
Kind
Binary: a ZIP package of XML parts (PresentationML), plus an optional binary VBA project
Standard
Office Open XML (ECMA-376, ISO/IEC 29500), with the macro-enabled content types of Microsoft's [MS-OFFMACRO2]
First released
2007, with PowerPoint 2007, by Microsoft
Opens with
PowerPoint (as a slide show), LibreOffice Impress
Magic number
50 4B 03 04 ("PK"), the ZIP signature
Main part content type
application/vnd.ms-powerpoint.slideshow.macroEnabled.main+xml
Macros
VBA, in ppt/vbaProject.bin. Optional

The basics

What is a PPSM file?

PPSM is the macro-enabled version of the PowerPoint Show. A show is a presentation saved so that it opens straight into the slide show: the person who double-clicks it sees the first slide full screen, not PowerPoint's editor. Microsoft describes the PPSM type as "a show that includes pre-approved macros you can run during the presentation".

Shows are made for people who should watch rather than edit: a deck sent to a client, a self-running display in a reception area, a training module or a quiz with buttons. The macro-free version is PPSX; PowerPoint 97-2003 used PPS.

  • It's a presentation with a different label. Slides, notes and media are stored as in a PPTX. Only the content type of the main part differs.
  • It isn't locked. Anyone with PowerPoint can open a show for editing, as explained below.
  • Macros are optional. The extension allows them. Our samples have none.

Our samples contain no macros

Every PPSM on this page is a macro-enabled show package without a VBA project. olevba reports "No VBA or XLM macros found" for each one.

Anatomy

What's inside a PPSM file

A PPSM holds exactly what a PPTX or PPTM does: slides, layouts, a master, a theme and notes as XML in a ZIP archive. This is our sample-slideshow.ppsm, which has no macros and is set up to run by itself.

sample-slideshow.ppsm (structure)
sample-slideshow.ppsm  (a ZIP archive, 37,548 bytes, 53 parts)
offset 0: 50 4B 03 04 …  "PK", a ZIP local file header

[Content_Types].xml           the type of every part
ppt/presentation.xml          slide list, 16:9 slide size
ppt/presProps.xml             slide show settings
ppt/slides/slide1.xml …       4 slides
ppt/notesSlides/…             speaker notes, one per slide
ppt/slideMasters/, ppt/slideLayouts/ (11), ppt/theme/
docProps/core.xml             title, "Contains no macros"

In [Content_Types].xml:
<Override PartName="/ppt/presentation.xml"
  ContentType="application/vnd.ms-powerpoint.slideshow.macroEnabled.main+xml"/>

In ppt/presProps.xml:
<p:showPr loop="1" useTimings="1"><p:present/><p:sldAll/></p:showPr>

In each slide:
<p:transition spd="med" advTm="5000"><p:fade/></p:transition>

What a show WITH macros adds (not in this sample):
ppt/vbaProject.bin            the VBA project
ppt/_rels/presentation.xml.rels  + a relationship of type …/2006/relationships/vbaProject
  1. 150 4B 03 04

    The ZIP signature

    Identical to every other Office XML file. Neither the first bytes nor the slides say that this is a show.

  2. 2ContentType="application/vnd.ms-powerpoint.slideshow.macroEnabled.main+xml"

    The show content type

    This one value makes the package a macro-enabled show. PowerPoint reads it to decide to start the slide show, and it must agree with the .ppsm extension. A PPSX says …presentationml.slideshow.main+xml instead.

  3. 3ppt/presProps.xml

    Slide show settings

    What PowerPoint's Set Up Slide Show dialog saves. Any presentation can have these settings, not only a show.

  4. 4loop="1" useTimings="1"

    Loop and timings

    Start again after the last slide, and advance by the saved timings. In PowerPoint: "Loop continuously until Esc" and "Using timings, if present".

  5. 5<p:present/>

    Show type

    Presented by a speaker, full screen. The alternatives are <p:browse/>, in a window, and <p:kiosk/>, full screen, looping, and moved on only by timings or on-slide buttons.

  6. 6advTm="5000"

    Automatic advance

    The slide moves on after 5,000 milliseconds. Clicking still advances it too, unless advClick is set to 0.

  7. 7ppt/vbaProject.bin

    The VBA project (not in our sample)

    Stored and linked exactly as in a PPTM. A show is the same package with a different content type.

How to

How to edit a PPSM, and why renaming doesn't work

Double-clicking a show starts the show. To edit it, start PowerPoint first and use File, Open to open the .ppsm: opened from inside PowerPoint, a show opens in the editor like any presentation. Make your changes and save; it stays a show.

You want…Do this
An editable presentation with the macrosFile, Save As, PowerPoint Macro-Enabled Presentation (.pptm).
A show without the macrosFile, Save As, PowerPoint Show (.ppsx). The VBA project is left out.
An editable presentation without the macrosFile, Save As, PowerPoint Presentation (.pptx).
To see the partsRename a copy to .zip and open it. Nothing runs.

Changing the extension isn't enough

With the old binary format, renaming a .pps to .ppt really did switch between show and editor. With the XML formats it doesn't: the content type inside still says show, and PowerPoint reports an error for a file whose extension and content disagree. Use Save As.

Under the hood

How a show runs by itself

Opening straight into the slide show is the show format's job. Everything else about how the show behaves is ordinary presentation settings, which a PPTX can have too:

Setting in PowerPointStored as
Transitions, After: 00:05.00advTm="5000" on each slide's <p:transition>, in milliseconds
Set Up Slide Show, Loop continuously until Escloop="1" on <p:showPr> in ppt/presProps.xml
Set Up Slide Show, Using timings, if presentuseTimings="1"; set to 0 for "Manually"
Presented by a speaker / Browsed by an individual / Browsed at a kiosk<p:present/>, <p:browse/> or <p:kiosk/> inside <p:showPr>
Show slides: All, or From … To<p:sldAll/>, or <p:sldRg st="…" end="…"/>

Our sample-slideshow.ppsm uses the first three: each slide advances after five seconds and the show starts over after the last slide, until you press Esc.

Security

Macros in a show, and the security checks

A show's macros typically sit behind buttons and shapes: Insert, Action, Run macro, on mouse click or mouse over. That's how quizzes, menus and kiosk displays react to the viewer. PowerPoint's documented automatic macros, Auto_Open and Auto_Close, run only in add-ins, not in shows; the PPTM page explains the ways macros start.

A show gets the same macro checks as any Office file on Windows. Since 2022, macros in a file that came from the internet, marked by Windows with the Mark of the Web, are blocked unless the file is in a Trusted Location, signed by a trusted publisher or allowed by policy. To use a show you trust, close it, right-click the file, choose Properties, tick Unblock, and open it again.

Opening straight into full screen is convenient for a presenter and for anyone who wants a file to look like something else. Be as careful with an unexpected .ppsm or .ppsx as with any attachment, and don't allow programs or enable content from one you didn't expect.

To check a show without running it, list its parts with unzip -l show.ppsm and look for vbaProject.bin, or run olevba show.ppsm from oletools.

Comparison

PPSM vs PPSX, PPS, PPTM and PDF

PPSMPPSXPPSPPTMPDF
Opens asSlide showSlide showSlide showEditorPages, in a browser or reader
MacrosYesNoYesYesNo (but JavaScript)
StructureZIP of XMLZIP of XMLBinary OLE2 fileZIP of XMLBinary objects and streams
Animations, transitions, videoYesYesYes, video linkedYesNo
Needs PowerPoint or a compatible appYesYesYesYesNo

If the show needs no macros, save it as PPSX: it opens the same way and gets past more mail filters. If viewers don't need animations at all, a PDF opens anywhere.

How to

How to open and convert a PPSM file

  • PowerPoint plays it as a show when you double-click it, and opens it for editing from File, Open.
  • LibreOffice Impress opens PPSM files and keeps the loop and timing settings. It doesn't run PowerPoint's VBA.
  • Convert to PDF: soffice --headless --convert-to pdf show.ppsm, or open it for editing in PowerPoint and export a PDF. Timings and animations don't survive in a PDF.
  • Convert to video: open it for editing in PowerPoint, then File, Export, Create a Video.
  • In code: python-pptx's Presentation() refuses a PPSM with "is not a PowerPoint file", because it accepts only the PPTX and PPTM content types. LibreOffice can convert it to PPTX first.

Troubleshooting

Common PPSM problems

  • I can't edit it. Double-clicking always starts the show. Open it from inside PowerPoint with File, Open.
  • The show doesn't advance by itself. The slides have no timings, or Set Up Slide Show is set to advance Manually.
  • It never ends. It's set to loop, or set up as a kiosk. Press Esc.
  • The buttons don't work. Macros are blocked or disabled; the red Security Risk banner means the file has the Mark of the Web.
  • The attachment was blocked. Many mail systems block macro-enabled Office files. Send a PPSX if the macros aren't needed, or share a link.

Free downloads

Sample PPSM files to download

Free sample macro-enabled PowerPoint Shows for testing upload filters, type detection, converters and players. None of them contains macros: each is a valid PPSM package without a VBA project. Each was checked with unzip -t, by opening the package with python-pptx (with the show content type mapped to its presentation part), by converting it to PDF with LibreOffice and looking at the pages, and with olevba.

sample-slideshow.ppsm · 36.7 KBDownload

Browsers can't show this kind of file in a page. Download it to open it in the app it belongs to.

What's inside sample-slideshow.ppsm

Browsers can't play PPSM files, so download it and double-click it with PowerPoint installed: it starts as a slide show, moves on every five seconds and loops until you press Esc.

  1. Four 16:9 slides

    A title slide and three slides about how a show opens, how to edit it and how this one runs by itself.

  2. Timed transitions

    Every slide has a fade transition with advTm="5000", so it advances after five seconds without a click.

  3. A looping show

    <p:showPr loop="1" useTimings="1"> in ppt/presProps.xml. LibreOffice reads it too: converted to ODP, the show is marked endless.

  4. A footer on every slide

    A text box saying where the file comes from, that it contains no macros and that it advances every five seconds.

  5. Notes and properties

    Speaker notes on each slide, and a title, keywords and a no-macros comment in docProps/core.xml.

  6. No VBA project

    No ppt/vbaProject.bin: only the content type of ppt/presentation.xml makes it a macro-enabled show.

All sample PPSM files

  • Self-running sample show (no macros)

    sample-slideshow.ppsm · 36.7 KB (37,548 bytes)

    Four slides made with python-pptx that advance every five seconds and loop, then given the macro-enabled show content type. Notes, a footer and document properties. No VBA project.

    • Testing players, kiosks and converters with a real PPSM
    • Checking that auto-advance and loop settings survive conversion
  • Minimal PPSM, eleven parts

    sample-minimal.ppsm · 4.6 KB (4,749 bytes)

    The hand-written eleven-part package of sample-minimal.pptx, one slide and one text box, with the show content type. No timings, no notes, no properties.

    • Parser tests with the smallest PPSM
    • Diffing against the minimal PPTX and PPTM
  • 100 KB PPSM file

    sample-100kb.ppsm · 100 KB (102,400 bytes)

    The featured show, padded to exactly 102,400 bytes with whitespace inside docProps/app.xml, stored uncompressed. Still loops and still has no macros.

    • Upload limits with a macro-enabled type
    • Testing type-based upload filters

Ways to test with them

  • Type detection: all three are ZIP files. A detector should read [Content_Types].xml and report application/vnd.ms-powerpoint.slideshow.macroEnabled.12, not PPTX or ZIP.
  • Open behaviour: double-click sample-slideshow.ppsm with PowerPoint installed and it should start the show; open it with File, Open and it should open in the editor.
  • Conversion: soffice --headless --convert-to odp sample-slideshow.ppsm should give presentation:endless="true" and a 5-second automatic transition in content.xml.
  • Libraries: python-pptx refuses all three until you map the show content type; check how your own code handles a show.
  • Size limits: sample-100kb.ppsm is exactly 102,400 bytes.

Free to use for testing, teaching and demos, commercially or not, with no attribution needed. A link back to this page is always appreciated.

Put it online

Have a PPSM file? Give it a link.

Drop a macro-enabled PowerPoint Show on 99helpers and it gets its own link. Browsers can't play PPSM files, so visitors download it and it opens as a slide show in PowerPoint; Office on Windows blocks its macros because it came from the internet.

Questions

PPSM files, frequently asked

What is a PPSM file?

A PowerPoint Show that can contain VBA macros. Double-clicking it starts the slide show instead of opening the editor. Inside, it's the same ZIP package of XML as a PPTX.

How do I edit a PPSM file?

Start PowerPoint, choose File, Open and pick the file. Opened that way, it opens in the editor. Save As PPTM if you want a normal presentation with the macros.

What's the difference between PPSX and PPSM?

Macros. Both open as a slide show; a PPSM may contain a VBA project and a PPSX can't.

Can I rename a PPSM to PPTM?

No. The content type inside still says show, and PowerPoint reports an error when the extension doesn't match. Open it in PowerPoint and use Save As.

How do I make a PowerPoint show loop?

Slide Show, Set Up Slide Show, tick Loop continuously until Esc, and give the slides timings under Transitions, After. The settings are stored in the file, whatever its type.

Is a PPSM file safe?

Its macros are the risk, and Office on Windows blocks them in files from the internet. Don't enable content or allow programs in a show you didn't expect.

Can I open a PPSM without PowerPoint?

LibreOffice Impress opens it and can play it as a slide show, on Windows, Mac and Linux. It won't run PowerPoint's VBA macros.

Related formats

Other file types explained

Keep going

Related

Sources

Last reviewed 27 October 2026.