Hacker News new | past | comments | ask | show | jobs | submit login
Poll: What's your favorite static site generator?
158 points by diggan on Dec 1, 2012 | hide | past | favorite | 119 comments
Lately, I've been testing out different static site generators but it's a sea of alternatives. My favorite so far is Punch but the non-existing support for articles/blog-posts and subfolders makes it not so good...

So, what's your favorite?

(Let me know if I missed someone, poll options are taking from here: https://gist.github.com/4181764)

249 points
homebrew (your own solution)
103 points
67 points
53 points
52 points
51 points
36 points
23 points
14 points
8 points
8 points
7 points
7 points
5 points
5 points
5 points
Movable Type
5 points
Second Crack
4 points
4 points
3 points
3 points
3 points
3 points
3 points
2 points
2 points
0 points
0 points
0 points
0 points

Hakyll, since it has Haskell type safety goodness and is very customizable (it's basically a Haskell EDSL for static site generation):


The other nice thing about Hakyll is that it uses Pandoc, so it supports different input and output formats (such as HTML slide generation from Markdown).

I just started using Hakyll and it's really awesome. It's very configurable, and integrating with Pandoc makes it very versatile.

Maybe this doesn't matter to most people, but having Pandoc means support for math (e.g. TeX) is standard.

I have a fairly complicated setup at the moment, and yet it still has less than 100 lines of configuration.

Also, being in Haskell, I've found it pretty fast so far despite being written in and configured with a very high-level language.

I'm short, Hakyll is awesome. Much better than my old solution which was a bunch of hacked-together php. (I was using my school's shared Apache server, a don't judge me :P.)

  > I'm short, Hakyll is awesome.
A good solution for the vertically challenged. :)

Ah yes, phone typos strike again. You'd think I would have learned to proof-read my posts by now...

> Maybe this doesn't matter to most people, but having Pandoc means support for math (e.g. TeX) is standard.

I like the optimism in that "maybe" at the beginning of the sentence.

1+ for hakyll, has built in customizable deploy command too

Started to learning Haskell few weeks ago. Love to see it. BTW, nice site theme.

nanoc [1]. It takes more effort to set up the basic rules for your site, but it's incredibly powerful. For example, my blog [2] can generate archive pages for my articles by year, month, and tag, with the generation handled entirely in "user space," without any undocumented hacks to the system or extenal pre/postprocessing. Another site I created using nanoc has the ability to take recipes that are specified only in the YAML content metadata, and expand them into full-fledged HTML pages - again, entirely in "user space."

In general, I find the ability to use code to control the site's generation very refreshing - the static site generators I had used beforehand (for example, Webgen) rely on configuration files to determine the rendering process, which for sufficiently complicated sites can be hard to trace. By contrast, nanoc's Rules file allows you to see and control exactly how a given file will be processed.

The code is also very well-written (it resists using the hard-to-follow Ruby magic that Rails and company tend to use), although were I Denis Defreyne, I would have written some sort of plugin manager by now.

[1] http://nanoc.stoneship.org/

[2] https://bitbucket.org/leafstorm/leafstorm.us/src

Pelican <http://getpelican.com/>; is a Python-based static site generator with a very active community behind it. It has a good mix of features without being overly complicated. Check it out!

(Disclaimer: I'm a Pelican project committer.)

I just moved to Pelican, and am liking it so far, except for one thing: the lack of mobile support. The theme I'm using, tuxlite, looks great in a browser; but on smartphones, it's squint city. I'd love it if Pelican automagically generated a mobile-friendly version of the site, which could then be used by some Rewrite rules based on the browser.

You can extend pelican to make a mobile site, or you could just put together a responsive theme for it.

I really enjoy Pelican. It's simple.

For other devs: if you're familiar with Jinja, then you're 80% of the way there.

I like Pelican (for blogs). Python, reST + Jinja.

Looks like your list is basically Ruby, Node and PHP, excluding all the Python and other language options.

Yeah, the list is only Ruby, JS and PHP currently but will add more generators from other languages as soon as possible.

A big fan of Pelican as well

How does it compare to Wok? http://wok.mythmon.com/ (as said before, I'm looking for the simplest Jinja2 generator)

Webby (http://webby.rubyforge.org/)

Branch with ruby 1.9 fixes is at https://github.com/namelessjon/webby

It is not under active development, but is for me feature-complete, stable and incredibly flexible. Advantages are:

- pure ruby (no liquid templates needed)

- each page has its own subdirectory where one can put images, scripts etc; your article becomes a 'package'.

- chained templating filters; you can do erb->markdown->your custom filter with minimal effort.

- mostly implemented by extending rake tasks, no extra api to learn and if you know rake you can continue adding features forever.

Another Webby user here. I forked the repo when I learned it was no longer maintained and I got tired of patching string.rb with "#encoding: UTF-8" whenever I was installing the gem someplace. :)

I tried something else at some point; I forget what, but it was more complicated, so I stuck with Webby.

Extending it is just easy. I've been using it to create mobi and epub files from Textile, as well as plain old Web sites. I think I use it for pretty much every site I have that isn't hitting a database, and even with those I probably have a static section built using Webby.

webby +1. never had any problems with it.

Coleslaw, ye olde Common Lisp static site generator (with optional dynamic backends, if that's how you roll)


Ha. The optional dynamic backend got taken out during a rewrite in August but it was never very interesting. The new plugin and theme support is much more interesting. ;)

Wow. the Cliki has gotten a makeover since the last time I checked it.

Coleslaw looks very interesting, especially with the use of Git. Added it as an poll alternative!

Holy frak! So why did I just wrote a homebrew static site generator in CL two weeks ago? :D.

Anyway, it was a) a great experience, and b) gave me some insights into why building systems (stuff like rebar, rake, etc.) look the way they do.

Neat. :) Is yours online anywhere?

It's a kludge, but here you go: https://gist.github.com/4190622

The original GitHub repo is private right now, because I'm not yet ready to reveal the site I'm building :). I plan to launch in two-three weeks; I'm working on content and styling right now.

I use nanoc rather than jekyll for my blog for reasons I give here: http://theatticlight.net/posts/nanoc3/

I like ikiwiki a lot because it plays nicely with git and there are many useful plugins: http://ikiwiki.info/

I do not particularly like ikiwiki, but I use it and have no good reason to switch.

Docpad is really, really a great static generator. It doesn't use a lot of files, its file architecture is easy to understand, and it's node, so I don't have to hack with ruby versions.

Author of DocPad here. For a bit of history, DocPad was created 2 years ago now out of my utter frustration with all the other static site generators - frustration from not being able to use it for anything besides trivial use cases (Jekyll is the worst offender here). Building DocPad, it's goal has always been to set you free, ensuring you never hit another brick wall or constrain yourself. That's why we're seeing it used for such an awesome wide range of use cases easily and freely - personal sites, company sites, huge corporate sites, web applications, chat servers, whatever. Because of its plugin system and that it is built with express.js, you can extend it easily as well as add dynamic (re-render on each request) abilities when needed. Well worth checking it out if you got a while, here is a great intro video to it: https://vimeo.com/53755097

My advice to other people considering making a static site generator - please don't make another compiler or caching layer just like the rest, anyone can do that. But if you want to make a large difference, one that you can't do alone, then see if you can team up with an existing project, they'd certainly welcome your insights and probably have a ton of ideas already - the conversations will always be valuable for all parties involved, and the end result for the world will be much better quality solutions rather than just merely more solutions.

Cheers, Ben.

For those interested, StaticMatic 2 is a similar, ruby alternative (disclaimer: I'm a major contributor): https://github.com/mindeavor/staticmatic2

I was glad to discover do pad based on your comments. Thanks!

bash and wget.

Simple example:

    for f in `ls *.php`; do  wget http://myexample.com/$f -O $f.html; done;
    rename 's/\.php\.html/.html/' *
    sed -i 's/\.php/.html/g' *.html

Bash, markdown and hope.



it is horrid, but it works for me.

Seriously, how about a voting option for something like 'homebrew'?


When I need a 'static' site I just use whichever CMS/framework is best and wget --mirror the output.

That sounds horrible. All of the added complexity of a heavyweight framework without any of the advantages. Most frameworks have an option to cache the output if you want to go that route, then you'll get the performance of a static site without losing the flexibility.

I tried Octopress, but didn't like the default theme/layout — I wanted to design my own theme, and was hoping to build up a site from scratch, not rip out what was already there. After considering a bunch of Python-based SSGs which didn't impress me for various reasons, I went with Jekyll and have been quite happy.

One feature on my todo list is to find a way to add infinite scrolling (this is 2012, I don't think blogs should have “Next Page” anymore!). It seems it shouldn't be too hard but a quick search suggests nobody has tried this with Jekyll (or Octopress) yet.

What Python-based SSGs?

I looked at Hyde, Cactus and Pelican, but confess I can't recall what I didn't like about the first two. Nothing seems obviously wrong with them. Maybe they looked unmaintained or not as mature as Jekyll, although Cactus has a bunch of recent commits so that doesn't seem right. With Pelican I was scared off when I saw the license (Affero GPL, which forces you to provide source if you use the code on a live site, or something like that).

Sorry this isn't a more useful comparison. I wanted to find a good-enough SSG quickly, so my search was pretty shallow.

Phrozn. PHP based, still in beta but been using it for months now without any problems.


Yet another plug:

staticjinja is an extremely minimal static page generator. It's less that 130 lines of code, and really is hardly more than a useful wrapper on top of jinja. Perfect though for writing Github Pages sites if you're not a fan of Ruby.


I liked Nanoc, Middleman, Nesta CMS… But then I wanted to publish posts from my iPhone (without connecting to an EC2 micro instance). So I made a Dropbox-based blog engine: https://github.com/myfreeweb/markbox

I like poole.py: https://bitbucket.org/obensonne/poole

Simple and to the point. Probably not good for larger sites, but it works for small ones.

Another happy Hammer user here. Includes fragments, understands Markdown and SASS, and (when combined with Anvil) runs locally.

I built 6 static sites with Hammer this week, absolutely great product.

What do you guys use for form submission with these static site generators? I'm using Google Docs forms at the moment but I'm not very satisfied with it.

All I need is a simple "Get a quote" page.

Just plain html/css plus Mustache (the logic-less tempaltes).

Not much new things to learn, literally no limits and a lot of freedom.

And here is my toolset:

LIVEditor: Edit html and css and see the result instantly (http://liveditor.com, my own project, you can imagine LIVEditor = Web Browser + Code Editor + Html Inspector like the one in Firebug).

Mustache: Use this logic-less template system to represent reusable content in the html.

Python: Call pystache to stuff the {{mustache}} templates in the html files.

Years ago we want to do this and I didn't know any tool for it. I develop the application internally and we used wget mirroring to statically deploy it.

Initially I thought it would suck but turns out wget is way better than I thought. With the combination of ssh etc. We build a simple script that deploys takes mirror of the website and deploys it.

After about 5-6 years, it's still in production with no issues. Internally it's a wiki style, simple database model home grown ASP.NET application.

That sounds pretty cool. Have you considered publishing it under an open-source license?

I haven't actually, mostly making something open source takes time, if you don't have that extra time pretty much no one will use it. (at least that's my experience)

exactly, i developed a solution based on pavuk (which has a bit more options then wget) - still in use as far as I know after almost 8 years!

I'm using octopress at the moment but it's terribly slow for anything over the trival level. Just a few hundred pages and it's minutes between generations.

Avoiding that problem was one of the main goals of Nikola's development, which is why it has a whole dependency build thing (based on doit, similar to a Makefile).

I have a 1200+ post blog so it was that or death by boredom :-)

I converted my site (http://www.tapnik.com) from Django to use Wok and it's been a great move. It's much simpler, and easier to add hooks to do stuff like cropping/resizing images. I don't update it very frequently, so I don't miss the admin interface at all, and even when I do it's usually on my laptop where the site code lives anyways.

Commence shameless plug for my project, "fragments":


It could be used as a static site generator, among other things. But it uses version-control style diffs and merges, instead of any structure or language, which has the advantage that there's no generation step, and you can just edit the files as pure HTML.

I'm a fan of Jekyll wrapped in rack so I can host it on Heroku (and do all the misc redirects I needed to convert it from my old WordPress setup and keep links the same, without any htaccess).

For those interested I wrote a guide on WordPress to Jekyll migration: http://paulstamatiou.com/how-to-wordpress-to-jekyll

Although I'm not sure if it counts as a static site generator, about 3 months ago there was a Show HN for a blog generator that was entirely client-side that had a pane on the left where Instagram, Github, etc. content was displayed and the actual blog posts were from your Tumblr account.

Does anyone remember the name of that project? I've been looking everywhere for it...

Nikola is missing from the list :) http://nikola.ralsina.com.ar/

Not anymore, added Nikola as an alternative!

what's the simplest Jinja2 generator out there?

...the use case is for creating and tweaking basic html themes. I currently helped a designer/front-end-guy set-up Hyde but it was horrible and he only needed 20% of what hyde does to get his job done... finally found a forked version with a patched bug that worked on Windows (original pypi and git versions had a weird bug), figured out that the only way to put media files was in the deploy folder because otherwise Hyde still tries to do stuff to them and fails miserably, and for SASS I just taught him to do `sass --watch sass:css` as I was afraid to think what horrors lay in the land of Hyde/SASS integration... and after all this it still does weird shit (on the other hand, my own experience with Hyde on Linux was much smoother... maybe it's just that the devs only test it on *NIX)

I wrote my own tool here because I too had little interest in complexity of some of the larger generators: https://github.com/Ceasar/staticjinja. It's just 129 lines of code (https://github.com/Ceasar/staticjinja/blob/master/staticjinj...) and so far I've used it to build three sites with the ease I was hoping for. Might be what you're looking for, and at least, you should be able to edit it to fit your needs.

I am a bit biased since I didn't like the existing solutions and wrote my own. My pages are delivered by drunken pandas (drupan) since October 2011. Jinja, markdown and stupid simple templates with some git magic.


I've used NestaCMS (which I would consider a more dynamic Sinatra app than a static site generator) and my current site is built with Jekyll. A lot of these seem interesting (specifically Middleman), but I really don't have the endurance to try them all out.

So, let's hear it. What makes your favorite better than Jekyll?

I tried jekyll, octopress and toto. ended up with toto and a hosted my blog on a free instance on heroku.

Any experience here with https://telegr.am/?

I recently made a couple of sites with Middleman and I've been really happy with it.

Now,i'm a web developer and i'm new to this. why don't anyone write a html page from scratch? what is the real use of site generator? i have worked on wordpress, drupal, and others. Anyone please be helpful to me.

Site generators of this type form a happy medium between the inefficiency of writing HTML from scratch (after all, most boils down to templates filled with content) and the inefficiency of regenerating static content upon every request (as WP and Drupal are prone to do).

If there's no dynamic stuff on your site, why pull everything from a database? And if you save time by using templates, why roll your own HTML?

but most of the best static sites so far have a different view.. so, to make a different view, we cant use a template. but i would be interested in leaning these things. i'm on a windows. can suggestion how to install and get started with octopress(seems to be the best)?

Hastie - https://github.com/mkaz/hastie

A static site generator in Golang. My favorite because I wrote it :-) but it is also super fast, however low on features.

Old post on my now defunct blog on Static Sites. Had a look at quite a few.


Jekyll all the way. I even presented about it in my local meetup group: http://www.youtube.com/watch?v=GV6n9LU2B2w

NestaCMS got my vote, because it's what I use for my blog. Is it really a static site generator, though? It can be used as one, I guess, but I think of it as a dyamic Sinatra app.

I've used NestaCMS and it's great, but I also wouldn't really consider it a static site generator.

I have done several sites with FMPP/Freemarker in the last 10 years and it still good. Right now I am using Brunch for a web app front end and it looks like the future to me.

Serve (http://get-serve.com/). I usually pair it with a simple Rakefile to clean up any cruft.

Seems like Punch supports blog posts now: https://github.com/laktek/punch-blog

emacs + org-mode + org-public

org-public? Never heard of it.. any tips/links on setup?

I've been trying to get org-publish + org-blog working recently, but haven't had time to tie it all together right.

yes, org-publish. i have no clue how I managed to mispell it.


Simple. Quick deployments. Python/django based.

If you use/like Freemarker, FMPP is a terrific generator.


That name is very close to vim fugitive.

There are only two hard problems in computer science: cache invalidation and naming things (and off-by-one errors)

I know, and it's actually even linked from fugitive's Gitorious page if you click "more…" in the description, but as an Emacs user, I didn't know about fugitive.vim before choosing the name of fugitive, and the name is too awesome to change.

nanoc, middleman and nestacms. i really like that you can push static markdown to the server it'll be exported to html automatically with static file caching as an added bonus. More elegant and easier to manage then a CMS or WebApp with Varnish.

Hyde has not been significantly modified in nearly a year. If you're looking for a Python-based static site generator, Pelican <http://getpelican.com/>; is under active development.

(Disclaimer: I'm a Pelican project committer.)

no hyde?

Nope, not one hour ago. Added it as an option now.

You spelled Stasis wrong :)


Shit... Correct now, thanks! :)

cached XSLT output :)

ouch.. :)

just converted my site from wordpress to jekyll, and I'm quite happy... mostly because of the simply syntax highlighting

rst2html and Makefiles. Sometimes Sphinx.

I like wok. It appears to be missing :)

Added! Link for the lazy ones: https://github.com/mythmon/wok

I didn't about wok till today. Seems great


Makefile + jade + stylus

Where is Movable Type?

It's in the list now!

Movable Type.



omg, so many intelligent people reinventing the wheeeeeeeeel... makes me sad.



[Docpad](https://github.com/bevry/docpad) is my lover. You can not have her.

Half of these static site generators, I could not find by typing their names in quotes with cms at the end in Google.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact