Nikola v6.4.0 released!

We’re pleased to announce the release of Nikola v6.4.0.

What is Nikola?

Nikola is a static site and blog generator, written in Python. It can use Mako and Jinja2 templates, and input in many popular markup formats, such as reStructuredText and Markdown — and can even turn IPython Notebooks into blog posts! It also supports image galleries, and is multilingual. Nikola is flexible, and page builds are extremely fast, courtesy of doit (rebuilding only what has been changed).

Find out more at the website:

Key Changes since v6.3.0

  • The code.css (and all*.css) files have been revamped to support dark themes and Markdown properly. Please remove those files from your output directory and run nikola build to get the fixes.
  • nikola auto supports livereload v2.1.0.
  • Added nikola new_page, equivalent to nikola new_post -p.
  • Deploys to sub-directories (eg. are now fully supported and bug-free.

Get it!

Nikola is available for download at GitHub and PyPI.

Debian Packages

In the v6.3.0 announcement, it was promised that an install_bs3 command would be added to the Debian packages. The v6.3.0 packages were released yesterday and they contain the promised patch. Please use it to install the theme if you need it.


$ git log v6.3.0..v6.4.0 --pretty='format:%an'|sort|uniq -c|sort \
> --reverse
    144 Chris “Kwpolska” Warrick
     83 Roberto Alsina
     19 Ramiro Morales
     12 Thibauld Nion
     11 Daniel Aleksandersen
      9 Eric Meaney
      8 Ondrej Grover
      4 Evgeni Golov
      3 Tim Chase
      2 Casey M. Bessette
      1 Puneeth Chaganti
      1 Ivan Teoh
      1 Dav Clark



  • Add nikola new_page command (equivalent to nikola new_post -p) (Issue #1060)
  • Add LESS_OPTIONS and SASS_OPTIONS for specifying additional parameters to LESS/Sass compilers (Issue #1020)
  • Warn users about bootswatch_theme being incompatible with bootstrap3-gradients
  • Add link://filename/foo/bar.rst syntax to refer to the post generated from foo/bar.rst (Issue #1035)
  • Log messages are colorized (colorama is required under Windows) (Issue #1044)
  • Template filters are configurable via the TEMPLATE_FILTERS config variable (Issue #1038)
  • Added Hindi translation by Sean Pue
  • Livereload v2.1.0 is supported and frozen as the version to use due to backwards-incompatible updates (Issue #1023)
  • Support :linenos: and :number-lines: in listings (Issue #1010)
  • Support :linenos: in code blocks for Sphinx compatibility (Issue #1010)
  • New link:///foo links which always point to absolute paths (/foo in that case) (Issue #986)
  • Bootstrap 3 has been updated to v3.1.1 (Issue #1015)
  • New --browser/-b option on the serve command to open instantly in a web browser (Issue #997)
  • SASS/LESS files and targets file will be processed from site root (Issue #941)


  • lastdeploy time recording was broken, changed to ISO format (Issue #1083)
  • Avoid undefined behaviour if NAVIGATION_LINKS is missing keys for a translation (Issue #1082)
  • Make livereload actually rebuild the site when changes are made (Issue #1067)
  • Fix filename encodings in WordPress imports (Issue #1053)
  • nikola check supports URL_TYPE="absolute" and URL_TYPE="full_path" (Issue #1046)
  • Fix URL_TYPE="absolute" and URL_TYPE="full_path" on non-root sites (Issue #1046)
  • Avoid running bundle tasks twice (Issue #1032)
  • Fix post links in RSS feeds for sites outside of webserver root (Issue #986)
  • Only run sitemap once (Issue #1032)
  • Fix a bug with some multilingual pages
  • Normalize paths (Issue #1028)
  • Fix drafts being leaked in feeds (Issues #934, #971)
  • If two tags generate the same slug, they are the same tag (Issue #1022)
  • Assume UTF-8 if user's locale doesn't have any encodings attached (Issue #1026 via #1021)
  • Support PRETTY_URLS for tag files (Issue #655)
  • Change code.css and rst.css to have sane output everywhere (Issues #913, #1009, #1050)
  • Fix image URLs in galleries for sites outside of webserver root (Issue #986)
  • Fix link:// in RSS contents (Issue #952)
  • HIDE_SOURCELINK was set to True sometimes (Issue #1004)
  • Properly import cool URIs from WordPress, instead of just slugify-ing the path (Issue #693)
  • Fixed SASS/LESS errors when more than one theme in chain has a targets file (Issue #941)
  • Guard against empty list-items in base templates (Issue #936)

Nikola version 6.3.0 released

Version 6.3.0 of Nikola is out. This is a large improvement, with many features and bugfixes (it is also over a month late, sorry!)

Compatibility Warnings

If you have your own locale files, you may want to check them. There were some changes lately.

If you use any themes from the Themes Index, make sure to update them — and make sure to upgrade the whole inheritance tree. For example, the base-jinja theme has a new file (tagindex.tmpl).

Debian and Bootstrap 3

During this release cycle, we discovered that the Debian (and Ubuntu) packages remove our copy of Bootstrap 3 and don’t provide any replacement. For those users, a install_bs3 command is provided. It is available only for people who installed from those packages (after all, nobody else should need it). Patch: install_bs3 for Debian.

Downloads at GitHub and PyPI, as usual.


$ git log v6.2.1..v6.3.0 --pretty='format:%an'|sort|uniq -c|sort --reverse
234 Chris “Kwpolska” Warrick
 21 Roberto Alsina
 20 Daniel Aleksandersen
 13 Ivan Teoh
 12 Puneeth Chaganti
 10 Alex Popescu
  9 Ondrej Grover
  6 Eric Meaney
  5 schettino72
  4 nlaurens
  4 Roman Yepishev
  4 Claudio Canepa
  3 damianavila
  3 Onno Broekmans
  2 Tim Chase
  2 Kay Hayen
  1 ermeaney
  1 Simon van der Veldt
  1 Areski Belaid



  • Added translations:
    • Basque by aitorp
    • Czech by Ondřej Grover
    • Estonian by Lauri Võsandi
    • Norwegian Bokmål by Daniel Aleksandersen
  • TIMEZONE now defaults to UTC (via Issue #893)
  • Added a DEMOTE_HEADERS option (on by default; previously implemented by the Markdown and reST compilers) to have consenting compilers produce documents with headers lower by one than the one defined (Issue #891)
  • isso comments are now supported (Issue #905)
  • Gallery titles are used in more places (Issue #902)
  • Gallery titles also are used in breadcrumbs (Issue #902)
  • tagindex.tmpl is used for tag indexes instead of index.tmpl (Issues #930, #933)
  • Added SASS_COMPILER option (defaults to sass) to add support for alternate compilers like sassc (Issue #940)
  • Added LESS_COMPILER option (defaults to lessc) to add support for alternate compilers like recess (via Issue #940)
  • sass/less files and targets file will be processed from site root (Issue #941)
  • Added a list of posts for each tag in tag_cloud_data.json
  • Added EXTRA_PLUGINS_DIRS option, for specifying additional plugin directories (Issue #953)
  • Expose original doit "auto" command as "doit_auto" (Issue #955)
  • New "type" metadata to make differences for posts (Issue #927)
  • New Post.is_post attribute to differentiate posts and pages without bias (Post.use_in_feeds is False if the post is retired/unpublished/a draft)
  • Add rel=canonical <link> elements (Issue #449)
  • Add rel=alternate <link> elements to translations of the current page (Issues #988, #989)
  • Added a INDEXES_PAGES_MAIN setting to show the page number on the index page if desired (True) (Issues #210, #987)
  • Added a TRANSLATIONS_PATTERN setting to specify the format for language-dependent filenames (Issue #990)


  • Support livereload 2.0 (Issue #968)
  • Don't crash when docutils exception have no line number (Issue #920)
  • Forced permalinks in active menu items (Issue #916)
  • Remind the user to set THEME to use a downloaded theme
  • Fix crash when using USE_FILENAME_AS_TITLE = False (Issue #892)
  • Fixed deploy events if there is no TIMEZONE set (Issue #893 via #822)
  • Modified translation strings: "Posted", "Also available in", "More posts about" — may break backwards compatibility (Issue #905) Details:!topic/nikola-discuss/ABXKk9G0_u0
  • Facebook comments are now showing properly
  • Added a warning/error when lessc/sass are missing (via Issue themes#24)
  • Fixed sass/less under Windows (Issue #939, themes#24)
  • Fix URL rewriting of fragment-only links (Issue #945)
  • Fixed the deploy rsync example (rsync --delete doesn't work with '/*' as source) (Issue #959)
  • Added a notice for the user if webassets is not installed and USE_BUNDLES is True (Issue #965)
  • Support livereload 2.0 (Issue #968)
  • Remove some unnecessary elements (Issues #969, #970)
  • abs_link should return absolute URI

Nikola version 6.2.1 released

Version 6.2.1 of Nikola is out. This is a partially-unplanned bugfix release to fix issues with locales and address some more bugs, also adding a few little features.

Downloads at GitHub and PyPI



  • Default themes adds semantic meanings to posts using h-entry (a microformats2) and HTML 5 microdata (Issue #867)
  • New "hidetitle" metadata to suppress printing a title as heading (Issue #584)
  • Template systems can now render to and from a string. (Issue #881)
  • New event for newly deployed posts (Issue #882)


  • Fixed some locale problems in posix systems (Issues #886, #884, #875)
  • Don’t include BLOG_DESCRIPTION as meta tag on tag and gallery pages (Issue #876)

Nikola version 6.2.0 released

Continuing with the idea of a regular-ish release cadence, version 6.2.0 of Nikola is out.

This release includes large code cleanups, some features and a bunch of bugfixes, and is fully compatible with the previous version.

Full changelog and downloads at github and PyPI

Nikola v6.1.0 released!

Version 6.1.0 is out and available in the usual places! (github , PyPI)

One cool thing about this release: it's the first one to support downloadable plugins!

Here is a somewhat incomplete changelog:


  • Added slug support to the magic link:// URLs
  • New Esperanto translation.
  • New -q flag for quiet running (Issue #762)
  • Added author field in RSS items (Issue #767)
  • Annotations using (Issue #623)
  • New GALLERY_SORT_BY_DATE option, defaulting to True. If set to False, sorts by name (Issue #667)


  • Fixed compatibility with Windows’ multiple partitions (Issues #776, #784)
  • Added language in the RSS feeds (Issue #777)
  • Don't fail for empty bundles.
  • Fix USE_BUNDLES compatibility with Python 3 (Issue #760)
  • Compatibility with doit 0.23.0 (Issues #756 #758)
  • Install enough of the theme chain to ensure themes are usable (Issue #748)
  • Support Gist URLs in the gist directive for compatibility with sphinx-gist-embed (Issue #754)
  • windows, dev - fix point pth to clone and run nikola without install (Issue #751)
  • windows - fix install from clone or from a Github download (Issue #747, Windows)
  • Make Listings directive inherit Include making it simpler and more powerful (Issue #744)
  • Install builtin themes (Issue #741)
  • LOGGER was incorrectly imported in
  • Order Monthly Archive properly, descending order (Issue #740)

Version 6.0.0 Released!

I am thrilled to announce the immediate release of Nikola version 6.0.0.

This is a major feature release. If you have an existing site, you will get a number of warnings about deprecated options. Don't worry, things most likely will still work, and you can take your time fixing them.

Some of the new features are described in a series of blog posts: 1 2 3 4 5

Here is the (probably incomplete) changelog:


  • Deprecated post_compilers for COMPILERS (Issue #601)
  • Replaced post_pages option with POSTS and PAGES (Issue #601)
  • Support for bootswatch in boostrap 2 and 3 (Issue #599)
  • New ADDITIONAL_METADATA option to set extra metadata on all posts.
  • All reStructuredText extensions are now plugins (Issue #621)
  • New multiple comment system support (Issue #606, #634)
    • Deprecated DISQUS_FORUM option for COMMENT_SYSTEM_ID
    • New COMMENT_SYSTEM option to change comment systems, defaults to disqus
  • New bootstrap3 theme (by areski)
  • Added docs/upgrading-to-v6.txt for upgrade tips.
  • Theme cleanup (Issue #599)
  • Support for nested navigation links (Issue #104)
  • New media directive for reStructuredText (Issue #608)
  • New DEPLOY_DRAFTS and DEPLOY_FUTURE options (Issue #583)
  • New Dutch translation
  • Optional hyphenation (HYPHENATE option, Issue #576)
  • Made AddThis support replaceable through new SOCIAL_BUTTONS_CODE option.
  • categories
  • Added a FUTURE_IS_NOW option for publishing future-dated posts now (Issues #486, #577)
  • New typogrify filter (Issue #576)
  • New COPY_SOURCES option, defaults to True (Issue #544)
  • Customizable Read More (Issues #412, #533, #574)
  • Support for LESS/RECESS CSS compilers
  • Updated to Colorbox 1.4.27
  • New pandoc compiler.
  • Separate slides.tmpl template so that non-bootstrap themes can support them.
  • New ADDITIONAL_METADATA option to specify metadata to include in the new_post command, alongside with the defaults (Issue #622)
  • Schedule new posts automatically by specifying an iCal recursive rule as SCHEDULE_RULE (Issue #602)


  • Added missing rel="self" link suggested by (Issue #264)
  • Switched to semantic versioning (Issue #614)
  • Better figure styling (Issue #626)
  • Switched docutils math rendering to MathJax (Issue #620)
  • Refactored crumb bar into a separate tmpl to avoid code duplication (Issue #612)
  • Fix broken config dep for tags when NAVIGATION_LINKS is not set (Issue #610)
  • Fixed bundles in base theme
  • Deprecated ANALYTICS, replaced with BODY_END (Issue #601)
  • Deprecated SIDEBAR_LINKS, replaced with NAVIGATION_LINKS (Issue #104 #601)
  • Solve site theme's navbar overlapping Issues (Issue #585)
  • Deprecated ADD_THIS_BUTTONS option.
  • Show warning if unable to thumbnail an image (Issue #551)
  • Use absolute URLs in feeds (Issue #590)
  • Fix for mincss path munging (Issues #570 #589)
  • Added missing dependency in gallery indexes (Issue #536)
  • Anchors in listings had wrong filename slugs
  • Only warn about incomplete translations once (Issue #580)
  • Right-align image title in colorbox to avoid overlapping so much (Mentioned in Issue #570)
  • Added LICENSE in the footer (Issue #528)
  • Use random IDs for slides so you can have more than one in a page (Issue #572)