SponsorSign inSubmit

← All tools

Sparkle appcast checker

Paste the appcast your app reads from SUFeedURL. It is read right here on this page, and nothing is fetched or sent.

Sparkle appcast checker

Try an example:

What it does

Sparkle is the update framework most Mac apps sold outside the Mac App Store use. Your app reads a small RSS file, the appcast, and each <item> in it is one release. This tool reads the appcast you paste and checks each release against Sparkle's own publishing docs: that it has a version Sparkle can compare, a download on https with a size and an EdDSA signature, a minimum macOS version, and a date. It also catches the mistakes that break the whole feed, like a missing Sparkle namespace or a bare & in a download address.

What a good release looks like

<item>
  <title>Version 2.1</title>
  <pubDate>Sat, 07 Nov 2026 09:30:00 +0000</pubDate>
  <sparkle:version>210</sparkle:version>
  <sparkle:shortVersionString>2.1</sparkle:shortVersionString>
  <sparkle:minimumSystemVersion>14.0.0</sparkle:minimumSystemVersion>
  <enclosure url="https://yourapp.com/YourApp-2.1.zip" length="8412337"
    type="application/octet-stream" sparkle:edSignature="..."/>
</item>

The <rss> tag at the top needs xmlns:sparkle="http://www.andymatuschak.org/xml-namespaces/sparkle". Sparkle's generate_appcast tool writes most of this for you, including the signature and the length.

What each result means

MarkWhat it means
FixSparkle can't read the feed, can't compare the release, or won't install it.
LookIt works, but the release may reach Macs that can't run it, or it is missing something Sparkle's docs ask for.
OKSet the way Sparkle's docs describe.
NoteA setting worth knowing about, like a channel or a critical update.

Sources: Sparkle, Publishing an update, Sparkle documentation and Sparkle, EdDSA migration, all read November 8, 2026.

How it works

It is a few plain text rules running on this page. It doesn't download your update, so it can't check that the signature matches your key or that the length matches the file: Sparkle does both when it installs. It doesn't fetch your feed either, so paste the text rather than the address. sparkle:hardwareRequirements needs Sparkle 2.9 or later in the copy of your app people already have. Older copies ignore it. Nothing you paste is saved or sent.

Questions

What is a Sparkle appcast?

An RSS file on your server that lists the releases of your Mac app. Sparkle, inside your app, reads it from the SUFeedURL in your Info.plist and offers any release newer than the one installed.

Does every Sparkle update need an EdDSA signature?

Sparkle's docs say you must sign your updates, and generate_appcast signs them for you. An app with SUPublicEDKey in its Info.plist checks the signature before it installs anything.

How do I stop an update reaching Macs that can't run it?

Add sparkle:minimumSystemVersion to the release, with three parts such as 14.0.0. From Sparkle 2.9 you can also add sparkle:hardwareRequirements with arm64 for a build that only runs on Apple silicon.

Which version number does Sparkle compare?

sparkle:version, compared with the CFBundleVersion of the app the user has. sparkle:shortVersionString is only what people see.

Is what I paste sent anywhere?

No. The text is read on this page and nothing is fetched, sent or stored.

Related