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.
| Symptom | Cause | Fix |
|---|---|---|
ls shows empty directory | Volume mount path is wrong | Correct the host path in docker-compose.yml |
No such file or directory | Container path does not exist | Verify the right-side path in your volume definition |
| Files listed but Plex ignores them | Permission issue or naming issue | See 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, nots1e1 - The
sNNeXXpattern 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
| Scenario | Problem | Fix |
|---|---|---|
| Files downloaded by a different user | Wrong ownership | chown -R PUID:PGID |
NFS mount with root_squash | Remote permissions override local | Add no_root_squash to NFS export or match UIDs |
| SMB/CIFS mount | Mount options ignore Linux permissions | Add uid=1000,gid=1000 to mount options |
| Files copied as root | Root owns everything | chown -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
- Open Plex Web → Settings → Manage → Libraries
- Click the pencil icon next to your library
- 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:
- Settings → Manage → Libraries → Delete library
- 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 Type | Scanner | Agent |
|---|---|---|
| Movies | Plex Movie | Plex Movie |
| TV Shows | Plex TV Series | Plex TV Series |
| Music | Plex Music | Plex 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
- Navigate to the library in Plex Web
- Click the ⋮ menu (three dots)
- Select Scan Library Files
For a deeper rescan:
- ⋮ 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:
- Click the item → ⋮ menu → Fix Match
- Search for the correct title manually
- 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 foundNo media found: Naming convention issueScan complete: added 0: Files exist but do not match expected patternsUnable to find: Container cannot reach the specified path
Prevention
- Always use the
Show Name (Year)/Season NN/sNNeXXpattern for TV shows — it is the most reliable - Always include the year in movie folder and file names
- Run
lsinside 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
Related
Get self-hosting tips in your inbox
Get the Docker Compose configs, hardware picks, and setup shortcuts we don't put in articles. Weekly. No spam.
Comments