10 Best Static Site Generators

The trend of web pages going static is thanks to the hundreds of free static site generators out there. Here is a list of 10 best static site generators.

Last Updated: April 6, 2015

There has recently been huge shift to static websites in the field of web development. Static sites are easier to maintain (No databases, No server-side scripts!) and are more secure, generally, considering the only thing being served to users’ devices are HTML, CSS and Javascript files. In order for some types of websites like blogs, and documentation websites to become static, just directly writing code in HTML files becomes strenuous. It also becomes difficult for maintaining sites with large content, especially when some small features (like design) need to be changed.

This is where static site generators come in. Static Site Generators basically convert (or compile) a bunch of different resource files into one website. This means content can be kept separate from layout code, and the site assets like images can be kept completely apart. There are a lot of static site generators out there, hundreds even. Here is a list of the 10 best static site generators along with their reviews.

Static Site Generators

1. Jekyll


In one word: The King of Static Site generators. Jekyll is the most used static generator out there, with the greatest documentation, largest community, and best support. Even GitHub offers inbuilt support for Jekyll on its GitHub Pages service. Jekyll prides itself on being blog-aware. Making a static blog on Jekyll is really easy. It only requires knowledge of basic web development. It really shines, because of its easy setup features for beginners, at the same time having really powerful features for those with the knowledge to use them.

Jekyll lets you create and use different plugins, tags, and even make your own converters for any markup language you want to use with Jekyll. The default markup language for Jekyll -like most of the others- is Markdown. Jekyll has plugins for compiling Less, Stylus, generate tag clouds, user pages for blogs, and a lot more.

Jekyll is based on the Liquid Template Engine by Shopify. It runs entirely on Ruby, so it is easily installable along with dependencies using rvm, or using bundler. Jekyll also has easy migration options, if you are looking to migrate from WordPress, Blogger or any other blogging site. It beats every other static site generator out there, hands down, in terms of user size. It is under active development  (the last change to its GitHub repo coming a day ago, at the time of writing).

To install Jekyll, just enter this command in Ruby: gem install jekyll


2. Pelican


Pelican is a static site generator built on Python. It features multi-language content posting, code (syntax) highlighting, as well as easy generation of RSS and Atom Feeds. Pelican has a nice selection of Plugins, all of which are hosted on a central GitHub repository. It  supports 3 document formats by default: Markdown, reStructuredText, and Ascii Doc.

Pelican is quite unique, since it is built on Python. It supports the powerful Jinja Template Engine which is python based, to allow easy  creation of beautiful themes and templates for Pelican. In terms of migration support, Pelican offers support for WordPress and Tumblr. Rather than the usual YAML files for configuration, Pelican uses a .py file named pelicanconf.py for configuration and settings.

The easiest way of installing pelican, is by using pip : pip install pelican


3. Middleman


Middleman is a Ruby-powered static site generator which follows an easy-first approach to building static sites. It has powerful features for maintaining static blogs, like easy tag generation, quick commands for listing categorized articles and pagination. Middleman does not offer any migration support, so if you want to make an existing blog static, Middleman may not be the best idea for now.

Middleman offers support for most of the modern tools of web development like HAML, Coffeescript, Sass, and the rest. Its default templating engine is eRb, but it allows you to switch to a custom template engine of your choice. All Tilt-enabled template engines (the full list can be found here) work on Middleman. It natively supports 2 configuration formats – YAML, JSON. Frontmatter for your content must also be YAML or JSON depending on the configuration format you’re using.

Install Middleman using Ruby with: gem install middleman


4. Metalsmith


Metalsmith prides itself on being pluggable static site generator. This means all the logic of Metalsmith is handled by plugins. Any feature you need, just add the required plugins. The sheer number of plugins offered by Metalsmith beats nearly every competitor (maybe barring Jekyll and Docpad). This means Metalsmith can be used as more than just a static site generator.

In their own words “Since everything is a plugin, the core library is actually just an abstraction for manipulating a directory of files”. What this finally adds up to, is that you use Metalsmith just as easily as a project scaffolder, an ebook generator, a build tool, making technical documentation, and more (these some of the examples showcased on the Metalsmith website).

Metalsmith is based on Node.js, and it can be installed using the node package manager with: $ npm install metalsmith


5. Harp


Harp has inbuilt pre-processing for Jade, Markdown, LESS, Sass, Coffeescript, EjS and Stylus without any extra configuration. It also let you use the layouts/partial paradigm with Jade and EjS, which needs special plugins on other static site generators.

Harp is built on Node.Js and can work hand in hand with the Harp Platform, which lets you create web pages from your Dropbox folder. Harp can also compile pages for use on GitHub pages, PhoneGap, and Heroku as well.

To install Harp, use npm and run: sudo npm install -g harp


6. Octopress


Technically Octopress is a modified Jekyll fork, but due to its huge popularity, it has been included in this list. Octopress is basically Jekyll for hackers (and rails developers). Customizing Octopress becomes easy, especially if you are building a blog, as Octopress by default includes many of the plugins you would need to run a blog on Jekyll.

In the customization part, Octopress’ code makes it easier for users to modify code, and write their own code. That being said, a lot of the plugins for Octopress is compatible with Jekyll (and vice versa).

To install Octopress,

  1. Clone the GitHub repo
    git clone git://github.com/imathis/octopress.git octopress
    cd octopress
  2. Install Dependencies
    gem install bundler
    rbenv rehash # If you use rbenv, rehash to be able to run the bundle command
    bundle install
  3. Install the default Octopress theme
    rake install

7. Docpad


Docpad is a dynamic static site generator. It extends the capabilities of normal static site generators, with features like database querying through a query engine, importing pages from external databases, and re-rendering the webpage on each request.

Docpad has native support for pre processors, like Coffeescript, Stylus and LESS, and uses plugins for supporting template engines, pre processors and markup languages, so you can choose whatever combinations you want by using the necessary plugin. Docpad also supports importing pages from external sources like Tumblr, GitHub and Dropbox through plugins.

Docpad is a feature-rich platform, with lots of plugins and great documentation. It is built on and uses, Node.js for server interactions.

Just install Docpad using npm: npm install -g npm; npm install -g docpad@6.78


8. Hexo


Hexo is a lightweight static blog framework that prides itself on its blazing fast site generation speed. Hexo is great for bloggers with large amounts of content who want a simple static site generator. It offers easy migration options from other blogging platforms like WordPress, Joomla, Jekyll, Octopress and RSS. On of the great things about Hexo is that you can use the most of the plugins that are made for Octopress (and by extension, plugins made for Jekyll with very minor modifications)

Hexo supports Markdown, YAML for front matter and configuration. Keeping with its speedy nature Hexo lets you deploy to sites like GitHub, Heroku and Rsync with just one command.

Hexo can be installed using Node.js: npm install hexo-cli -g


9. Hugo


Hugo is a general purpose static site generator with good all-round features like templates and partials support, pagination, and ‘taxonomies’ which is basically a unique content categorization system followed by Hugo. This means you can classify posts easily on the basis of not just tags, but also in any other way you wish, like categories or series directly from frontmatter. Hugo supports three data file types – YAML, JSON and TOML, and lets you decide which one is most comfortable for you.

Instead of plugins, Hugo uses ‘shortcodes’ which let you use rich content inside your Markdown. To know how this works, read this article. Hugo is written in the Go programming language, and it offers separate installation files for different platforms on its GitHub page. To know exactly how you can install Hugo for you to use, read the installation instructions for Hugo.

If you use Homebrew, then Hugo and all dependencies can be installed with: brew install hugo


10. Brunch


Brunch leans towards HTML5 web applications rather than blogs and websites, but it still is a very simple-to-use, rapid static site generator. It not only compiles all your code and scripts, but can also shrink (minify) your code, and compress images automatically. Brunch has a whole host of plugins which you can use to customize it according to your needs. The complete list of Brunch plugins can be found here.

Brunch offers ‘skeletons’ which are basically boilerplates for starting your website (or web app).  It offers one of the fastest compilation speeds, simply because Brunch caches all unchanged parts of your project and compiles only those files which are revised. Brunch is built on Node.js and can be installed using npm: npm install -g brunch


SEE ALSO: 7 Best Alternatives To GitHub

Have any suggestions about this article? Leave it in the comments!