Chameleon review
A self-hosted Python library for reusable, localized HTML and XML templates.
Reviewed by iTechGuides Editors · Editorial team · Updated Oct 2026
Chameleon is a standalone template engine for Python applications that generate HTML or XML. Its Page Templates language uses TAL statements for dynamic content, conditions, repetition, attribute changes and error handling. Python expressions are the default expression language, and templates compile to Python bytecode. The library can run independently of a Zope environment, making it relevant to Python teams that want structured templates without adopting a hosted service. It is available under a BSD-like license and runs on Linux, macOS and Windows; those platform details describe Python compatibility, not separate desktop applications.
Its strongest fit is template structure and localization. METAL macros and slots let teams define reusable structures, while I18N markup supports translation-string generation with gettext. Inserted text is escaped by default, with explicit structure insertion available when needed. Together, these features suit projects that need localized HTML or XML and want the template language to make reuse and output handling explicit. The server-side rendering model and Python expressions keep the engine closely aligned with Python applications rather than frontend-only workflows.
Chameleon is an open-source library with a free plan, so there are no paid tiers to compare in the published offering. It can load templates from strings or files through its library API, and integrations include Pyramid, Zope 2 / Plone, Zope Toolkit, Grok and Django. Deployment is self-hosted, with documentation and community support channels. Choose it when Python compatibility, reusable macros and translation support are central requirements. Teams seeking a hosted template service, or a template engine outside Python application work, should consider alternatives.
Chameleon pros and cons
- Where it wins
- TAL handles dynamic content, conditions, repetition and attribute changes.
- METAL macros and slots support reusable template structures.
- I18N markup, gettext strings and default escaping support safer localization.
- Where it doesn't
- Designed for Python applications rather than a general-purpose template stack.
- Requires self-hosting; it is a library, not a hosted service.
- Support is through documentation and the community.
Chameleon fact sheet, pricing and score →
Advertiser disclosure: iTechGuides is reader-supported. Vendors can pay for top positions in our rankings and for a place on other products' pages, and we may earn a commission when you click some links. Bought places stand at the number bought; this page and our disclosure say so. Paying vendors may get a fuller, more detailed review from our editors, and that review can change their score. How we rank.
Last updated · How we research and update