Jekyll is a static site generator. It lets you make a website without a database and all the complexities that entails. That sounds pretty old and boring but it’s actually a modern technology. With Jekyll you create a simple text file and it gets transformed into a page on your website. If you enjoy simplicity then you’ll enjoy Jekyll. It’s very well suited to personal or portfolio style websites… which is quite a lot of websites!

It’s simple

There’s no PHP or database. It’s just folders of files. It’s easy to build and manage a Jekyll site. There are no forms to submit and buttons to click through. Once you’re used to typing in a text editor it’s surprisingly fast to create content.

It’s fast

Because the web server is just serving up static HTML files there’s no time spent generating a webpage. Think of how many steps are involved in the typical dynamic CMS; Initializing the application, authentication, querying the database, generating templates. None of that happens when someone views a Jekyll page. The site is built beforehand in one command and the server serves this prebuilt file.

It can’t be hacked

DNS spoofing aside, there’s very little to hack on a Jekyll website. There’s no authentication, there’s no database to SQL inject, there are no back doors. Content is uploaded to a server via Git. It’s unlikely someone would gain access this way but if they did you could revert to a previous commit.

It will never go out of date

It’s retro. It will never go out of date because it’s already out of date. The concept of generating a website from a bunch of files has been around since the beginning of time itself :)

It’s surprisingly flexible

Check out my Music page, there’s an audio player that streams a song and a cool looking chart of musician’s voices. You can build complex things with Jekyll but there are some drawbacks.

Jekyll’s drawbacks

Jekyll isn’t dynamic, it has no database and there’s no code executed at run time to do different things on different conditions such as the current date. It can’t display the current date when a user views a page because it doesn’t know what the current date is. It only knows the current date at build time when you generate your site, not on each page view.

For example you might want to display a list of upcoming events and automatically hide events that have already happened. Jekyll can’t do that, but there’s a way to overcome this. Javascript can be used to add a dynamic layer on top of Jekyll. With Javascript you could get the browser’s current date and hide events that have already happened. I’ve made a library that does just this.

Jekyll can’t do comments. That’s a pretty fundamental thing! But thankfully you can embed a service like Disqus at the bottom of your page. Technically your site is now using a database… just someone else’s database.


Maybe I’m sentimental and pine for simpler times when websites were just HTML. But for me Jekyll is so refreshing to work with after years of making websites with increasingly complicated machinery going on. At the end of the day a website is just a page of text, why not build it that way.

I'm launching a board game. If you'd like to know when it launches feel free to signup to my mailing list:

Mailing List

I hate spam just as much as you do and will probably never send an email out because I consider myself spam.