For the last week or so, I’ve been checking out WordPress starter themes. By starter, I mean starter. As in, down to bare bones. The starters I’ve been working with are Toolbox and Underscores.

Both of these starter themes come from people at Automattic (the WordPress parent organization), so they both provide a solid foundation for theme build-outs. The major difference between them is that Toolbox assumes you’re going to build a child theme on top of it. Underscores, however, is right up front about saying, “Don’t build a child theme on this.”

Even Starter Themes Have Some Bloat

By far, the most surprising thing about both these starters is how much they give you to start with. They both come with quite a few functions already defined, and a surprising amount of CSS. You’d never suspect it, given the spartan look of them out of the box.

It’s an eye-opener to see what the Automattic theme folks consider essential to include. Theme support for post types and backgrounds, head links and body classes for various feed types, CSS for screen readers, right-to-left language support. It’s all there.

WordPress Has Even More Bloat

As I was working on these, though, what began to bother me was the amount of extra stuff WordPress itself inserts into each page. Stuff that might or might not be useful, depending on what the site is about. Once you start adding plug-ins, things really start to expand rapidly. It’s like the big bang happening in your browser.

I started finding myself slightly obsessed with figuring out where all this stuff was coming from and seeing if I could get rid of it. If you firebug this page, you’ll see a huge load of crap in the section of the HTML. Take a look at all this:


After a while tinkering around, starting from underscore and with the help of Darren Miller’s ThemeWrangler class, I got the installation on my development server down to just this:

        iCaspar Web Development | Custom Web Development            

To be fair, in a real-life installation, you’re probably going to need a few more things going on. And I’m also not showing you a few scripts that I moved into the footer on the development site (which is where most of the scripts really should go).

I’m not saying that all this stuff isn’t useful. If you want social media connections and you believe in OpenGraph as a SEO essential, you’ll need to bring some of them back in. If you want easy access to feeds of various sorts, you probably need to tell browsers where to find them. It’s just that a lot of it is there whether it’s actually being used for anything or not, and it gets loaded with every page. And, if you’re not careful which plug-ins you’ve installed, it can get plenty worse. I’ve seen sites that have jQuery getting loaded 4 or 5 times, all different versions.

For most people, it probably doesn’t make a bit of difference. Very few people see it, and even fewer care. Shoot, it doesn’t even make enough difference for me to clean it up on this site.

The point is if you’re going to bother starting from scratch, less is more, and it’s better to add judiciously than to just toss everything in willy-nilly. And, for the average person, if you’re still reading this, the moral of the story is: be careful what you plug in.