Skip to content

Windows Optimization

Maximize your Plex server’s performance on Windows with these optimization techniques.

  1. Verify CPU supports Quick Sync (Intel 6th gen+)
  2. Enable iGPU in BIOS (even with dedicated GPU)
  3. Install latest Intel graphics drivers
  4. SettingsTranscoder → Enable hardware acceleration
Terminal window
# Verify Intel GPU is available
Get-WmiObject win32_VideoController | Where-Object { $_.Name -like "*Intel*" }
  1. Install latest NVIDIA Game Ready or Studio drivers
  2. Verify GPU supports NVENC (GTX 1050+)
  3. SettingsTranscoder → Enable hardware acceleration
Terminal window
# Check NVIDIA driver and GPU
nvidia-smi
  1. Stop Plex Media Server
  2. Copy %LOCALAPPDATA%\Plex Media Server to SSD
  3. Set PLEX_MEDIA_SERVER_APPLICATION_SUPPORT_DIR environment variable
  4. Start Plex
Terminal window
# Set new database location
[Environment]::SetEnvironmentVariable(
"PLEX_MEDIA_SERVER_APPLICATION_SUPPORT_DIR",
"D:\PlexData",
"Machine"
)
Terminal window
$plexDB = "$env:LOCALAPPDATA\Plex Media Server\Plug-in Support\Databases\com.plexapp.plugins.library.db"
# Stop Plex first
Stop-Process -Name "Plex Media Server" -Force -ErrorAction SilentlyContinue
Start-Sleep -Seconds 5
# Optimize
sqlite3 $plexDB "VACUUM;"
sqlite3 $plexDB "REINDEX;"
Write-Host "Database optimized"
  • Use wired Ethernet for server
  • Avoid Wi-Fi for high-bitrate content
  • Consider 2.5GbE for 4K HDR streaming

Configure router QoS to prioritize Plex traffic on port 32400.

Move transcoder temp to fast storage:

Terminal window
# Create RAM disk for transcoding (advanced)
# Or use SSD path
$transcodeDir = "D:\PlexTranscode"
New-Item -ItemType Directory -Path $transcodeDir -Force
# Set in Plex Settings → Transcoder → Transcoder temporary directory
Terminal window
# Run Plex with high priority
Get-Process "Plex Media Server" | ForEach-Object { $_.PriorityClass = "High" }
  • Disable memory compression for media drives
  • Ensure adequate page file size (system managed)

Prevent sleep during operation:

Terminal window
# Set power plan to High Performance
powercfg /setactive 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c
# Prevent sleep
powercfg /change standby-timeout-ac 0
powercfg /change hibernate-timeout-ac 0
  • Monitor Plex Media Server CPU usage
  • Check GPU utilization (Performance tab)
  • Network activity for streaming
  • Disk I/O for transcoding
Terminal window
# Monitor Plex resource usage
while ($true) {
$plex = Get-Process "Plex Media Server" -ErrorAction SilentlyContinue
if ($plex) {
Write-Host "CPU: $([math]::Round($plex.CPU, 2))% | Memory: $([math]::Round($plex.WorkingSet64/1MB, 2)) MB"
}
Start-Sleep -Seconds 5
}