Quick answer
What this guide helps you do
Troubleshoot Jellyfin systematically. Fix missing media, scan failures, permissions, storage mounts, transcoding, subtitles, remote access and high CPU use.
Jellyfin beginner path
New to Jellyfin? Follow this order.
These guides form the SmallGrid Jellyfin path: install it, fix folder access, solve empty libraries, reduce unnecessary transcoding, then choose the right mini PC.
Jellyfin problems are easier to fix when you identify which layer has failed before changing settings.
Most faults belong to one of these areas:
- storage is not mounted or available
- Jellyfin cannot access the folder
- the library points to the wrong path
- scanning is not detecting new media
- the client cannot play the original streams
- remote bandwidth or access is restricted
- hardware acceleration is configured incorrectly
This hub provides a practical decision tree and links to the detailed SmallGrid guides for each problem.
Start here: collect evidence
Before changing anything, record:
Jellyfin installation: native or Docker
Operating system:
Media path on host:
Media path inside container:
Storage type: internal, USB, network or pooled
Problem affects: all files, one library, one file or one client
Problem started after: reboot, update, move, permission change or unknown
Relevant Jellyfin log message:
For playback problems, also record:
Client:
Local or remote:
Direct Play, Direct Stream or Transcoding:
Video codec:
Audio codec:
Subtitle format:
Reported conversion reason:
Change one variable at a time and retest the same file or path.
Decision tree
Jellyfin cannot see any media
Check in this order:
- Does the file exist on the host?
- Is the storage mounted?
- Can the Jellyfin user traverse the directory path?
- Does the Docker container see the mapped folder?
- Does the Jellyfin library use the correct path?
- Does a manual scan produce an error?
Use:
- Jellyfin Ubuntu Folder Permissions
- Jellyfin Docker Permissions
- Jellyfin Media Library Not Showing Files
- Jellyfin Cannot Access an External USB Drive
Existing files appear but new files do not
Check:
- ownership and permissions of the new files
- automatic library monitoring
- scheduled scan tasks
- manual scan results
- storage availability
- naming and supported media types
- Jellyfin logs
Use Jellyfin Not Scanning New Files.
Media disappears after reboot
Check:
- whether the drive mounted
- whether the mount path changed
- whether Docker started before the mount became available
- whether the library still points to the same path
- whether permissions changed after remounting
Use:
- Jellyfin Files Disappear After Reboot
- Ubuntu Drive Disappears After Reboot
- How to Mount a Drive Automatically with fstab
Playback buffers or uses high CPU
Check:
- the active playback mode
- the conversion reason
- subtitles
- the selected audio track
- local or remote quality limits
- client compatibility
- hardware acceleration status
Use:
- Jellyfin Direct Play vs Transcoding
- How to Check Why Jellyfin Is Transcoding
- Jellyfin Subtitles Causing Transcoding
- Jellyfin Hardware Transcoding on Ubuntu
Remote playback does not connect
Check:
- whether Jellyfin works locally
- which remote-access method is configured
- firewall and VPN status
- DNS or hostname resolution
- certificate and reverse-proxy configuration, where used
- whether the server is exposed safely
Use:
1. Confirm storage is available
Run these checks on Ubuntu:
lsblk -f
df -h
findmnt
For a specific media path:
findmnt /path/to/media
ls -la /path/to/media
A directory can exist even when the drive that normally mounts there is absent. If the directory suddenly appears empty after reboot, verify the mount before editing the Jellyfin library.
Relevant guides:
- How to Mount a Drive Automatically with fstab
- Ubuntu Drive Disappears After Reboot
- How to Check Drive Health with SMART
2. Check folder permissions
Jellyfin needs access to every directory in the path, not only the final media folder.
Inspect the path with:
namei -l /path/to/media
For a native Jellyfin installation:
id jellyfin
ls -ld /path/to/media
For Docker, identify the container user and the host directory ownership. Also confirm the volume mapping.
Example:
volumes:
- /srv/media/Movies:/media/movies:ro
The Jellyfin library must use /media/movies, not the host path.
Use:
- Jellyfin Ubuntu Folder Permissions
- Jellyfin Docker Permissions
- How to Fix Permission Denied on Ubuntu Server
- Docker Container Cannot Access a Mounted Folder
Avoid using chmod 777 as a permanent fix. It hides the ownership or group problem and grants more access than Jellyfin normally needs.
3. Confirm the correct library path
For native Jellyfin, the library uses the host filesystem path.
For Docker, the library uses the path inside the container.
Compare:
Host path: /srv/media/TV
Container path: /media/tv
Jellyfin path: /media/tv
If the Docker mapping changes, Jellyfin does not automatically update the existing library path.
Test what the container can see using the container name from your deployment:
docker exec -it jellyfin ls -la /media/tv
If the host can see files but the container cannot, repair the volume mapping or container permissions before rescanning.
4. Diagnose scanning failures
A manual scan is useful only after the path and permissions are confirmed.
Work through:
- open the library settings and verify the path
- run a manual scan
- inspect scheduled tasks
- inspect the Jellyfin logs
- verify new-file ownership
- test one simple media filename
Use:
If older files are visible but newly copied files are missing, compare their ownership and permissions:
ls -l /path/to/media
The copy, download or automation process may be creating files under a different user or group.
5. Diagnose playback mode
While the problem file is playing:
- open the Jellyfin dashboard
- find the active session
- record Direct Play, Direct Stream or Transcoding
- record every stated conversion reason
- note video, audio and subtitle details
Use:
- Jellyfin Direct Play: Formats, Clients and Transcoding
- Jellyfin Direct Play vs Transcoding
- Jellyfin Direct Stream vs Direct Play
- Best Video Format for Jellyfin Direct Play
Do not assume high CPU means Jellyfin is malfunctioning. A required software video transcode can legitimately use several CPU cores.
6. Test subtitles and audio
Subtitles and audio frequently explain why apparently compatible video transcodes.
Use this controlled test:
- play the same scene with the original settings
- disable subtitles and replay
- select another audio track and replay
- check the dashboard after each change
If disabling subtitles changes the session to Direct Play, read Jellyfin Subtitles Causing Transcoding.
If changing audio removes conversion, the original audio codec or channel layout was unsupported by the client.
7. Compare clients
Test the same file on another maintained client.
A browser may support fewer combinations than a native Jellyfin client. If another client Direct Plays the file, the server and source file may be healthy.
Use Best Cheap Jellyfin Client for Direct Play when client compatibility is the repeated limitation.
Record the result rather than relying only on advertised codec support.
8. Check hardware acceleration
Configure hardware acceleration only after confirming that video conversion is required.
Use:
Verify:
Device visible to host
Device visible to container or VM
Jellyfin user has device access
Correct acceleration method selected
Active playback process uses the hardware encoder or decoder
A successful settings save does not prove the device is active during playback.
9. Review logs without guessing
Use logs to confirm the failing layer.
For a native service:
sudo journalctl -u jellyfin --since "30 minutes ago"
For Docker:
docker logs --since 30m jellyfin
Look for:
- permission denied
- path not found
- mount or input/output errors
- FFmpeg failures
- unsupported codec or filter
- hardware device errors
- network or certificate errors
Capture the exact message and the action that produced it.
10. Reboot-related checklist
After a reboot, verify in this order:
findmnt
systemctl --failed
docker ps
Then confirm:
- media storage mounted at the expected path
- Docker or Jellyfin started successfully
- the container can see its mapped paths
- permissions remain correct
- the library still points to the expected path
Starting Jellyfin before a required mount is available can make libraries appear empty even though the application itself is healthy.
Common mistakes
Repeatedly rescanning an unavailable path
A scan cannot repair a missing mount, incorrect Docker mapping or permission failure.
Changing ownership recursively without understanding the service users
This can break downloaders, Samba shares and other containers that share the same storage.
Converting the entire library after one playback failure
Test another client, subtitle track, audio track and quality setting first.
Enabling hardware acceleration without verification
Check the active session and process. Do not rely only on the configured checkbox.
Exposing Jellyfin publicly to solve remote access
Use a planned VPN or reverse-proxy setup rather than opening ports without security controls.
Recommended guide paths
Missing files and permissions
- Jellyfin Ubuntu Folder Permissions
- Jellyfin Docker Permissions
- Jellyfin Media Library Not Showing Files
- Jellyfin Cannot Access an External USB Drive
Scanning and reboot problems
- Jellyfin Not Scanning New Files
- Jellyfin Files Disappear After Reboot
- Ubuntu Drive Disappears After Reboot
Playback and transcoding
- Jellyfin Direct Play
- Jellyfin Direct Play vs Transcoding
- How to Check Why Jellyfin Is Transcoding
- Jellyfin Subtitles Causing Transcoding
- Jellyfin Hardware Transcoding on Ubuntu
Ubuntu deployment and maintenance
- Jellyfin on Ubuntu
- How to Mount a Drive Automatically with fstab
- How to Check Drive Health with SMART
Remote access
Recap
Troubleshoot Jellyfin by identifying the failing layer:
- storage
- permissions
- path mapping
- library scanning
- client compatibility
- network access
- hardware acceleration
Collect evidence, make one change and repeat the same test. This prevents one fix from hiding another problem and avoids unnecessary library conversion or hardware replacement.
Jellyfin guide cluster
More Jellyfin fixes and setup guides
These guides link the main Jellyfin setup, permissions, remote access, direct play, and hardware topics together.
Jellyfin 12 Upgrade Preparation: Backup, Plugins and Migration Checklist
Prepare a Jellyfin 10.10 or 10.11 server for Jellyfin 12. Check your version, create a restorable backup, audit plugins and plan the first startup safely.
Jellyfin on Ubuntu: Low-Power Setup, Media Folders and Reboot Checks
Build a reliable low-power Jellyfin server on Ubuntu. Install Jellyfin, mount storage, fix media access, favour Direct Play, measure power, and verify the server after reboot.
Give Jellyfin Access to Media Folders on Ubuntu
Fix Jellyfin permission denied errors on Ubuntu. Test the service user, find blocked parent folders, apply safe ACLs, verify inheritance, and check mounted-drive options.
Jellyfin Library Not Showing Files? 8 Checks That Fix It
Fix a Jellyfin library that is empty or missing media. Check mounts, Linux permissions, Docker paths, library folders, naming, scans and logs in the correct order.
Jellyfin Docker Permissions: Fix Media Folder Access and UID/GID Errors
Fix Jellyfin Docker permission denied errors. Check bind mounts, container paths, UID and GID values, read-only media access, active mounts, and file visibility step by step.
Jellyfin Direct Play vs Transcoding: CPU, Quality and Compatibility
Compare Jellyfin Direct Play, Direct Stream and transcoding. See CPU use, quality differences, common triggers and how to check the active playback mode.