Jekyll vs. Hugo

Get help choosing one of these Get news updates about these tools


Favorites

64

Favorites

30

Hacker News, Reddit, Stack Overflow Stats

  • 438
  • 177
  • 4.52K
  • -
  • 816
  • 0

GitHub Stats

Description

What is Jekyll?

Think of Jekyll as a file-based CMS, without all the complexity. Jekyll takes your content, renders Markdown and Liquid templates, and spits out a complete, static website ready to be served by Apache, Nginx or another web server. Jekyll is the engine behind GitHub Pages, which you can use to host sites right from your GitHub repositories.

What is Hugo?

Hugo is a static site generator written in Go. It is optimized for speed, easy use and configurability. Hugo takes a directory with content and templates and renders them into a full html website. Hugo makes use of markdown files with front matter for meta data.

Pros

Why do developers choose Jekyll?
Why do you like Jekyll?

Why do developers choose Hugo?
Why do you like Hugo?

Cons

What are the cons of using Jekyll?
No Cons submitted yet for Jekyll
Downsides of Jekyll?

What are the cons of using Hugo?
No Cons submitted yet for Hugo
Downsides of Hugo?

Companies

What companies use Jekyll?
103 companies on StackShare use Jekyll
What companies use Hugo?
26 companies on StackShare use Hugo

Integrations

What tools integrate with Jekyll?
5 tools on StackShare integrate with Jekyll
What tools integrate with Hugo?
3 tools on StackShare integrate with Hugo

What are some alternatives to Jekyll and Hugo?

  • Gatsby - A Static Site Generator for React
  • Middleman - A static site generator using all the shortcuts and tools in modern web development
  • Hexo - A fast, simple & powerful blog framework, powered by Node.js
  • Metalsmith - An extremely simple, pluggable static site generator

See all alternatives to Jekyll

Latest News

New features, new docs and a new foundation for Algo...
Jekyll on Heroku
Keep Your Blog Consistent With Jekyll and Jest
Build, Test, and Deploy Statically Generated Website...


Interest Over Time


Get help choosing one of these

Jekyll or Hugo — Help me decide


Build speed

Generally speaking, Hugo builds sites much faster than Jekyll. In this benchmark, Jekyll took 187.15s to build a 10,000 page site that Hugo built in 2.95s. Hugo is written in Go and one of its chief goals is to stay extremely fast. Jekyll is written in Ruby, and while its plugin system makes it very extensible, it can’t keep up with generators like Hugo.

Jekyll vs. Hugo build times

Comparing Jekyll and Hugo build times (forestry.io)

Should build speed matter that much to you? It depends. If you’re building a small site with a few dozen pages that you’ll only edit from time to time, probably not. But if you’re creating an active site whose content will grow and grow over time, choosing a static site generator (SSG) with a faster build speed will make both your development environment and your build pipeline more pleasant to work with.

Extensibility

Jekyll is extensible via plugins written in Ruby and boasts a large ecosystem of them—see awesome-jekyll-plugins. These do anything from creating XML sitemaps and RSS feeds to adding analytics and comments. Hugo does not have plugins but does have built in features to handle those things plus shortcodes to perform common tasks like embedding Youtube videos. You can create your own shortcodes too. These are not, however, nearly as flexible as Jekyll plugins.

If your source content fits into Hugo’s (very flexible) content model, you can probably get by with a combination of Hugo’s shortcodes and partials. But if your source content looks nothing like what the end result will be, you might hit a wall with Hugo. Some very advanced Jekyll sites transform source content several times before it gets rendered to HTML, content that may not even live in the filesystem but is fetched on the fly by a plugin. If that sounds more like your project, definitely verify that whatever SSG you consider lets you achieve that level of customization, especially with Hugo. That said, there is a way to fetch external content from REST APIs with Hugo.

Content

Jekyll is blog-aware, meaning that it has built-in features that help you make a full-featured blog faster, such as drafts, permalinks, categories and posts. Put another way, Jekyll wants you to have a blog (one blog, really). As you read the docs, you’ll see a lot of references to that—blog post-like content must live in a _posts folder, for example. In Jekyll-land, there are pages and posts, the difference being that pages don’t have dates. This is a bit more like a traditional CMS like WordPress. The upside of this is a lower learning curve, as it’s pretty clear where things go, and if you are writing a blog you have less decisions to make. The downside is that you might feel constrained down the road if you want to add brand new sections to your site.

.
├── _config.yml
├── _data
|   └── members.yml
├── _drafts
|   ├── begin-with-the-crazy-ideas.md
|   └── on-simplicity-in-technology.md
├── _includes
|   ├── footer.html
|   └── header.html
├── _layouts
|   ├── default.html
|   └── post.html
├── _posts
|   ├── 2007-10-29-why-every-programmer-should-play-nethack.md
|   └── 2009-04-26-barcamp-boston-4-roundup.md
├── _sass
|   ├── _base.scss
|   └── _layout.scss
├── _site
├── .jekyll-metadata
└── index.html # can also be an 'index.md' with valid YAML Frontmatter

Common Jekyll directory structure (jekyllrb.com)

Hugo is another story. Hugo lets you decide where your content goes, all of it. What’s a page? What’s a post? You decide! Grab a cup of coffee and read the Content Organization page in the Hugo docs to get the full scoop, and don’t feel bad if you don’t get it the first time around. This makes Hugo extremely powerful—you can have completely separate blogs and other list-like content sections with entirely different layouts and configurations running on the same site. You can output content in formats other than HTML, even JSON. The only thing to watch out for is the learning curve. If it’s your first time with Hugo, you might want to build a few throwaway Hugo sites first before you start drawing up the grand plans for your real project.

.
├── archetypes
├── config.toml
├── content
├── data
├── layouts
├── static
└── themes

Directory structure for a new Hugo site (gohugo.io)

Themes

Both Jekyll and Hugo have the concept of themes. Themes are like website templates but structured in a way that the underlying static site generator understands. Using a theme can greatly reduce the amount of HTML, CSS and JavaScript you need to write for a new site. There are tons of Jekyll themes out there, this is just one of many sites that collect them. There are comparatively less Hugo themes but many of them are linked to directly from Hugo’s themes site, making them easier to find and giving you a guarantee that they passed some basic criteria in order to be listed. Both Hugo and Jekyll support overriding pieces of themes, but Hugo’s more advanced template lookup order means that you can often do it with more precision.

Jekyll Hyde theme screenshot

Hyde is a popular theme for Jekyll

Hugo Hucore theme screenshot

Hucore is a minimal theme for Hugo based on Hemingway2

Further reading

Here are some other topics worth exploring as you make your decisions:

  • Templates: Jekyll uses Liquid templates which will be more familiar to most developers, whereas Hugo uses the more restrictive but faster Go templating language

  • Assets: Jekyll has some built-in support for asset pipelines as well as quite a few plugins for it; Hugo leaves this up to you (though it may have support in the future)