Obraz (Russian: Образ). IPA: /ˈobrəs/ n.

  1. Image, the result of applying a function to an argument
  2. A static blog-aware site generator in Python mostly compatible with Jekyll


There are many static site generators. Why choose Obraz?

Written in Python
< 800
Single source file less than 800 lines of code
Mostly compatible with a popular Jekyll

News (feed)


Obraz 0.9 Released

Obraz is now mostly compatible with Jekyll 1.4. It is still a single file with a few dependencies and it's less than 800 lines of very readable Python code, almost 5 times smaller than Jekyll.

Major features of this release are:

  • New serve command with a file watcher
  • Command line options compatible with Jekyll
  • New documented plugin system
  • Extension point for changing the template system

Obraz 0.3 Released


Obraz Sites


Obraz 0.2.1 Released


Obraz 0.2 Released



Plugins allow extending the site generation process via user-defined processing functions.

Featured plugins:

See other available plugins in the plugins documentation.


The source code is available on GitHub:

$ git clone https://github.com/vlasovskikh/obraz.git

Bug reports, feature requests, and contributions are welcome!


Let's create a statically generated blog!

  1. Install Obraz from the Python package index:

    $ pip install obraz
  2. Create a new blog in the my-blog directory:

    $ obraz new my-blog
  3. Generate your site using Obraz:

    $ cd my-blog
    $ obraz serve

    and check the results in the browser by visiting http://localhost:8000/.

    You've got your first Obraz blog up and running! Now it's time to play with the design and customize things.


Obraz is mostly compatible with Jekyll 1.4. Since most parts of the Jekyll documentation are valid for Obraz too, Obraz doesn't have its own documentation.

However, there are several differences from Jekyll you should be aware of.

See also the source code of sites that use Obraz for examples of using RSS feeds, Markdown pages, tags, custom URLs, etc.