pelican
Static site generator supporting Markdown and reStructuredText
What it is and what it does
Pelican is a Python-based static site generator that reads content from text files—Markdown, reStructuredText, or HTML—and compiles them into a complete, static website. It handles the typical workflow of a content site: organizing articles chronologically, generating RSS and Atom feeds, applying themes via Jinja2 templates, and syntax-highlighting code blocks with Pygments. The output is pure HTML, CSS, and JavaScript that can be hosted anywhere without a database or application server.
The package is built for bloggers, documentation authors, and anyone who wants to version-control their content and host it simply. It includes features like multi-language support, theme customization, and a plugin system for extending functionality. Rebuild times are kept fast through caching and selective output writing, making the edit-preview cycle practical for iterative work.
Use it for:
- Build a personal blog or portfolio site from Markdown files, version-controlled in Git.
- Generate static documentation sites that can be hosted on any web server or CDN.
- Migrate content from WordPress or other platforms and maintain it as plain text.
- Create a multi-language site with separate content trees compiled to a single output.
- Publish an RSS feed alongside your site, automatically updated from your content.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Pelican is a static site generator that converts text files in Markdown, reStructuredText, or HTML into a complete, ready-to-serve website without requiring a database or server-side code.
Yes. Pelican is a mature, actively maintained static site generator with low installation friction and no known vulnerabilities. It is well-suited for anyone building a blog, documentation site, or portfolio that benefits from version control and simple hosting. The AGPLv3 license is not a barrier for typical personal or private use but should be reviewed if you plan to distribute modified versions.
Install
pelican on PyPI
pip
pip install pelicanuv
uv add pelicanpoetry
poetry add pelicanInstalling pelican
Before you install
Installation is straightforward with low friction; the package is actively maintained with a recent release and runs on modern Python versions (3.11–3.14). The dependency footprint is modest at 11 runtime packages, all commonly used libraries.
License in practice
Pelican is licensed under AGPLv3, which requires that any derivative work or network-accessible modifications be released under the same license. This is permissive for personal or private use but imposes copyleft obligations if you distribute or host modified versions.
Quickstart
pip install pelican
from pelican import Pelican
from pelican.settings import DEFAULT_CONFIG
settings = DEFAULT_CONFIG.copy()
pelican = Pelican(settings)
pelican.run()
Requires Python 3.11 or later; content files must be in a recognized format (Markdown, reStructuredText, or HTML).
Verify before relying
- Whether the package includes built-in theme templates or requires separate installation.
- Performance characteristics for sites with large numbers of articles or pages.
- Extent of plugin ecosystem and ease of writing custom plugins.
Package facts
| License | AGPLv3 (agpl) |
| Python support | supports the current Python release (>=3.11) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 11 — blinker, docutils, feedgenerator, jinja2, ordered-set, pygments, python-dateutil, rich, unidecode, watchfiles, tzdata |
| Maintenance | actively maintained — 116 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 99,468/month — #13,020 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: pelican-4.12.0-py3-none-any.whl
Keywords: static site generator, static sites, ssg
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
SphinxSphinx generates professional documentation…
permissive · top 1,000 on PyPI
zensicalZensical is a static site generator that…
permissive · top 5,000 on PyPI
feedgenGenerates web feeds in ATOM and RSS formats,…
copyleft · top 15,000 on PyPI
mkdocsMkDocs generates static HTML documentation…
permissive · top 5,000 on PyPI
properdocsProperDocs is a static site generator that…
permissive · top 5,000 on PyPI
docstring-to-markdownConverts Python docstrings from…
copyleft · top 5,000 on PyPI
Products.CMFPlonePlone is a Python-based content management…
copyleft · top 15,000 on PyPI
docutilsDocutils converts plaintext documentation in…
unclear · top 1,000 on PyPI
m2r2Converts markdown files with embedded…
permissive · top 15,000 on PyPI
pagefind-binPagefind-bin provides a precompiled binary…
permissive · top 5,000 on PyPI