Skip to main content

Plex to Letterboxd Exporter

Exports Plex watch history and ratings to a Letterboxd‑compatible CSV file using TMDB IDs for reliable matching.

Install

From PyPI:

pip install plex-letterboxd

Or with uv:

uv pip install plex-letterboxd

From source:

git clone https://github.com/brege/plex-letterboxd.git
cd plex-letterboxd
pip install .

Or with uv:

git clone https://github.com/brege/plex-letterboxd.git
cd plex-letterboxd
uv pip install .

Configure

There are two ways to include your Plex token.

Option 1: Set your Plex token in config.yaml:

plex:
  url: http://your-plex-server:32400
  token: PLEX_TOKEN
  timeout: 60

Option 2: Kometa users may source Kometa's config in this project's config.yaml:

kometa:
  config_path: ./path/to/Kometa/config.yml

Exporter options are in config.yaml.

  • export: output, after, before, user, library
  • csv: rating, review, max_rows, genres, tags, rewatch, mark_rewatch

See config.example.yaml for available options.

Usage

  • List users
plex-letterboxd --list-users
  • Export for a specific user
plex-letterboxd --user USERNAME --output plex-export.csv
  • Export a date range
plex-letterboxd \
    --user USERNAME \
    --after 2024-01-01 \
    --before 2024-12-31 \
    --output plex-export-2024.csv

Import at https://letterboxd.com/import/

See plex-letterboxd --help for CLI options.

Output CSV Columns

Field Description
tmdbID TMDB ID for precise matching
Title Movie title
Year Release year
Directors Director names
WatchedDate When you watched it (YYYY‑MM‑DD)
Rating Your rating (0.5–5.0), if enabled
Tags Genres and/or custom tags, if enabled
Rewatch Whether it's a rewatch

Automated Exports

Set up a systemd timer for automated monthly exports with CSV checkpointing.

Setup Timer

Monthly

bash <(curl -s https://raw.githubusercontent.com/brege/plex-letterboxd/refs/heads/main/systemd/install.sh)

Or weekly

bash <(curl -s https://raw.githubusercontent.com/brege/plex-letterboxd/refs/heads/main/systemd/install.sh) weekly

The timer will run the exporter on your chosen schedule, producing CSV files in ~/.config/plex-letterboxd/data/. Configure the output data directory via config.yaml to change.

I suggest running this on the same machine Plex runs on, since it's typically always online.

License

GPLv3

Metadata

Release files for plex-letterboxd 0.8

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for plex-letterboxd 0.8
File Size Uploaded
plex_letterboxd-0.8.tar.gz 23.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for plex-letterboxd 0.8
File Interpreter ABI Platform
plex_letterboxd-0.8-py3-none-any.whl Python 3 none any Details

Total release size: 47.0 kB

Release files / plex_letterboxd-0.8.tar.gz

Download URL plex_letterboxd-0.8.tar.gz
Size 23.3 kB
Tags Source
SHA-256 checksum
How to use checksums
c30d7fdecabd2b164a6e9261f7b879a791396211d1b5a280ba8dd4e573144b27
BLAKE2b-256 checksum
How to use checksums
4233f173a06a67235251cf642201cd4a5f92e715e92e10022e0b583f9d5ea546
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 26, 2026.

Transparency log

Release files / plex_letterboxd-0.8-py3-none-any.whl

Download URL plex_letterboxd-0.8-py3-none-any.whl
Size 23.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
21fcd4f00343c4dcaa5ad02d6c0474042d8ede6dd32c8d5968762a95a2868295
BLAKE2b-256 checksum
How to use checksums
7746f73fb2d7a1576092e7ebe1ab6b8e0927cd873747bd59ddf4efd027de7500
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 26, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.8 This release

2 release files

0.7

2 release files

0.6

2 release files

0.5

2 release files

0.4

2 release files

0.3

2 release files

0.2

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page