Plex Not Finding Media: Fix Guide

The Problem

You have added media to your Plex library, but Plex shows nothing — or only some files appear. Scanning the library finishes instantly without finding anything new, and manually refreshing metadata does not help either.

This typically manifests as:

  • Library shows 0 items after adding files
  • Only some files appear while others are ignored
  • Plex says “This library is empty” despite files existing on disk
  • New additions are not detected after scanning
  • Library scan completes in under a second (nothing processed)

The root causes fall into four categories: incorrect Docker volume mounts, wrong file naming, permission issues, or library type mismatches.


Cause 1: Docker Volume Mounts

The most common reason Plex cannot find media in Docker is that the container paths do not match the library paths you configured in the Plex web UI.

How Volume Mounts Work

When you define volumes in docker-compose.yml, the left side is the host path and the right side is the container path:

volumes:
  - /mnt/storage/movies:/data/movies    # Host path : Container path
  - /mnt/storage/tv:/data/tv

The Plex library must point to the container path (/data/movies), not the host path (/mnt/storage/movies). If you configured the library to look at /mnt/storage/movies, Plex sees an empty directory because that path does not exist inside the container.

Correct Docker Compose Configuration

services:
  plex:
    image: lscr.io/linuxserver/plex:1.43.0.10492-121068a07-ls295
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=America/New_York
      - VERSION=docker
    volumes:
      - plex-config:/config
      - /mnt/storage/movies:/data/movies
      - /mnt/storage/tv:/data/tv
      - /mnt/storage/music:/data/music
      - /tmp/plex-transcode:/transcode
    ports:
      - "32400:32400"
    restart: unless-stopped

volumes:
  plex-config:

Verify Files Are Visible Inside the Container

docker exec plex ls -la /data/movies/
docker exec plex ls -la /data/tv/

If these commands show empty directories or return “No such file or directory”, your volume mounts are wrong.

SymptomCauseFix
ls shows empty directoryVolume mount path is wrongCorrect the host path in docker-compose.yml
No such file or directoryContainer path does not existVerify the right-side path in your volume definition
Files listed but Plex ignores themPermission issue or naming issueSee Causes 2 and 3 below

Cause 2: File Naming Conventions

Plex is strict about how media files are named. Files that do not match the expected naming pattern are silently skipped during scans.

Movie Naming

Correct format: Movie Name (Year)/Movie Name (Year).ext

/data/movies/
├── Batman Begins (2005)/
│   └── Batman Begins (2005).mkv
├── Inception (2010)/
│   └── Inception (2010).mkv
└── The Dark Knight (2008)/
    └── The Dark Knight (2008).mkv

For multiple editions:

/data/movies/
└── Blade Runner 2049 (2017)/
    ├── Blade Runner 2049 (2017) {edition-Theatrical}.mkv
    └── Blade Runner 2049 (2017) {edition-Directors Cut}.mkv

Common mistakes:

  • Missing year: Batman Begins.mkv — Plex cannot reliably match without the year
  • No subfolder: Dumping all movies in one flat directory works but is fragile
  • Extra dots in filename: Batman.Begins.2005.mkv — use spaces, not dots

TV Show Naming

Correct format: Show Name (Year)/Season NN/Show Name (Year) - sNNeXX - Episode Title.ext

/data/tv/
└── Breaking Bad (2008)/
    ├── Season 01/
    │   ├── Breaking Bad (2008) - s01e01 - Pilot.mkv
    │   ├── Breaking Bad (2008) - s01e02 - Cat's in the Bag.mkv
    │   └── Breaking Bad (2008) - s01e03 - ...And the Bag's in the River.mkv
    └── Season 02/
        └── Breaking Bad (2008) - s02e01 - Seven Thirty-Seven.mkv

Critical rules:

  • Use the English word “Season” even for non-English content
  • Season and episode numbers must be zero-padded: s01e01, not s1e1
  • The sNNeXX pattern is mandatory — Plex does not reliably parse other formats

Date-Based Shows

For daily shows like talk shows:

/data/tv/
└── The Daily Show/
    ├── The Daily Show - 2025-01-15.mkv
    └── The Daily Show - 2025-01-16.mkv

Music Naming

/data/music/
└── Artist Name/
    └── Album Name (Year)/
        ├── 01 - Track Title.flac
        ├── 02 - Track Title.flac
        └── 03 - Track Title.flac

Cause 3: File Permissions

Plex runs as a specific user inside the Docker container. If that user cannot read your media files, the scanner silently skips them.

Check Current Permissions

# On the host
ls -la /mnt/storage/movies/

If the file owner does not match the PUID/PGID values in your Docker Compose, Plex cannot access them.

Fix Permissions

# Set ownership to match your PUID/PGID (default: 1000:1000)
sudo chown -R 1000:1000 /mnt/storage/movies/
sudo chown -R 1000:1000 /mnt/storage/tv/

# Ensure directories are traversable and files are readable
sudo chmod -R 755 /mnt/storage/movies/
sudo chmod -R 755 /mnt/storage/tv/

Common Permission Traps

ScenarioProblemFix
Files downloaded by a different userWrong ownershipchown -R PUID:PGID
NFS mount with root_squashRemote permissions override localAdd no_root_squash to NFS export or match UIDs
SMB/CIFS mountMount options ignore Linux permissionsAdd uid=1000,gid=1000 to mount options
Files copied as rootRoot owns everythingchown -R PUID:PGID on the media directory

Important: PUID and PGID are only applied on the container’s first start. If you change them after initial setup, recreate the container:

docker compose down && docker compose up -d

Cause 4: Library Type Mismatch

Plex uses different scanners for movies and TV shows. If you create a “Movies” library and point it at a TV show directory, nothing will match.

Verify Library Settings

  1. Open Plex Web → Settings → Manage → Libraries
  2. Click the pencil icon next to your library
  3. Check the Type matches your content:
    • Movies folder → “Movies” type
    • TV shows folder → “TV Shows” type
    • Music folder → “Music” type
    • Photos folder → “Photos” type

Fix a Misconfigured Library

You cannot change a library’s type after creation. Delete the library and recreate it with the correct type:

  1. Settings → Manage → Libraries → Delete library
  2. Add Library → Select correct type → Point to the same directory

Deleting a library does not delete your media files. It only removes the database entries.

Scanner and Agent Settings

For most setups, use the defaults:

Library TypeScannerAgent
MoviesPlex MoviePlex Movie
TV ShowsPlex TV SeriesPlex TV Series
MusicPlex MusicPlex Music

If you changed the agent to a third-party option and scanning broke, switch back to the Plex defaults.


Triggering a Rescan

After fixing the underlying issue:

Manual Full Scan

  1. Navigate to the library in Plex Web
  2. Click the menu (three dots)
  3. Select Scan Library Files

For a deeper rescan:

  1. menu → Refresh All Metadata — forces re-matching against metadata sources

Automatic Scanning

Enable in Settings → Library:

  • Scan my library automatically — detects new files via filesystem events
  • Run a partial scan when changes are detected — more efficient than full scans
  • Scan my library periodically — set a schedule (every 15 min to 24 hours)

Force a Single Item Match

If one specific item is not matching:

  1. Click the item → menu → Fix Match
  2. Search for the correct title manually
  3. Select the correct match from the results

Checking Plex Logs

If nothing above fixes the issue, check the scanner logs:

docker exec plex cat "/config/Library/Application Support/Plex Media Server/Logs/Plex Media Scanner.log" | tail -50

Look for:

  • Error scanning: Permission denied or path not found
  • No media found: Naming convention issue
  • Scan complete: added 0: Files exist but do not match expected patterns
  • Unable to find: Container cannot reach the specified path

Prevention

  • Always use the Show Name (Year)/Season NN/sNNeXX pattern for TV shows — it is the most reliable
  • Always include the year in movie folder and file names
  • Run ls inside the container after changing Docker Compose volumes to verify paths
  • Set PUID/PGID once and keep them consistent across all your media-related containers (Plex, Sonarr, Radarr, etc.)
  • Never use SMB/CIFS mounts for the Plex config directory — it corrupts the database. Media directories on SMB are fine

Comments