Migrating from Jekyll to Hugo


The most commonly cited advantage for Hugo is that it is much faster than Jekyll because Hugo is implemented in Go, while Jekyll is implemented in Ruby.

Live reloading

While Jekyll’s speed was not a pain point for me yet, I did want live reloading. I followed this pull request for adding live reloading to Jekyll without having to use a plugin. The feature was released with version 3.7.0 on January 2, 2018. However, I experienced an issue when I tried to use it. I would get 404 errors when pages were regenerated, presumably because the browser requests the page before it is ready. There is an open pull request to fix it.


This is the commit where I did the migration. Hugo has a command to import from Jekyll, so I ran that first. Most of the work after that was just converting the templates to Hugo’s syntax, which took a bit of time since I was not familiar with Go’s templating libraries.


Later on, there were multiple times when I discovered that Hugo has a convenient method for doing something, like adding Google Analytics, embedding YouTube videos, or adding Disqus comments. It wouldn’t be difficult to do these things with Jekyll, but they would involve adding boilerplate that isn’t necessary with Hugo. Small but nice touches like these give me confidence that I’ll want to stick with Hugo for a long time.


Jekyll is still a solid choice for creating a static website. It has a large community and its own advantages (like a plugin system). However, I’m happy that I switched to Hugo and that it’s in my development toolbox now. I encourage anyone who maintains or needs a static website to check it out.



Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store