laminator

laminator

Docker app from cj0r's Repository

Overview

laminator draws MDBList score badges (IMDb, TMDb, Rotten Tomatoes and more) on the posters in your Emby and Jellyfin libraries, and can change metadata such as content rating, titles and descriptions, all from one web UI. Every change is reversible.

laminator

Score badges and metadata overrides for Emby and Jellyfin.

laminator draws a rating from MDBList onto your movie and show posters and lets you correct metadata such as content ratings, titles and tags, all from a web UI. Everything it changes can be put back.

The library, with the score drawn on each poster

[!WARNING] laminator changes posters and metadata on your media server. Try it on a few titles first, and read the disclaimer.

Features

  • Score badges from MDBList (combined score, or IMDb, TMDb, Rotten Tomatoes and others), always drawn on the untouched original, so they update instead of stacking.
  • Templates with a live preview, to design the badge.
  • Metadata overrides: content rating, title, sort title, tagline, critic rating, tags, genres and more, locked so a refresh can't undo them.
  • Custom posters per title, for fan edits and the like.
  • Fully reversible: originals and old values are kept, per title or all at once.
  • Scheduled runs, backups, two-factor sign-in, and Emby and Jellyfin side by side.

Quick start

services:
  laminator:
    image: cj0r/laminator:latest
    restart: unless-stopped
    ports: ["5264:5264"]
    volumes:
      - ./data:/data

Run docker compose up -d, open http://<host>:5264, and choose your password (the setup code is in docker logs laminator). Then add your server and MDBList key in Settings. Unraid and other setups are in Getting started.

Screenshots

Templates Metadata
Templates: design the badge on a real poster. Metadata: see every change before it's written.

User guide

Getting started · Web UI · Posters · Templates · Custom posters · Metadata overrides · Export · Backups · Maintenance · Settings · Upgrading · Command line · Security · Troubleshooting

Disclaimer

laminator is provided as is, without warranty, and you use it at your own risk. The authors accept no liability for changed posters or metadata, lost data or any other damage.

  • It changes your media server: posters, and metadata fields it locks. Keep backups of your server and of laminator's data folder.
  • It was developed with an AI coding assistant (Claude Code) and tested against real Emby 4.10 and Jellyfin 10.11 servers. Jellyfin has been checked with movies (posters, metadata, restore); TV shows are less tested there. Treat it like any young project.
  • Securing your deployment, and following the terms of the services you connect, is up to you. laminator is not affiliated with Emby, Jellyfin or MDBList.

License

laminator is free software under the GNU General Public License v3.0. Bundled fonts (SIL Open Font License) and dependency licenses are listed in THIRD_PARTY_NOTICES.md.

Support

If laminator is useful to you, you can support its development:

Support on Ko-fi Buy Me a Coffee

Bug reports and pull requests are welcome.

Media gallery

1 / 3

Requirements

An Emby or Jellyfin server and a free MDBList API key from mdblist.com.

Download Statistics

4,473
Total Downloads

Related apps

Details

Repository
cj0r/laminator:latest
Last Updated2026-11-05
First Seen2026-11-05

Runtime arguments

Web UI
http://[IP]:[PORT:5264]/
Network
bridge
Shell
sh
Privileged
false
Extra Params
--security-opt no-new-privileges:true

Template configuration

Web UI PortPorttcp

Web interface access port.

Target
5264
Default
5264
Value
5264
App DataPathrw

Settings, saved original posters, state and backups. Keep this in your backups.

Target
/data
Default
/mnt/user/appdata/laminator
Value
/mnt/user/appdata/laminator
Custom Posters FolderPathrw

Optional: a folder for your own base posters (Settings > Custom posters > folder: /assets).

Target
/assets
Second Backup FolderPathrw

Optional: a second copy of laminator's backups, for example on another share.

Target
/backups
Time ZoneVariable

Your time zone, for the schedule (for example America/New_York).

Target
TZ
Default
Etc/UTC
Value
Etc/UTC
Admin PasswordVariable

Optional: preset the web UI password instead of choosing it on first start with the setup code from the log.

Target
LAMINATOR_ADMIN_PASSWORD
Public URLVariable

Optional, behind a reverse proxy: the address you use in the browser, for example https://laminator.example.com.

Target
LAMINATOR_PUBLIC_URL
Trusted ProxiesVariable

Optional, behind a reverse proxy: the proxy's address or network (for example 172.18.0.0/16). Only its forwarded headers are believed.

Target
LAMINATOR_TRUSTED_PROXIES