After 6 years of hosting my blog in WordPress , I ported it to Hugo , a static site generator. I used to be a big WordPress believer. I’d tell anyone who wished to hear, and many who didn’t, that WP was the answer to everything. Whether you’re building a personal blog, an e-commerce site, or a portfolio showcase. That belief was crumbling for the last few years up to the point I turned almost 180 degrees. WordPress is very much not the answer to everything, and you should be very mindful when using it.

I found static site generation (SSG) to be a very interesting and effective approach to making websites. Performance was the original reason I was tempted by SSG, which I was able to improve a lot, but it also allowed me a much more productive development cycle and much better control over my site. Whether I want to publish a new post or tweak the UI, my productivity is now through the roof in comparison to what it was with WordPress.

Let’s dive a bit deeper into these technologies and see their pros and cons.

WordPress

WordPress is particularly interesting considering that about 40% of all websites run on it. At its core, WP is a content management system (CMS). It allows you to add content like blog posts, reviews, images, etc. A backend admin dashboard allows you to add and edit that content, design the theme, manage users, etc.

On the site layout side of things, WordPress is a massive beast with an endless amount of themes and plugins to choose from. There is an entire industry that creates and sells whatever your heart desires, whether it’s an e-commerce plugin, a photo studio theme, a paid subscription site, an SEO plugin, etc. No other web platform comes close to the ecosystem of WordPress.

If we look under the hood, WP includes a PHP server with a MySQL database that stores your content. When a user enters a page on the site, the request goes to the PHP server, which queries the database for the content and runs PHP code that generates the HTML, CSS, and JavaScript that you’ll eventually see on the client side.

On the surface, there’s nothing wrong with this. PHP is not the most pleasant language, but it works well. MySQL is also fine. The general concept of a customizable CMS is also fine. But reality turned the WordPress ecosystem into a steaming pile of garbage. I’ll explain. It all starts with the host, which usually turns out to be some terrible platform like Bluehost or GoDaddy because they have the best marketing. They offer cheap shared hosting that will ruin your performance in peak times. Then, you’ve got an entire industry of WordPress theme developers that prioritize features and looks over performance. Most themes will crumble your site’s speed even if the host failed to do so. The final and most terrible blow is the plugins, which most websites tend to have dozens of. I found that most plugins will hurt performance for no good reason. They will send unnecessary HTTP requests and add a ton of JavaScript code for simple functionality like social sharing or site search. I personally suspect they are full of spyware and bitcoin mining algorithms to make a profit. Worse of all, those plugins expose your site to security breaches. I constantly hear of hacked websites, and most often than not, the reason is a vulnerability exposed by some WP plugin.

In my case, performance wasn’t a huge deal. Don’t get me wrong, I didn’t know any of this stuff when I started and my performance was horrible for years. But at some point, I became aware of this issue and made big efforts to improve it. That’s when I started noticing the horrors of WP. My premium theme, from a top developer mind you, had bad performance even on a bare naked site. I removed it for the minimalistic Astra theme . Then, I rigorously checked every plugin and removed those that affected perf, which were most. For example, I had to go through 6 plugins to add social sharing buttons because the first 5 added an unbelievable amount of overhead.

By the way, if you want decent hosting, go with a VPS offering like Cloudways .

Static Site Generation

A static site generator is a different beast entirely. It doesn’t require a server or a database. Instead, it produces HTML, JavaScript, and CSS for each URL on your site. It’s all just static content. So when a user enters your site, they just download some HTML/CSS/JS from a CDN.

Another trait of SSGs like Hugo is that they treat Markdown as a first-class citizen. You’re expected to write posts and pages in ‘.md’ format, which is hands-down the most productive way to write anyway, and this serves as the input from which the pages are generated.

With SSG, you’ll usually have your .md files in a source control like GitHub and when you’re pushing new content, a host like Netlify will trigger a build that generates new HTML/CSS/JS content and deploys it to a Content Delivery Network. In WordPress, on the other hand, I would have to export my markdown to HTML, then go to the WordPress dashboard, copy-paste that HTML to the WP editor, upload whatever images I had and adjust the URLs, add categories and tags, and publish. That might sound easy, but that’s a whole lot of button clicks. With every action in the WP dashboard adding a 10-second lag, that’s an unpleasant process. And if I had to edit a post, then either I had to change the HTML manually, or do it in my markdown editor, export to HTML again, change image URLs again, and copy-paste to the WP dashboard again.

But SSGs have a lot of downsides as well. For one thing, the ecosystem is minuscule in comparison to WP. I couldn’t find any theme that fit my needs and I had to duplicate my site’s design and layout from scratch. This might sound like a downside, but for me, it’s an upside. Making any sort of change in WP layout is a nightmare, whereas with Hugo, I can easily tweak whatever I want. As for plugins, they are not a thing in most SSGs.

So static site generators aren’t for everyone. I don’t expect most normal people to work with git or to write in markdown, not to mention that I don’t expect them to design a website’s layout with HTML. However, if you’re a technical person, this is so much better.

Back to WordPress

Despite my earlier rant, I do realize WordPress is a god given in many cases. You can get a good-looking website up and running in no time. You can add plugins for pretty much anything and create a subscription site, an e-commerce site, or a landing page for your new product easily. You can add users with different permissions to write and contribute to your newspaper site. So even though WP is terrible in many ways, it’s still awesome in other ways. And if you know what you’re doing, you can even create a WordPress site with decent performance.