Skip to content

Experimental HTML templates linting for Jinja, Nunjucks, Django templates, Twig, Liquid


Notifications You must be signed in to change notification settings


Repository files navigation

PyPI PyPI downloads Build status Coverage Status Total alerts

{{ 🎀}} Experimental HTML templates linting for Jinja, Nunjucks, Django templates, Twig, Liquid. Forked from jinjalint.


Curlylint is an HTML linter for “curly braces” templates, and their HTML. It focuses on rules to check for common accessibility issues.

Screenshot of the curlylint CLI, with an example invocation raising a parsing issue and a rule error

On the roadmap:

  • More checks for common accessibility issues in HTML.
  • Checks for common security issues – for example rel="noopener noreferrer", or known sources of XSS vulnerabilities.
  • More ideas welcome!


Curlylint is available on PyPI, grab it and you can start linting:

# Assuming you’re using Python 3.6+,
pip install curlylint
# Now time to lint those templates!
curlylint template-directory/

Have a look at our documentation to make the most of it:


See anything you like in here? Anything missing? We welcome all support, whether on bug reports, feature requests, code, design, reviews, tests, documentation, and more. Please have a look at our contribution guidelines.

If you just want to set up the project on your own computer, the contribution guidelines also contain all of the setup commands.


This project started as a fork of jinjalint. Image credit: FxEmojis. Test templates extracted from third-party projects. Website hosted by Netlify.

View the full list of contributors. MIT licensed. Website content available as CC0.