Polymedia turns video, audio and streaming URLs into native Craft assets. Editors can select and reuse media throughout their content without managing embed codes.
Each item becomes a lightweight .pmedia file with Craft's native search, relations, permissions and eager loading. Use a dedicated Polymedia field, or mix URL media with images and uploaded videos in an ordinary Assets field.
Add media from the control panel
Open the Add media menu on the Assets index or inside a field picker, choose From URL, and paste a link. Polymedia detects most providers automatically, with a manual type option when needed. Give the item a title and select it into your content.
Set a poster image and manage captions, subtitles and descriptions from the asset edit screen.
16 supported providers
Supported sources include YouTube, Vimeo, Mux, Spotify, HLS, DASH, MP4/WebM and audio URLs, plus TikTok, Wistia, JW Player, Twitch, Cloudflare Stream, Shaka, PeerTube and Video.js.
Use your own front end, or render a player
Use the media data with your own front end, or render a player with one Twig call. With asset set to your selected media item:
{{ craft.polymedia.player(asset) }}
The built-in renderer uses Media Chrome and provider web components. Customise the controls and load scripts through the CDN, self-host them, or use your own bundler. No JavaScript framework is required.
For headless projects, GraphQL exposes provider details, playback IDs, duration, poster URLs and text tracks through Craft's asset queries. Access is controlled per schema.
Keep your asset library tidy
Media manifests stay in the folder your editor chooses. Posters and WebVTT files created by Polymedia live in a separate sidecar volume, hidden from normal asset browsing.
Existing library images and tracks stay where they are when selected for a media item. Moving a manifest keeps its attachments linked, and deleting it does not delete its containing library folder.
New installations use local sidecar storage by default. You can also select a dedicated volume backed by Google Cloud Storage, S3 or another Craft filesystem.
Lite is free
Lite includes URL-based media for all supported providers, including Mux stream URLs.
You also get:
- Provider filtering in media fields.
- Automatic poster fetching from supported providers, plus library selection and inline uploads.
- WebVTT captions, subtitles and descriptions, with validation and site-specific language settings.
- Poster thumbnails in the control panel.
- Signed-URL warnings for publicly accessible storage.
- Twig helpers and schema-controlled GraphQL data.
Pro brings your Mux library into Craft
Pro includes everything in Lite and connects Craft to your Mux account:
- Browse and search your library by title, asset ID or playback ID. Search covers the 1,000 most recent videos.
- Upload video directly from the browser to Mux, with upload progress and no video file passing through your Craft server.
- Import videos or reuse existing media items, then select them directly into a field.
- Fetch first-frame posters automatically while preserving editor-selected images.
- Keep processing status current with optional signed webhooks. Upload polling and console sync remain available without webhook setup.
- Optionally delete a remote Mux video when its Craft asset is permanently deleted. This is off by default; moving an asset to trash never deletes the Mux video.
Mux credentials and webhook secrets use environment-variable references. Library imports currently support public playback. Mux service fees are separate from the Polymedia licence.
Read the documentation for installation, storage configuration and upgrade instructions.
Lite
Pro
Plus $19/year after one year.
To install this plugin, copy the command above to your terminal.