Why didn’t someone tell me about this sooner? ClickToFlash is a free WebKit plug-in that does one thing and does it extremely well: it blocks Flash content from loading in your Safari Web pages. This causes Safari to render Web pages much faster.
Other Web browsers already have ways to achieve something similar (in Camino you can check “Block Flash animations” and “Block web advertising”, and of course Firefox’s vast repertory of plug-ins form a universe unto themselves), but this is the first time I’ve seen something that works so well for Safari. It also works in any other browsers that use WebKit, such as OmniWeb. Note that ClickToFlash doesn’t just suppress the drawing (rendering) of Flash content; it suppresses its loading altogether. That’s why pages are rendered faster: there is actually less material to download from the Internet.
The really elegant thing about ClickToFlash is that it doesn’t block Flash indiscriminately or permanently. In place of the Flash content, a nice gray-gradient rectangle saying “Flash” appears; when you Control-click that rectangle (or click a gear icon in the upper-left corner), you get a contextual menu that lets you load that one piece of Flash content or all the Flash content on the page, or add the source URL to a whitelist so that its content always loads. There is even a Preferences dialog where you can perform more advanced settings.
ClickToFlash was originally written anonymously and maintained at Google Code. It was taken down, but the code was open source, and it had been picked up by occasional TidBITS contributor Jonathan “Wolf” Rentzsch. The code remains open source, and Rentzsch is hosting it through GitHub, an open multi-node version control system; this means that anyone can fork the code, contributing changes on one branch that are not present on another. In short, there are various versions of ClickToFlash floating around. But Rentzsch maintains a kind of mastery and routinely incorporates improvements contributed by others.
To install ClickToFlash, go to Rentzsch’s GitHub page, scroll down to where it says “Download ClickToFlash 1.4.2 here” (or whatever the current version is), and click those words. (That’s because you probably want an installer, not a copy of the source code; of course you can download the source code too if you like.) Double-click the downloaded .zip file to unzip it; double-click the resulting .pkg file to run the installer. The result is a .webplugin bundle in your ~/Library/Internet Plug-Ins folder; so to uninstall ClickToFlash, just remove that bundle.
ClickToFlash is not a haxie, since the .webplugin mechanism is perfectly standard (look in the top-level /Library/Internet Plug-Ins folder and you’ll see a bunch of them). However, it is a little tricky, because it must not only detect Flash content in advance and interfere with its loading, but must also enable Flash content on demand. To do this (and I am now just reproducing Peter Hosey’s explanation), it declares itself as a handler of the “application/x-shockwave-flash” MIME type, blocking that kind of embedded object, but when you ask to view the content, it changes the Web page so that object is now declared as belonging to the “application/futuresplash” MIME type. When that content loads, it is handled and rendered by the Adobe Flash Player plug-in. The trick here is that Flash Player declares itself as a handler of both MIME types, but all Flash content is declared as “application/x-shockwave-flash” – so that “application/futuresplash” is effectively unused, except by ClickToFlash. As long as that situation continues, ClickToFlash will keep working (though I suspect that some Web pages will present unusual challenges that must be worked around individually).
It turns out that a lot of stuff out there, even static content that appears to be just a drawing, is actually Flash. And all that Flash content has been causing my Web browsing to sag rather drastically. But not any more! My browser is now lean and mean, thanks to ClickToFlash.
ClickToFlash currently requires Mac OS X 10.5 Leopard, but I suspect that compatibility with 10.4 Tiger may be coming soon.