Hugo vs Jekyll - Comparing 6 Factors


Previously we benchmarked Hugo vs. Jekyll. It was a devastating affair for Jekyll.

@chrisdmacrae wrote an additional article looking into the differences between these most popular SSGs and how they compare according to 6 different factors. Check out the article :point_down:


I think it’s much easier to learn the language of go-templates than to run the Jekyll under Windows.


Very true. It’s a dependency nightmare.

#4 This was 5 years ago:

What you see there is me giving up hope on ever getting my own website up (Octopress is similar to Jekyll)… Then and there, I vowed to never touch a Ruby project.

So in my beginner-user experience, this is straight-out wrong:

The “beginner” term in there needs a qualification like “beginner knowing the Ruby toolchain on all OS’es”.

Then many years later, I hear about Hugo on HN, and here I am :slight_smile:.


I once moved my blog from WordPress to Jekyll.


Hey guys!

So I didn’t write this article but I am responsible for that “beginner-friendly” quip. Let me explain my reasoning:

I have had to install Jekyll on several machines and don’t find it terribly difficult (yeah I know, “works on my machine”, YMMV, etc.) Of course it’s harder on Windows (like most things lol) but using Chocolatey helps out in that regard. Hugo is obviously easier to install; no contest there.

The “beginner-friendly” comment was primarly geared toward developers who want to create a theme or customize their site. Jekyll’s built-in Sass compilation means devs don’t have to set up their own asset pipeline for preprocessing. Also, while this is purely a matter of opinion, the developers I’ve worked with pick up Liquid more easily than Go’s template language (though each one has its own learning curve.)

Moreover, I think Jekyll is more intuitive to developers who are new to the idea of SSGs in general. There is a little more parity between the hierarchy of the source files and the resulting HTML. This isn’t always a good thing, but it’s easy.

For the record, I don’t find Hugo to be beginner-hostile at all. In my opinion Jekyll has a slightly lower barrier to entry, and a significantly lower ceiling. I don’t think anyone in 2018 should be opting for Jekyll over Hugo (IMO.)


So, this is subjective, and that is always great – but I would kind of expect some other areas Jekyll would shine compared to Hugo: Plugins and the power of Liquid. Which is both great, but also a two-edged sword. I have seen some Jekyll sites that I think could have been made much simpler and cleaner in Hugo. This is natural. If you give people the full power of scripting in their content files, they will use it. So, I suspect the “beginner friendly” statement is coming from an advanced user trying to project how simple looks like for the beginner.


So, I suspect the “beginner friendly” statement is coming from an advanced user trying to project how simple looks like for the beginner.

Fair point. I can never remember exactly how hard a thing seemed the first time I had to do it.


Having just had to go through the learning curve for both - from a standing start - here is my take for what it might be worth (nothing probably!).

With Jekyll, you start with nothing and the learning curve is STEEP if you don’t have an existing template that happens to meet your needs.

Ruby: sheesh! Who wants to mess with that unless you are already a Ruby developer.

Liquid: Woah - this drove me bonkers I’m afraid. Only some parts of Liquid are available in Jekyll, some things don’t work. It is hard to know which. Does something not work in Jekyll or did I make a mistake, how would I know? Here is my test page: of course, some of that might simply be noob mistakes. But you can see my expectations vs reality on that page.

Liquid tags in Markdown: When I found that you couldn’t use all the Hugo tags in a content page I’ll admit that I was frustrated to begin with (Note that I did Jekyll before Hugo). But, once I’d adjusted, it actually simplified my pages a fair bit in places since I no longer had builds failing because I’d forgotten to escape something that I wanted to have as a code block not executed.

With Jekyll, I had to manually build some page lists, with Hugo I don’t.

With Jekyll, I can’t build a theme without installing Ruby, with Hugo I can - I don’t need SASS for simple themes so I’ve not yet been hit by the toolchain issue.

I used Jekyll because I was setting up a GitHub pages site - sorry Netlify, I hadn’t realised how good you were at that point :grinning: - using Jekyll with GitHub with no local build is horrible. A simple writing mistake causes the build to fail with an incomprehensible error message. I put together a list of some issues I found here: - Perhaps some of this would happen with Hugo as well - but then Hugo only needs a single file on my PC, not even an install, so local builds are trivial.

I really should update the page on that site about alternatives to include Hugo.

Of course, again, it may be that I misunderstood a load of stuff - but I AM a beginner at Jekyll and Hugo - Beginner Friendly - hmm, not so much.

But I did build an information site with it so it can’t be that bad. After all, I still bothered to learn it and build the site rather than trying to extend my WordPress site which certainly tells you something.

I’m not sure that I’d cally Hugo “beginner” friendly either especially. But I did manage to build a basic theme to match my WordPress one in under a week (well it is a way off being complete yet, but it does already work - mainly).

I’m afraid that I will be migrating my Jekyll site and merging into my main blog (the one I’m converting from WordPress). I’m going to redirect the GitHub site then - even though it has only been going a few months.

Work in progress is here:

Either way, don’t think that I don’t appreciate the efforts put in by the developers of both of these projects. It is wonderful to have choices and so liberating to move away from lumbering old Wordpress. I think the only think I will miss is the amazing Wordfence Security plugin - they do such a great job that I want to support them. But then, I no longer need that plugin because I don’t have the security issues any more!


I think it is subjective indeed - as most “discussions” about “mine is better than yours” :grin:

I would say that, odd function syntax not withstanding, I’ve found it a lot easier to learn Hugo’s syntax than Liquid’s. It may help that I am old-school and I’ve worked with languages such as FORTH and LISP. So Go is a lot less odd than those! Also, as mentioned in my excessively long missive below, Liquid is not consistently applied in Jekyll so you cannot always rely on the documentation.


That’s the key, no wonder the below Go template snippet feels natural to me:

{{ $.Scratch.Set "__repo_updated_time" (index (index (index (index $repo_json "commit") "commit") "committer") "date") }}

… I see it just like the below in Emacs-Lisp :smiley:

(setq foo (index (index (index (index repo-json "commit") "commit") "committer") "date"))

[Poll] Which templating language do you use?

Haha, I was more of a FORTH man. Reverse Polish notation and LIFO stacks I could understand, LISP, not so much :slight_smile:

But then again, I was also an APL programmer for a while - and that really messes with your head as you needed a special keyboard for the math symbols.