wagtailmedia
A Wagtail module for audio and video files.
What it is and what it does
wagtailmedia extends Wagtail CMS with first-class support for audio and video files, mirroring the built-in document handling. It provides a Media model, a media chooser panel for page fields, and StreamField blocks for embedding audio and video directly in page content. The package integrates into Wagtail's admin interface and supports customization through settings (configurable file extensions, custom Media models, and form bases) and hooks for queryset filtering.
You install it into a Django+Wagtail project, add it to INSTALLED_APPS, run migrations and collectstatic, then use MediaChooserPanel on ForeignKey fields or AudioChooserBlock/VideoChooserBlock in StreamField definitions. It handles file type detection, provides a browsable media library in the admin, and can expose media via Wagtail's REST API. The package requires Python 3.10, 3.11, 3.12, 3.13, 3.14, Django 5.2 or 6.0, and Wagtail 7.0, 7.1, 7.2, 7.3, 7.4.
Use it for:
- Add a featured audio or video field to blog posts or news articles using MediaChooserPanel
- Build a podcast or video gallery page with StreamField audio/video blocks
- Create a media library interface for content editors to upload and manage audio/video files
- Expose media items through Wagtail's REST API for headless CMS consumption
- Customize media handling by extending AbstractMedia or AbstractMediaChooserBlock
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Adds audio and video file management to Wagtail CMS, providing a media library interface and chooser panels similar to Wagtail's document handling.
Yes. wagtailmedia is actively maintained, has no known vulnerabilities, installs with minimal friction, and solves a clear gap in Wagtail's core (audio/video management). It is well-suited for Wagtail projects that need media beyond documents. The BSD-3-Clause license is permissive. Install if your Wagtail site requires audio or video content management.
Install
wagtailmedia on PyPI
pip
pip install wagtailmediauv
uv add wagtailmediapoetry
poetry add wagtailmediaInstalling wagtailmedia
Before you install
Low install friction; pure Python wheel with only Wagtail and Django as runtime dependencies. Active maintenance with recent release and steady repository activity.
License in practice
BSD-3-Clause is permissive; you may use, modify, and distribute this package freely in commercial and private projects with minimal restrictions.
Quickstart
pip install wagtailmedia
# In settings.py
INSTALLED_APPS = [
"wagtailmedia",
]
# In your page model
from wagtailmedia.edit_handlers import MediaChooserPanel
featured_media = models.ForeignKey("wagtailmedia.Media", null=True, blank=True, on_delete=models.SET_NULL)
content_panels = Page.content_panels + [MediaChooserPanel("featured_media")]
Requires Python >=3.10, Django 5.2 or 6.0, and Wagtail 7.0 or later; must run migrations and collectstatic after installation.
Verify before relying
- Whether the media model supports custom metadata fields beyond what the documentation shows
- Performance characteristics when managing large media libraries
- Compatibility with third-party Wagtail plugins or custom admin extensions
Package facts
| License | BSD-3-Clause (permissive) |
| Python support | supports the current Python release (>=3.10) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 2 — Wagtail, Django |
| Maintenance | actively maintained — 3 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 141,083/month — #11,252 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: wagtailmedia-0.18.1-py3-none-any.whl
Keywords: Wagtail, Django, media
Tags
More Dynamic Content packages
MarkupSafe provides a text object that escapes…
permissive · top 100 on PyPI
Jinja2Jinja2 is a templating engine that renders…
permissive · top 100 on PyPI
soupsieveSoupsieve is a CSS selector library designed to…
permissive · top 100 on PyPI
WerkzeugWerkzeug is a WSGI utility library providing…
permissive · top 1,000 on PyPI
FlaskFlask is a lightweight WSGI web application…
permissive · top 1,000 on PyPI
MakoMako compiles Python-embedded templates into…
permissive · top 1,000 on PyPI
wagtailWagtail is a Django-based content management…
permissive · top 5,000 on PyPI
wagtail-modeladminAdds Django model administration interfaces to…
permissive · top 15,000 on PyPI
wagtail-localizeWagtail Localize is a translation plugin for…
permissive · top 15,000 on PyPI
wagtail-factoriesProvides factory-boy classes for generating…
permissive · top 15,000 on PyPI
django-cloudinary-storageIntegrates Django with Cloudinary to serve…
permissive · top 15,000 on PyPI
comfyui-workflow-templates-media-otherProvides a collection of audio, 3D model, and…
permissive · top 5,000 on PyPI
pyobjc-framework-CoreMediaIOProvides Python bindings to Apple's CoreMediaIO…
permissive · top 15,000 on PyPI
pyobjc-framework-AVKitProvides Python bindings to macOS's AVKit…
permissive · top 15,000 on PyPI
comfyui-workflow-templates-media-videoProvides a collection of video workflow…
permissive · top 5,000 on PyPI
pyaaf2Read, write, and modify Advanced Authoring…
permissive · top 15,000 on PyPI