Skip to main content

A flexible, non-evaluating template engine for end users.


Python Liquid strives to be 100% compatible with the reference implementation of Liquid, written in Ruby. See the known issues page for a description of differences between Python Liquid and Ruby Liquid.


Designed for situations where template authors are untrusted, Python Liquid is non evaluating, it guards against mutation of shared template data, and will never expose arbitrary properties or methods of render context objects.


Add to, remove or replace built-in tags and filters to suit your needs. Define custom template loaders to read template source text from a database, a remote file system, or parse front matter data.

Django and Flask

Integrate with Django or Flask using the Django template backend for Python Liquid or the Flask extension for Python Liquid.


Optionally load templates and render context data asynchronously with Python Liquid's async API, built with asyncio.