Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Welcome to PyBlue

A simple static site generator developed many eons ago (2013) when writing static site generators was still cool. (As of 2022 some features are still better than all the alternatives)

Why another one static generator?

There are so many static site generators already.

Alas I found most options to be way too complicated.

Each has many conventions and rules: you have to put this here, you have to put that there, many naming convention. It was too tiring to keep up.

Then as I was developing courses over the years I found that I could not easily reorganize the site, the links would all break when I moved files around. Very annoying.

Finally when I wanted to do something complicated like running a piece of code while generating the site the tools could not do it.

At some point I realized that I'll just have to roll my own, and I did, and here it is.

PyBlue is different. Everything is optional, nothing is required, use only what you need. It basically stays out of the way.

Simple things are very easy:

  • No configuration required.
  • Works with any existing site.
  • Easy to include markdown.
  • Easy linking to other pages.
  • Tiny codebase, pyblue is around 500 lines in a single file!

Complicated tasks are easy:

  • PyBlue generates the correct links even if you move pages around.
  • Use Django Templates and all the features that it offers.
  • Easily add data into each page (title, link name, or any arbitrary content).

And you can go all the way out if you really want to:

  • Load python modules into each page.
  • Exposed data: database queries, results of online requests etc.
  • Run python code, access and modify data from inside of each page.
  • Extend the Django templates. Add your own templatetags.


You can also browse the help in source format for examples.


pip install pyblue --upgrade

Or download it from the PyBlue at PyPI.


Launch pyblue to serve a directory

pyblue -r docs

View your site by visiting http:://localhost:8080

Edit your pages and make changes. Reload the page to see your edits live. Generate static output with:

pyblue -r docs -o html

That's all. Told you it was simple. To see extra help on options run:

pyblue -h