WordPress
Article

Blogging: WordPress or Jekyll

By Hugo Giraudel

Disclaimer! I don’t really like writing comparisons. While I always try to stay neutral and factual, I feel like some people always feel offended and forced to nitpick or worse. So please let me remind you that this article is only intended to give a rough overview of both platforms and what you should expect from each.

So you want to create your own blog, or port your blog over, but you may not know which platform is the right fit for your needs. Of course there is a world outside of WordPress or Jekyll, but for sake of simplicity we’ll only dig down into these two.

WordPress or Jekyll

First, allow me to introduce the two:

WordPress is a free and open source blogging tool and a content management system (CMS) based on PHP and MySQL. Features include a plugin architecture and a template system.
Wikipedia – WordPress

Transform your plain text into static websites and blogs.
Jekyllrb.com

Note: both platforms are fully able to power complex websites, but for the length of our article we will only focus on the blogging component.

Data Storage

The first thing that really divides these platforms is the way they handle data, which in our case would be a collection of articles.

WordPress being a MySQL-powered CMS, everything is stored in a database. WordPress then reads from and writes to this database whenever needed, fetching existing and adding new content.

It’s worth nothing WP stores much more than just articles. For instance, and that’s probably much more important than articles at this point, WordPress stores account credentials. To log into your dashboard and write articles, you have to type in your username and password so you can access the admin area which grants access to database.

On the other hand, Jekyll is basically a lot of files that get compiled only to build a static website. In itself, no server nor browser is able to read or serve a Jekyll site if it’s not being compiled to HTML/CSS first. So while being coded in Ruby, Jekyll actually requires absolutely no server side language or database system.

Hosting

No matter what you end up choosing, hosting should concern you and have an impact on your decision. Both systems really do not work the same.

WordPress being a PHP/MySQL CMS needs to be hosted on a server that supports both PHP 5.2.4 or greater and MySQL 5.0 or greater. WordPress officially recommands Apache or Nginx. However, once everything set up on the server, you should not have to push new things now and then since everything is stored in a database.

When it comes to Jekyll, I can not recommend GitHub Pages hosting enough. The thing is, GitHub Pages support Jekyll, which means it is fully compatible. When you push an uncompiled Jekyll project (which has some very specific traits) to a gh-pages branch of a GitHub Repository (public or private, it doesn’t matter), GitHub will compile it on its side and serve it.

That means you don’t have to compile your project on your machine, then push to a server. You can push the uncompiled source to your repository, and leave the compilation to GitHub Pages, which will serve it.

That also means you can update your site through GitHub directly, and use GitHub as a CMS which can be very handy when fixing typos and little things here and there. That being said, it will be much more convenient to clone, work, commit and push when your article involves images and stuff.

Anyway, you can also decide to compile your Jekyll project on your machine and push it to a server that is totally unrelated to GitHub but since Jekyll doesn’t rely on any database at all, and everything is just files, you’ll need to push to your server for every new article, which can be tedious.

Writing

Writing an article in WordPress goes through this steps:

  1. Log into your WordPress dashboard with your secure credentials;
  2. Head into the ‘Post’ section to create a new article;
  3. Write your post in the WordPress editor (Markdown needs a plugin);
  4. Preview it through the WordPress preview system;
  5. Publish it to make it live.

Writing an article in Jekyll:

  1. Open the uncompiled source code of your Jekyll project on your machine;
  2. Create a new file in the _posts folder;
  3. Write your article in Markdown;
  4. Run jekyll serve to preview your article;
  5. Then:
    1. Push on your repository if you host through GitHub Pages;
    2. Run jekyll build and push on your server if you host the compiled site.

Final Thoughts

Now, my opinion: if you are not scared with command lines (that are usually not any longer than jekyll build) and GitHub is an option for you, Jekyll is the perfect workflow. For a tech related blog, I could not recommend this enough.

Now if you are setting up a blog for someone who is really not that tech savvy, or want something simple ready in minutes, WordPress with a free/cheap theme is probably good enough for you.

What I do not like with WordPress is it uses a database, which immediately involves some security concerns (credentials, hacks, server…) and possibly slowness depending on your host and the quality of your theme. If you ask me, WordPress is quite an overkill solution for a simple personal blog.

On the other hand, Jekyll can look a little scary at first but ends up being very easy and comfortable to use if you have at least some little tech-background. I like to control everything when it comes to my own sites/blogs, and that’s exactly what Jekyll allows me to do.

  • http://amitgupta.in/ Amit Gupta

    Speaking from just blogging perspective:

    About 10 years ago Movable Type was the big daddy of blogging CMS world. Blogs running on MT were able to handle Slashdot effect (exponential surge in traffic) because MT compiled all blog posts & archive pages etc into static HTML files. While this was its huge advantage, it was also its Achilles’ heel because blogs in general get updated often and on a large blog with tons of posts it would mean everytime a new post is published, a large load of HTML files were (re)compiled. That brought servers of many a blogs to their knees to the effect that MT was banned by more than a few hosts on shared plans as I recall.

    This is where WordPress shined in those days. Adding content didn’t bring server to its knees and slapping on a cache plugin meant it was ready for the Slashdot onslaught as well.

    If its a website (they don’t get updated as often as a blog, general assumption here) then such a static HTML site compilation tool would make some sense. But on a blog (especially one which is frequently updated), I doubt it would be a viable option.

    I haven’t looked into Jekyll yet so don’t know how it compiles, if it has same issues that MT had or not. Also I’m assuming that there is some way to provide a GUI for Jekyll else it would be limited only to people w/ technical know-how.

    • Craig Buckler

      In most cases, systems such as Jekyll compile the static files on your development PC prior to pushing the completed HTML to the server. The server has little to do but serve fast, pre-rendered content; it certainly won’t struggle and the site will be faster than the most cached-up WordPress installation.

      The downsides: static site generations require some technical expertise. You don’t get a fancy CMS interface and it may be difficult to update if you’re not at your main development PC. You may struggle with multiple users too. However, none of this is a problem for your own blog or small, infrequently-changing sites.

      • http://amitgupta.in/ Amit Gupta

        > You don’t get a fancy CMS interface and it may be difficult to update if
        > you’re not at your main development PC

        Yeah, though if it gains much traction then wouldn’t be long before someone comes up with a fancy GUI for this. Then Jekyll compiler will sit on the server, reduce hard dependency on a single machine.

        > none of this is a problem for your own blog or small, infrequently-changing sites.

        Indeed.

        • Craig Buckler

          Actually, someone’s already created one (although it’s PHP rather than Ruby-based): http://getkirby.com/ It still uses the file system but there’s a CMS to edit and manage files too.

          • http://abbyandwin.net/ sherwin

            so is this jekyll but php version? i may have to play with this. thanks

          • Craig Buckler

            Kind of. But it’s more of a half-way solution between Jekyll and WordPress. It’s still file-based but there’s a CMS for editing the files should you or clients require it. Best of both worlds, really.

      • http://abbyandwin.net/ sherwin

        “difficult to update if you’re not at your main development PC”
        i’m using 3 different machines depending on where i’m at and have no issues at all. i use git :)

        • Craig Buckler

          Try handing it over to a non-technical client! Or why not try updating your site with only a phone or tablet!

          You require Ruby, the source code, dependencies, etc. to access and update a Jekyll-based site. How quickly could you do that from scratch? Logging into WordPress – perhaps on a mobile device – is considerably faster.

          • http://abbyandwin.net/ sherwin

            well ya, in order to use jekyll or the like, you will need to be more technical than the average or willing to learn. that’s why it’s sometimes referred to as “blogging for hackers”

      • http://mademistakes.com/ Michael Rose

        Using something like Prose(http://prose.io) to add/edit/maintain/whatever your posts and pages is an option. It eliminates the need for having to mess with Ruby since site builds are handled by GH-Pages, and you can just use Prose’s frontend to deal with your content.

        That said its still not as nice as the full blown CMS you get with WordPress, especially if you write image heavy posts.

  • Gonzalo Massa

    What about comments and search? I think those are fundamental parts of a blog.

    • http://abbyandwin.net/ sherwin

      i’m actually moving out of wordpress and moving in to jekyll. to handle comments, i will be using disqus. before shutting down wordpress, i have installed the disqus plugin and migrated over the comments in my db to disqus. there’s pros and cons to using disqus, that’s up to you to decide. you can also use other commenting systems like livefyre or facebook comments. i’ve seen other sites create an email form for comments. once you approve, you update the post with email comment and push it up to the server. it’s tedious but again, it’s up to you on how you want to roll the comments part out. for search, you can use google api and implement google search within your site. there are also plenty of search plugins that use javascript and json. if you’re going to host on github, check compatibility first.

    • http://hugogiraudel.com/ Hugo Giraudel

      Fair point, that might be the topic of another article.

      Quickly though: regarding search, WordPress comes with a built-in search engine as far as I know, so you will be ready to go. When it comes to Jekyll, it’s getting harder… Either you are not running in safe mode and can use plugins, in which case it’s quite easy since there are tons of plugins handling this. Or you are hosting on GH Pages, hence running in safe mode and as far as I can tell, there is no easy way to implement search.

      Comments now, are built-in again in WordPress. However, it’s quite easy to add a comment system to Jekyll by using Disqus or whatever. Only downside is they are JS powered.

    • http://matthewdaly.co.uk/ Matthew Daly

      My site uses Octopress, which is a blogging system built on top of Jekyll, and that uses Disqus for comments, which only requires client-side JavaScript. In theory you could also use Facebook comments, though I don’t think Octopress explicitly supports them out of the box.

      For search, it just uses Google’s site-specific search.

    • http://carloscuellar.net/ Carlos C.

      I’m using an external service as the search engine for my blog: tapirgo.com. So far, so good. And I’m using Disqus for the comments, but I believe there are some other options.

    • http://www.helloper.com/ Per Sandström

      As @mattbd:disqus mentions you can use Google for search but there are more options. For example:

      https://github.com/slashdotdash/jekyll-lunr-js-search
      https://github.com/christian-fei/Simple-Jekyll-Search

      For comments I personally only use Disqus but there’s also this solution if you want to go with WebMentions as well:

      http://voxpelli.com/2013/12/webmentions-for-static-pages/

  • http://www.ronanlevesque.fr/ Ronan Levesque

    Nice read Hugo. I use Jekyll on my site and deploy it to my FTP. In order to make things easier I use dploy.io,which allows for a really nice workflow: I push my changes to a Github repo, and dploy.io will automatically detect and deploy them to my FTP. Best of both worlds :)

  • http://hugogiraudel.com/ Hugo Giraudel

    Ouh, interesting tool. I need to have a look at this.

  • Gonzalo Massa

    Interesting…

  • Guest

    Funny enough very recently I moved my 10 year old worpress blog over to a static version using Jekyll (ragingnexus.com/blog/2014/11/02/we-have-moved/) , you do need a bit more technical insight on a more lower level, and it does need to make sense – in my case my sharing host environment performance was getting borderline annoying for something that very very rarely needs a fullblown PHP app .

    You also need to approach problems differently, as everything needs to be generated in one go and deployed, but once you go over that line, it’s actually been rewarding, and I haven’t missed any of the niceties that WordPress gave me – and it did come a long way mind you, the media gallery and editor are great.

    Certain things can be offloaded or statically run via Javascript , like comments (http://disqus.com) or even searching (https://github.com/PascalW/jekyll_indextank) , so it’s not always a feature barrier

    Anyway, there seems to be quite a lot happening on the static site generation world (https://staticsitegenerators.net/) , so it’s good to be aware of it, at least as an option.

  • http://david.ragingnexus.com David Ramalho

    (oh , I didn’t notice comments are moderated, that’s why I wrote a very similar one a second time, my bad :) )

    Funny thing is that I very recently moved my 10-year old WordPress blog over to a Jekyll powered static site (ragingnexus.com/blog/2014/11/02/we-have-moved/ ) and not only was the whole process easy(ish) enough, but keeping it is super simple and making changes to the whole structure equally easy.

    Hosting becomes less of a problem as all you do _really_ is ftp/rsync/teleport files up to a server to be statically served, in fact the main reason why I moved was that my current shared hosting server was having serious performance issues and turning certain plugins on and off didn’t seem to make much of a difference, and to be honest, I didn’t want to invest in a large scale debugging mission :) .

    Feature wise I haven’t missed much, I’m a dev, so all the tools I already use for work are now used to write posts – or change stuff on the blog. The less-static features like search and comment can actually be offloaded, say to the client (https://github.com/PascalW/jekyll_indextank ) or over to cloud services (like http://disqus.com ) , so you don’t really miss out there. Other nicer things yeah, require some adaptation, like WordPress media gallery and visual editor, which were nice, but again, you can get desktop tools to help you, so no biggie there.

    Overall, I’m actually much happier now with the change, and like I said, in my context it made a lot of sense – I had no need for a DB, my blog is very slowly updated, it’s most common use case is clearly reading stuff – , you might need a bit more low level dev knowledge – but nothing terribly exciting – and there might be a learning curve ahead of you, but I would say, as an option when choosing what tools to use, static site generator tools should really be laid on the table as a perfectly valid option ..

    and you don’t need to stick to Jekyll for that mater: https://staticsitegenerators.net/ :)

  • http://david.ragingnexus.com David Ramalho

    http://ragingnexus.com/blog/2014/11/02/we-have-moved/

    is the right url :) – Disqus is acting up . Anyway, great stuff Hugo

  • Timothy Solomon

    Nice. I love Jekyll – you missed that because it is generates plain html you can host it almost anywhere very cheaply (eg AWS S3 as well as Github) – I did a presentation on Jekyll: http://timothysolomon.co.za/work/introduction-to-jekyll-and-github-pages/

  • Jasper van der Meer

    any blogger that reads: “compile from…” or “create new file in…” will not like jekill. it’s for coders, not for bloggers.

    • http://david.ragingnexus.com David Ramalho

      coders can have blogs too :)

      but yeah, requires much more tech fiddling than many other options, but thankfully whoever is evaluating it as an option for himself will decide whether to use it or not :)

      • Jasper van der Meer

        yeah that’s true. Jekyll is probably more for the people ‘stuck’ in a console screen all day anyway.

  • http://www.mobilepundits.com/ mobile pundits

    I am in the process of migrating my blogs fromWordPress to Jekyll. Why have I started to migrate away from WordPress?

  • Ahmed Ali

    i do not understand if i have a site like facebook or any other site that depends on saving data how to save this data in jekyll i do not understand how it save data ??

    • http://hugogiraudel.com/ Hugo Giraudel

      It does not store any data. That is why it is called a *static* site generator. Because it is just file compilation. There is no database.

Recommended
Sponsors
Because We Like You
Free Ebooks!

Grab SitePoint's top 10 web dev and design ebooks, completely free!

Get the latest in WordPress, once a week, for free.