Alabaster

A lightweight, responsive, and configurable Sphinx documentation theme

Library
PyPI
v1.0.0
777stars
BSD 3-Clause License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum.How we score it →
47/100Fair
Development Activity0
Maintenance20
Community80
Maturity60
Momentum28

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation.How we score it →
77/100Good
Architecture72
Code Quality78
Innovation70
Learning Curve88

Alabaster is a visually clean, responsive, and highly configurable theme for the Sphinx documentation system. Originally a third-party theme, it has been bundled with Sphinx as the default theme since Sphinx 1.3, making it one of the most widely deployed documentation themes in the Python ecosystem.

It exposes a simple set of HTML templates and CSS assets plus a rich menu of theme options that can be tuned entirely from a project’s conf.py, so authors can restyle sidebars, headers, and branding without writing custom templates. It requires no additional dependencies beyond Sphinx itself.

What You Get

  • A responsive, minimalist HTML theme registered automatically as a Sphinx html_theme
  • Dozens of conf.py theme options for sidebars, logos, GitHub badges, and typography
  • The default theme shipped with Sphinx, so most projects already have it installed
  • Zero runtime dependencies beyond Sphinx itself

Common Use Cases

  • Styling Python library and application documentation hosted on Read the Docs
  • Customizing sidebar navigation and branding without writing custom Jinja templates
  • Providing a consistent, readable default look for open-source project docs

Under The Hood

Architecture - Alabaster registers itself with Sphinx through a sphinx.html_themes entry point declared in pyproject.toml, and its setup(app) function in alabaster/__init__.py calls app.add_html_theme plus connects an html-page-context handler (update_context) that injects the theme version and normalizes legacy options. The visual layer is a set of Jinja HTML templates (layout.html, about.html, navigation.html, relations.html, donate.html) with a theme.conf declaring inheritance and default options, and static CSS/assets under alabaster/static.

Tech Stack - The distribution is predominantly HTML templates (~60%) and Python (~39%) with a small amount of CSS. It is built with flit_core as the build backend, targets Python 3.10+ and Sphinx 6.2+, and declares no runtime dependencies of its own. Ruff is used for linting and the project builds/tests via GitHub Actions.

Code Quality - The Python surface is small and focused: version metadata, a get_path helper, an option-normalization function, and the setup entry point that declares parallel_read_safe/parallel_write_safe. The repo ships a test workflow (.github/workflows/test.yml) and dev-requirements, and the codebase is mature and stable rather than rapidly changing.

API Design - The developer-facing API is almost entirely declarative: users set html_theme = 'alabaster' and supply html_theme_options and html_sidebars dicts in conf.py. Because the theme is Sphinx’s default, most projects need zero explicit configuration to get started, and the extensive documented options give a gentle path from defaults to fully branded output.

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers

Search