Injecting code

Sphinx makes it fairly straightforward to add custom JS/CSS/HTML code to your pages. Furo supports the mechanisms provided by Sphinx for this.


This customisation considered “unstable” under Furo’s Stability Policy.

Customisations done directly with CSS/JS/HTML are unbounded. Furo is not designed to accommodate for custom CSS/JS/HTML in any meaningful way, and no effort is made to stay compatible with such customisations.


Read the Docs has an excellent explanation on how to add custom CSS or JS files to Sphinx-based documentation. No point repeating information in two places. 😄


This is entirely powered by Sphinx’s templating mechanism, which is built upon Jinja2.

The primary way to do this is to override the content of the Furo’s default templates with your own templates, using templates_path. For more information on how to do so, Sphinx’s templating documentation.


The expectation is that users who override Furo’s templates would also carefully consider how their documentation looks across various platforms (i.e. not take a “looks OK on my machine” approach) and would also be willing to extend Furo’s CSS to make their HTML changes work well.