Keynote Extractor is now open source

So, in June I announced that the product worked again, and then later I found out through some reports that in some/most cases it doesn’t and the jumbled slides bug occurs again.

I’ve been on the fence about what to do with Keynote Extractor for a while. First I discontinued it, then I saw people still using it so I kept the site up with a few warnings.

As mentioned before, the main problem is that Apple can change Keynote’s file format any time they want. Keynote seemingly releases 1-2 versions per year. Whatever Apple changed is usually a black box; there is no openness about the Keynote file format whatsoever.

This is frustrating and if I ever make a piece of software again I want to avoid such dependencies. There’s a lesson here.

I know there are a few dedicated Keynote Extractor users out there so I don’t just want to dump this project. Since I don’t have the time nor the specific skills nor the funds to maintain Keynote Extractor I decided to open source the product.

At least the conversation around any fixes can happen in the open then. Perhaps a budding Swift programmer can learn something from the source code. If you dig into it, you will see most of it has been written by David Sinclair of Dejal Systems. You can check out his apps and website here. If you need macOS development, he’s your man.

I logged the jumbled slides bug as a issue.

If you are a Keynote Extractor user, drop me a line at If you have any slides online created with Keynote Extractor, send the links, and we can add them to the showcase.

Keynote Extractor works with Keynote 8.1

I kind of gave up on Keynote Extractor, but since Apple released a new version of Keynote I tried to use it with Keynote Extractor 1.1.

After some testing I verified it works fine with the newest version of Keynote (8.1).

I haven’t run into the “jumbled slides” bug anymore. I figure maybe something was changed on Apple’s end making it so that the bug doesn’t happen anymore. Yay!

Keynote Extractor discontinued

In the previous post, I mentioned a breaking bug . Unfortunately we were not able to find a fix, and unwilling to invest into further investigation.

This means that Keynote Extractor is effectively dead. You can’t use it if you have the latest version of macOS and Keynote. If you are on an older version of Keynote, you can continue using it, but that is the only way.

Keynote Extractor depends on Apple’s Keynote format, which is undocumented and keeps changing. We can’t afford to keep paying for this puzzle.

What’s next?

I would welcome it if Apple were to include JSON or XML export out of Keynote itself, so web developers can get creative with that output. I will file a bug to Apple’s Radar for this.

I am looking for a macOS developer to take over the maintenance and potential further development of Keynote Extractor. Get in touch at

Breaking bug with Keynote 7.3.1

Unfortunately, there is a breaking bug when you use Keynote 7.3.1 with Keynote Extractor 1.1. The order of the slide images gets jumbled.

We are aware of this issue and are investigating a fix.

The temporary workaround is to manually fix the references in the HTML template; or to use an older version of Keynote.


I updated the showcase with some new usage of the app. If you like Keynote Extractor, tell your friends!

Why Keynote Extractor?

Why is there a need for a tool like Keynote Extractor? Why am I spending time and money building this?

The reason is simple: presentation sharing on the web still sucks.

If you look at slides on Slideshare, they are missing context.

Take this slide. It says “users expect apps from the same companies to be similar”. The author likely gave some explanations, but this is all you can gather from the Slideshare.

If you look at presentation videos, they are often - very - long and impossible to skim.

Even if the talk is great, it’s hard to know what it’s about without sitting down and listening for at least 10 minutes.

What if there was a better way? What if you could share your presentation in a nice web page that everyone can just scroll through. Where someone can choose whether they want to read the whole thing or skim through it.

Well, there is a good format. It’s simple: just put the slides next to the text.

Maciej Cegłowski’s talks are a good example:

Now, Maciej crafts these things by hand and that is just bothersome. Not everyone knows HTML and CSS either.

With Keynote Extractor you can easily generate web pages that look like the above example from your Keynote files. Just make sure you entered what you are talking about in the notes fields in Keynote and you’re good to go. Check out the showcase for examples.

JSON Export

I am working on the the upcoming 1.1 version of Keynote Extractor is coming up, and one of the features we have is JSON export.

Keynote Extractor 1.1

When I was designing 1.1 I briefly pondered about the export options and settled on XML and JSON. But the more I thought about it the more I wondered whether XML was actually useful. I certainly wouldn’t want to use it. And a developery person could easily convert JSON to XML themselves.

I decided to cut the feature. I was happy to listen to Manton Reece in CoreInt talking about his work on JSON feed.

This further reaffirmed my thoughts. XML is dead, long live JSON!

A workflow for self-hosting your slides

So, you want to put your Keynote slides online? This blog post will show you how to do it.

If you already have your own web space, things are simple: you just upload the folder that you get when you extract your slides to your web server. Tada - your slides are online!

But what if you don't have webspace? Your own domain? Then you need to go ahead and find a solution.

There's tons of different ways to do this. In this tutorial I will explain how I would do it in different cases.

I am technically inclined and don't want to spend money. I don't care so much about the domain name.

  1. Put the index.html and the images in an open source repository on a free Github account.
  2. Activate Jekyll pages for that repository within the settings.
  3. Done! Here's an example.

I want a custom domain name.

I use dnsimple to register domain names. Within dnsimple you can tie your domain name to your web space. There are tons of domain registrars out there - this is just one of them.

I want some web space.

I use WebFaction to register web space. Within webfaction you can create different 'apps'. These apps can be static websites but they can also run PHP etc. For me WebFaction is perfect, but they don't provide much in the way of "help" for beginners. If this is your first time putting anything online, I would recommend another service instead.

My situation isn't listed here

Need help putting your slides online? E-mail and we will try to help you out.