Over the past few weeks, I’ve helped seven of my friends start their own blogs. Most of them just wanted to do something productive to pass the time, but a few of the more ambitious ones expressed interest in generating income with their blog. Income is the difference between revenue and expenses, so minimizing the cost of running a blog was a popular topic.

For my friends, I recommended WordPress as a good platform to get started. However, they were interested in the cost breakdown for this non-WordPress blog as well, so I promised I would write a post on that topic. Here it is.

Long-Term Costs

First, let’s get the long-term costs out of the way.

Domain Registration

Before consolidating all my content to brianli.com, I also blogged under 441k.com and decrypto.net. Now, the posts on those two domains have been 301 redirected to brianli.com. To preserve link juice, I still have to pay for those domains, so my domain registration expenses come out to $36 per year.

Monthly Recurring Costs

Let’s move on the to the monthly recurring costs.

Web Hosting

This site is statically-generated with Hugo, and is hosted for free on GitHub and Netlify. Sometimes I abuse my free monthly build minutes on Netlify, so I have to pay a few bucks for more time.

Netlify hosting is free for most static sites.
My monthly Netlify hosting bill.

I use a lot of images on this blog. GitHub isn’t really designed for high-capacity image hosting, so I upload images to a Google Cloud Storage bucket instead. To speed up the workflow, I even wrote a Python script to upload an image and generate a Hugo shortcode. Last month, my image storage cost was $0.03.

Image Processing

I really like the concept of edge processing. Since I make heavy use of srcset for images, resized thumbnails have to be stored somewhere. Generating thumbnails locally and pushing them to Google Cloud Storage sounds slow and clumsy, especially if lots of sizes are needed.

I use HTML srcset to display responsive images on my blog.
A typical picture element on my blog.

I use Imgix for edge image processing. It uses my Google Cloud Storage bucket as a source endpoint, and automatically resizes images on demand. For example, the URL below is configured with a value of 768 for the w parameter, which instructs Imgix to render a version of this image that is 768 pixels wide.

https://cdn.brianli.com/uploads/2020/04/20200429_XISHUANGBANNA-SHERATON.jpg?w=768&fit=max&auto=format&q=72

After an image is rendered, it’s delivered from a global CDN. If you’re looking for an awesome image processing service, I highly recommend checking out Imgix. On a typical month, I pay Imgix $10 for this great service.

Summary

In terms of monthly recurring expenses, which is what I think most people are interested in, this blog costs ~$10/month to run.

Over the next 4-5 years, I think we’ll see a shift to static or headless sites in certain sectors of the publishing industry – most notably corporate and tech publishing. As static site content management and deployment tools mature, many of the developer-centric quirks of static site generation will be abstracted out – this will allow mainstream users to reduce hosting and maintenance costs by leveraging statically-generated sites.