**Keep the files off your server**
S3 Media registers a remote media URL as a gallery photo: videos, images, documents and books. The poster image becomes a normal Piwigo photo — thumbnails, albums, permissions, tags and search all work exactly as they do for any other picture — while the media itself is served directly from your bucket or pull zone to the visitor's browser. Your gallery server never stores, and never serves, the full-size file.
That makes it a fit for galleries where large files would otherwise blow past a disk quota or a hosting bandwidth allowance: a BunnyCDN pull zone, Backblaze B2, Wasabi, MinIO, Amazon S3, or any URL that serves the file directly.
Each media type gets a fitting page in the gallery: videos stream through the video.js player, images display full size, PDF and TXT open in an embedded viewer, and other documents and books show their cover with a download button.
**Adding media**
Paste the file's public URL, pick an album, and choose a poster. The media type is detected from the extension:
- Videos: if ffmpeg is available on your server, the plugin extracts up to five candidate frames from the remote file — one every ten seconds — and you click the one you want. You can also upload your own poster image.
- Images: the image itself becomes the poster automatically.
- PDFs: page 1 becomes the poster automatically (needs pdftoppm).
- Anything else: upload a cover image, or a per-type placeholder is used.
For videos, a translucent play badge is baked into the poster by default, so they are recognizable at a glance in album views. Because it is written into the image before Piwigo generates its derivatives, the badge survives everywhere — including thumbnails served from a CDN. It can be switched off per video.
**Supported formats**
- Video: mp4, m4v, mov, webm, ogg, ogv, and m3u8 (HLS)
- Image: jpg, jpeg, png, gif, webp, avif, svg
- Document: pdf, txt, rtf, doc, docx, odt, ods, xls, xlsx, ppt, pptx
- Book: epub, mobi, azw3, djvu, cbz, cbr
**Scripted uploads**
The whole add flow is exposed as a ws.php API method (s3_media.add), authenticated with a native Piwigo API key. Point it at a URL, give it an album, and it handles poster extraction and photo creation:
curl 'https://your-gallery/ws.php?format=json'
-H 'X-Piwigo-Api: pkid-XXXXXXXX-xxxxxxxxxxxxxxxxxxxx:secret'
-d method=s3_media.add
-d url='https://myzone.b-cdn.net/clip.mp4'
-d category=42
Useful for bulk imports, or for chaining onto a download-and-upload pipeline.
**Settings**
Player height cap, control bar, autoplay (muted, as browsers require), and preload behaviour.
**Requirements**
- Piwigo 15 or later
- The VideoJS (piwigo-videojs) plugin, for its bundled video.js player assets. Without it the plugin still works, falling back to the browser's built-in HTML5 player.
- ffmpeg on the server — optional, and only for the frame-extraction button. The add page tells you if it is missing.
- pdftoppm on the server — optional, and only for automatic PDF posters.
**Good to know**
- Deleting the poster photo from your gallery forgets the media URL. The remote file is never touched.
- Uninstalling drops the plugin's table and settings; poster photos remain as ordinary images.
- The download button is hidden on video pages, since there is no local original to hand out.
- Adding media is an administrator-only action, and the plugin fetches the URL you give it from the gallery server — keep that in mind if your server sits inside a network with private hosts.
Released on Wednesday 12 August 2026
4
Compatible with Piwigo 16
18 hours 2 available languages+ 2## 16.7.1
- Adding media is fast again. 16.6.0 started measuring file size and PDF page count during registration, which costs up to three extra requests per media — a HEAD for the size, plus two ranged reads for a PDF's page count. On a remote bucket that turned adding a hundred media from about a minute into minutes per file. Registration is back to a single request; the "Backfill metadata" button on the Settings tab fills that information in afterwards, in batches, which is what it was built for.
- Fixed registration failing on any media whose filename contains an apostrophe ("An anonymous treatise on the Philosophers' stone"). The title was written to the database unescaped, so the apostrophe ended the SQL string early: the add died with a syntax error and left the photo half-registered, present in the gallery but unknown to the plugin.
- Fixed "Delete originals from S3" never actually deleting anything. The plugin was notified of a deletion too late — after Piwigo had already filtered the list of photos being removed — so the gallery rows were cleaned up while the file silently stayed in the bucket, with no error reported. The setting now does what it says; it remains off by default.
- New "Embed PDFs" setting. PDFs are shown in an inline viewer on the picture page; turning this off shows the thumbnail and a download link instead, the way the other document types behave. On by default, so nothing changes unless you turn it off.
- Added `tools/verify-published.sh`, which downloads the package piwigo.org is actually serving for a tag and checks that it really is that tag — the revision it recorded, the file contents, and the version header.
Released on Wednesday 12 August 2026
7
Released on Wednesday 12 August 2026
2
Released on Tuesday 11 August 2026
10
Released on Tuesday 4 August 2026
19
Released on Friday 31 July 2026
8
Released on Friday 31 July 2026
4
Released on Friday 31 July 2026
4