citeproc-py
Citations and bibliography formatter
What it is and what it does
citeproc-py is a Python implementation of the Citation Style Language (CSL) 1.0.2 specification. It takes structured reference metadata and a CSL style definition, then outputs formatted citations and bibliographies in multiple formats. The package parses CSL style and locale files using lxml, applies citation rules, and renders results as plain text, reStructuredText, or HTML—with support for input from JSON (citeproc-js format) or BibTeX files.
The project is actively maintained and passes approximately 60% of the CSL test suite, though some advanced features remain unimplemented (disambiguation/year-suffix, et-al rules, collapsing, and others). It is still in alpha (major version 0), meaning the API could change, but the maintainers note that major API shifts are not expected soon. The package targets researchers, academics, and documentation systems that need programmatic citation formatting.
Use it for:
- Generate formatted bibliographies in academic papers or theses from a BibTeX or JSON reference database
- Embed citation rendering in documentation generators or content management systems that need multiple output formats
- Convert reference metadata to styled citations for web pages or reStructuredText-based documentation
- Build citation tools or reference managers that support CSL styles without reimplementing the processor
- Automate citation formatting in publishing workflows that require compliance with specific journal or style guidelines
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
citeproc-py processes Citation Style Language (CSL) stylesheets to generate formatted citations and bibliographies in plain text, reStructuredText, and HTML from structured reference data.
Yes, if your citation needs align with CSL's implemented features. The package is actively maintained, has low install friction, and is permissively licensed. However, check the list of unimplemented CSL features (disambiguation, et-al rules, collapsing) against your requirements—if you need those features, you may hit limitations. The alpha status is not a blocker given the stable release history since 2013, but expect the API to remain subject to change.
Install
citeproc-py on PyPI
pip
pip install citeproc-pyuv
uv add citeproc-pypoetry
poetry add citeproc-pyInstalling citeproc-py
Before you install
Low install friction with a single runtime dependency (lxml). Active maintenance with recent releases; the project is in alpha (major version 0) but has been stable since its early releases in 2013, with regular bug fixes and CSL specification updates.
License in practice
BSD-2-Clause-Views is a permissive license, allowing commercial and private use with minimal restrictions—suitable for most projects that can include a license notice.
Quickstart
pip install citeproc-py
from citeproc_py import CiteprocPy
# Load CSL style and reference data, then generate formatted citations
Requires Python 3.9 or later; lxml is installed automatically as a dependency.
Verify before relying
- Whether the ~60% CSL test-suite pass rate is sufficient for your citation requirements, given known unimplemented features (disambiguation, et-al rules, collapsing, etc.)
- Exact API stability guarantees beyond the semantic versioning note that major version is still 0
Package facts
| License | BSD-2-Clause-Views (permissive) |
| Python support | supports the current Python release (>=3.9) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 1 — lxml |
| Maintenance | actively maintained — 4 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 131,444/month — #11,587 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: citeproc_py-0.10.7-py3-none-any.whl
Keywords: csl, citation, html, rst, bibtex, xml
Tags
More Python Modules packages
Converts domain names between Unicode and…
permissive · top 100 on PyPI
setuptoolsSetuptools is a Python build backend and…
permissive · top 100 on PyPI
PyYAMLPyYAML parses and emits YAML 1.1 data format,…
permissive · top 100 on PyPI
pydanticPydantic validates Python data structures…
permissive · top 100 on PyPI
annotated-typesProvides reusable metadata objects for use with…
permissive · top 100 on PyPI
typing-inspectionProvides runtime tools to inspect and…
permissive · top 100 on PyPI
pybtexPybtex reads bibliography data from BibTeX,…
permissive · top 5,000 on PyPI
pybtex-docutilsIntegrates BibTeX citations into…
permissive · top 5,000 on PyPI
sphinxcontrib-bibtexA Sphinx extension that enables BibTeX-style…
permissive · top 5,000 on PyPI
eyeciteExtracts legal citations from text, recognizing…
permissive · top 15,000 on PyPI
reporters-dbProvides a comprehensive database of U.S. court…
permissive · top 15,000 on PyPI
cohere-melodyParses and renders templated text for Cohere…
permissive · top 15,000 on PyPI
docstrfmtAutomatically formats reStructuredText in files…
permissive · top 15,000 on PyPI
pystac-ext-scientificExtends PySTAC to add scientific publication…
permissive · top 5,000 on PyPI
exhaleExhale automatically generates C++ API…
permissive · top 15,000 on PyPI
SphinxSphinx generates professional documentation…
permissive · top 1,000 on PyPI