What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more
Jellyfin storage can grow in several independent places: your media library, SQLite database, cache, log and activity-log folders, and temporary transcoding output. The fastest way to find the cause is to identify Jellyfin’s active data, cache, log, and transcode paths, measure each one separately, then relate the largest directory to current playback and maintenance settings.
Do not delete the database or original media as if they were cache. Confirm what is consuming space and use Jellyfin’s maintenance tasks for data that is explicitly regenerable.
What is taking the space?
“Jellyfin storage” is not one folder. An installation can write to several paths, and each has a different safe response. The exact locations depend on the installation method, command-line options, environment variables, and platform defaults, so a path copied from another server may be wrong for yours.
Do these 3 things before closing this tab:
1Clear out junk files and repair common Windows errors2Scan for outdated or missing drivers - takes under a minute3Repair Windows errors before they cause bigger problems| Storage area | What it contains | Typical clue | Safe first response |
|---|---|---|---|
| Original media | Movies, episodes, music, photos, subtitles, and other files you added | Large, relatively stable files that match your library | Keep them; investigate duplicate or unintended media outside Jellyfin’s maintenance tasks |
| Server data and database | Configuration, metadata records, users, library state, and the default SQLite database file jellyfin.db |
Growth in the configured data directory | Measure it; do not remove database files manually |
| Cache | Regenerable cached artwork and other temporary server data | Cache directory grows while the library is scanned or artwork is refreshed | Use Clear Cache Folder after confirming the path |
| Logs and activity logs | Server diagnostics, playback records, and activity history | Many dated text or log files, especially after troubleshooting | Use Clear Log Folder and Clear Activity Logs; turn off debug logging when finished |
| Transcodes | Temporary video or audio output produced for clients that cannot play the source directly | Large files appear or disappear during playback | Check active playback mode and use Clear Transcodes Folder when no longer needed |
Database growth is real, but not a universal forecast
Jellyfin uses SQLite by default and stores jellyfin.db in the data directory. Jellyfin’s storage documentation gives a broad example of 10–100 GB for a database serving a moderate-sized library. That is an illustrative range, not a typical growth rate or a promise that your database will reach either limit. Library size, metadata, images, users, plugins, and scan history all affect the result.
#1 Best Overall
- Easily store and access 2TB to content on the go with the Seagate Portable Drive, a USB external hard drive
- Designed to work with Windows or Mac computers, this external hard drive makes backup a snap just drag and drop
- To get set up, connect the portable hard drive to a computer for automatic recognition no software required
- This USB drive provides plug and play simplicity with the included 18 inch USB 3.0 cable
- The available storage capacity may vary.
If the data directory is large, inspect which files or subdirectories account for it before taking action. A large database is not equivalent to disposable cache: deleting it can remove library state and configuration and may require rebuilding the server.
Identify Jellyfin’s active paths before measuring
Path discovery comes first because Jellyfin can override platform defaults. The configuration documentation describes precedence involving command-line options and environment variables for data, cache, and log locations. Containers and appliances add another layer: the path visible inside Jellyfin may map to a different host directory, volume, or dataset.
- Determine how the server is launched. Identify whether Jellyfin runs as a native service, a container, or an appliance package. Inspect the service definition, container environment, or application settings for data, cache, log, and transcode arguments and variables.
- Record the paths Jellyfin is actually using. Treat configured values as authoritative rather than assuming a default from a guide written for another operating system. In a container, write down both the in-container path and its host-side mount. In an appliance, note the dataset or volume behind each mount.
- Check that the paths are mounted and writable. A missing mount can make a service write into an unexpected local directory, while an unwritable destination can make transcoding fail. Confirm the filesystem and free space for every configured path.
- Separate the measurements. Keep data, cache, logs, activity logs, and transcodes as separate rows in your notes. Combining them hides the directory that is actually growing.
TrueNAS SCALE documentation for SCALE v24.10.0 or higher illustrates this separation by assigning distinct storage for configuration, cache, and transcodes. The principle applies more broadly even when your deployment uses different names: separate paths make capacity and cleanup decisions easier to control.
The Tool Desk
Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →Measure each directory on the host
Use the operating system’s disk-usage tools against the host paths you identified. Measure the directories while Jellyfin is running, then repeat after a playback session if you suspect transcoding.
Linux
Set shell variables to the real paths from your installation, then compare their totals:
Rank #2
- Easily store and access 5TB of content on the go with the Seagate portable drive, a USB external hard Drive
- Designed to work with Windows or Mac computers, this external hard drive makes backup a snap just drag and drop
- To get set up, connect the portable hard drive to a computer for automatic recognition software required
- This USB drive provides plug and play simplicity with the included 18 inch USB 3.0 cable
- The available storage capacity may vary.
export JELLYFIN_DATA='/srv/jellyfin/data'
export JELLYFIN_CACHE='/srv/jellyfin/cache'
export JELLYFIN_LOG='/srv/jellyfin/log'
export JELLYFIN_TRANSCODES='/srv/jellyfin/transcodes'
du -sh "$JELLYFIN_DATA" "$JELLYFIN_CACHE" "$JELLYFIN_LOG" "$JELLYFIN_TRANSCODES"
du -h --max-depth=1 "$JELLYFIN_DATA" | sort -h
The first command compares the four configured roots. The second breaks down the data directory so you can find its largest child. If your version of du does not support --max-depth, run du -sh on individual subdirectories instead. Add the filesystem’s available-space check, such as df -h, because a directory total does not show how much capacity remains.
macOS
Use the same variable approach with paths appropriate to your service:
du -sh "$JELLYFIN_DATA" "$JELLYFIN_CACHE" "$JELLYFIN_LOG" "$JELLYFIN_TRANSCODES"
df -h "$JELLYFIN_DATA"
For a deeper view, run du -sh on the largest subdirectories reported by the first command. Keep the transcode directory on the same volume you intend to monitor; a separate volume can have a different free-space limit.
Windows PowerShell
Assign the real Windows paths, then total files recursively:
$paths = @{
Data = 'D:Jellyfindata'
Cache = 'D:Jellyfincache'
Logs = 'D:Jellyfinlog'
Transcodes = 'E:Jellyfintranscodes'
}
$paths.GetEnumerator() | ForEach-Object {
$sum = (Get-ChildItem -LiteralPath $_.Value -File -Recurse -Force -ErrorAction SilentlyContinue |
Measure-Object -Property Length -Sum).Sum
[pscustomobject]@{ Area = $_.Key; GiB = [math]::Round($sum / 1GB, 2) }
}
Run Get-Volume or check the drive in File Explorer to verify free space. If a path is a mapped network drive, measure the server-side share as well; the local drive letter may not reveal the storage consumed on the remote system.
Rank #3
- Easily store and access 1TB to content on the go with the Seagate Portable Drive, a USB external hard drive.Specific uses: Personal
- Designed to work with Windows or Mac computers, this external hard drive makes backup a snap just drag and drop. Reformatting may be required for Mac
- To get set up, connect the portable hard drive to a computer for automatic recognition no software required
- This USB drive provides plug and play simplicity with the included 18 inch USB 3.0 cable
- The available storage capacity may vary.
Containers and appliances
Measure the host mount or dataset, not only the container’s writable layer. If your deployment maps the familiar container paths /config, /cache, and /transcodes, an interactive check might be:
Quick wins for a faster PC:
Clear out junk files and repair common Windows errorsFree Scan →Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Repair Windows errors before they cause bigger problemsFix Now →docker exec jellyfin du -sh /config /cache /transcodes
This command works only when those paths exist and the image includes du; the host-side mount remains the authoritative capacity check. A container can also write to an unintended internal path if a mount was removed or changed, so compare the launch configuration with the paths Jellyfin reports.
Check whether playback is creating transcodes
Transcoding is often the reason storage appears to grow suddenly. A client may not support the source codec, container, audio format, subtitle mode, bitrate, or requested quality, so Jellyfin processes the stream and writes temporary output.
| Playback mode | What Jellyfin does | Expected transcode-directory effect |
|---|---|---|
| Direct Play | Serves the original file without modification | No video transcode output for that session |
| Remux | Repackages compatible streams into a container the client accepts | May create temporary work, but it is not a full video re-encode |
| Direct Stream | Processes or repackages an incompatible stream while leaving compatible streams untouched | Temporary output can appear, depending on the stream and client |
| Transcode | Processes the video stream into a different format, resolution, or bitrate | Can consume substantial temporary disk space |
Use the dashboard as the correlation point
- Start playback on the client that coincides with the storage increase.
- Open Jellyfin’s active sessions or playback dashboard and note whether the session is Direct Play, Remux, Direct Stream, or Transcode.
- Watch the configured transcode directory while the session runs. A rise that tracks the session points to playback work rather than unexplained permanent database growth.
- If playback fails or the directory stops growing at a suspicious point, inspect the associated FFmpeg log. It can show the input, selected output, codec, and the stage at which writing stopped.
Jellyfin’s storage documentation says a transcode folder may need about as much space as the original media when transcoding at an equivalent bitrate. Its illustrative example is a 50 GB Blu-ray remux producing approximately 60 GB or as little as 15 GB of output, depending on the requested result. Those figures demonstrate the range of possible temporary use; they are not a sizing rule for every title or client.
A transcode can fail when its destination cannot continue to accept output. The TrueNAS SCALE guide also warns that RAM-backed temporary storage has a hard capacity constraint: insufficient available memory can make a transcode fail. Use a disk-backed location when the workload or output size can exceed the memory you can safely dedicate.
Rank #4
- Easily store and access 4TB of content on the go with the Seagate Portable Drive, a USB external hard drive.Specific uses: Personal
- Designed to work with Windows or Mac computers, this external hard drive makes backup a snap just drag and drop
- To get set up, connect the portable hard drive to a computer for automatic recognition no software required
- This USB drive provides plug and play simplicity with the included 18 inch USB 3.0 cable
- The available storage capacity may vary.
Look for logging and cache settings that amplify usage
Debug logging
Jellyfin’s troubleshooting guidance cautions that debug logging produces a large amount of output and should not remain enabled after diagnosis. If logs are the largest directory, check the current logging level and any troubleshooting switches, restore normal logging, and then run Clear Log Folder. Preserve logs you still need for an active incident before clearing them.
Cache behavior
Cache is designed to be regenerated, but clearing it is not a universal performance fix. Jellyfin notes that performance depends on storage speed, free memory, CPU, and library contents, so cache-size tuning has different results on different servers. Measure first, clear only when the cache is demonstrably the source of pressure, and allow Jellyfin time to rebuild artwork or other cached data.
Use Jellyfin’s supported maintenance tasks
Jellyfin provides maintenance operations for the areas that are normally safe to regenerate. The Tasks documentation states: “Tasks are operations that are scheduled to run periodically by default. They can also be triggered manually by clicking the run button on the right.”
- Clear Cache Folder: removes regenerable cache content.
- Clear Log Folder: removes stored server logs after you have saved anything required for troubleshooting.
- Clear Activity Logs: removes activity-history records according to the task’s behavior.
- Clear Transcodes Folder: removes temporary transcoding output that is no longer needed.
Open the server’s scheduled-task area, locate the relevant task, confirm its scope, and use the run button for an immediate cleanup. Schedule maintenance only after confirming that its timing will not collide with active playback or backups.
Recommended Free Tools
What not to delete manually
- Do not remove
jellyfin.dbor other data-directory files simply because they are large. - Do not delete original media to solve a cache or transcode problem.
- Do not remove unknown files from a container or appliance volume until you have mapped them to a Jellyfin function and kept a backup.
Manual deletion is appropriate only for files you have positively identified as disposable and that are not being used by a running process. Supported tasks are preferable because they understand Jellyfin’s directory layout and scheduling.
Best Value
- [Upgraded Version] - This external hard drive features a mirrored logo stripe combined with a striped anti-slip design, and the rounded corners of the casing make it easier to grip. The stripes also have a heat dissipation function, ensuring stable and fast data transfer.
- 【Ultra-thin and quiet】 - The motherboard adopts JMicron 578 noise-free solution, giving you a quiet working environment. Lightweight and portable size designed to fit in your pocket for easy portability.
- 【Ultra-Fast Data Transfers】 - Pairing this external hard drive with JMicron 578 solution USB 3.0 and USB 2.0 interfaces enables blazing-fast data transfer. It boasts theoretical read speeds of up to 125MB/s and write speeds of up to 103MB/s.
- 【Plug and Play】 - With no software to install, just plug it in and the drive is ready to use.The hard disk chip is wrapped with an aluminum anti-interference layer to increase heat dissipation and protect data.
- 【What You Get】 - 1 x Portable Hard Drive, 1 x USB 3.0 Cable, 1 x User Manual, Gift-type shell packaging ,Three-year manufacturer's warranty and free technical support services.
Protect library state when media is on a network share
Jellyfin’s storage guidance recommends mounting a network filesystem directly to the operating system and keeping the database on local storage rather than on the network filesystem. Local database storage reduces dependence on share availability and avoids treating a remote mount as if it were a local database disk.
Make sure network shares are mounted before scheduled maintenance runs. Jellyfin warns that cleanup of collections and playlists can lose entries when their media is unavailable at task time—for example, when a share has not mounted after a reboot. A task that sees an empty mount can interpret missing files as removed content.
Storage-placement choices that affect diagnosis
| Placement decision | Advantage | Risk or constraint |
|---|---|---|
| Database on local disk | Stable access and predictable metadata operations | Requires local capacity and backups |
| Media on a network-mounted filesystem | Centralized or expandable bulk storage | Share outages can make media appear missing during scans or cleanup |
| Separate transcode volume | Prevents temporary playback work from filling the database volume | That volume needs enough free space for the largest concurrent workload |
| RAM-backed transcode area | Fast temporary I/O and no disk writes for the transcode files | Capacity is limited by available memory; an undersized area can fail a transcode |
| Shared data, cache, logs, and transcodes path | Simpler initial setup | A log burst or transcode can consume space needed by the database |
Choose separate paths when you can, but do not move directories blindly. Change the configured path, stop or restart the service as required by your deployment, verify permissions, and confirm the new location is being populated before removing the old copy.
Common symptoms and the next check
Space rises only while someone watches a title
Check the session’s playback mode and the transcode directory first. Direct Play points away from video transcoding; Transcode points toward temporary FFmpeg output. End the session, verify whether files are released, and run the transcode cleanup task if stale output remains.
Logs grow by gigabytes in a short period
Check whether debug logging is enabled and whether a repeated FFmpeg or filesystem error is being recorded. Save a representative log for diagnosis, restore normal logging, and clear the log folder through the maintenance task.
The data directory is unexpectedly large
Break it down by subdirectory and identify whether the largest item is jellyfin.db, artwork or metadata, plugins, or another known server-data component. A database size alone does not establish corruption or a safe deletion target; back up the server and investigate the feature producing the records.
Jellyfin’s folders look small, but the volume is full
Recheck container host mounts, appliance datasets, other services on the same volume, and files written under an unintended path after a mount or environment-variable change. Measure the host filesystem, not only the paths visible in the Jellyfin interface.
A repeatable monthly check
- Record the configured data, cache, log, and transcode paths and the free space on each filesystem.
- Measure each path separately and keep a dated note of the totals.
- Review active sessions for unexpected Transcode use and inspect FFmpeg logs when a session fails.
- Confirm debug logging is off unless you are actively troubleshooting.
- Run cache, log, activity-log, and transcode cleanup tasks according to your retention needs.
- Verify network shares are mounted before scans or cleanup tasks that can alter library state.
- Back up the database and configuration before changing storage paths or investigating unusual database growth.
There is no documented, universal Jellyfin storage-growth rate. Actual usage depends on the library, metadata and plugin settings, playback behavior, logging level, available hardware, and deployment layout. Measuring the active paths and correlating changes with playback or scheduled tasks gives you a defensible explanation instead of guessing from a single folder size.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

