A PowerShell script with a graphical user interface (GUI) to apply various performance and quality tweaks for Microsoft Remote Desktop Protocol (RDP). This tool simplifies the process of configuring RDP settings on a host machine to improve frame rate, reduce latency, and enhance the overall remote desktop experience, especially for graphically intensive applications.
Based largely on Pushing Remote FX to its limits.
Run PowerShell as administrator, then copy and paste the following command:
& ([scriptblock]::Create((irm "https://raw.githubusercontent.com/fstanis/RDP-Tweaks/refs/heads/main/RDP-Tweaks.ps1")))
Remote Desktop must be enabled on the machine beforehand (Settings > System > Remote Desktop) - the script exits with a warning if it is not.
The script provides a GUI to manage the following registry-based RDP optimizations:
- Optimize frame timing (DWMFRAMEINTERVAL): Sets a lower frame interval for the Desktop Window Manager to allow for higher frame rates (targeting ~60 FPS).
- Set SystemResponsiveness to 0: Prevents multimedia playback from throttling network performance, which can improve RDP responsiveness.
- Optimize flow control settings for TermDD service: Adjusts bandwidth allocation for display and virtual channels to prioritize a smoother visual experience.
- Remove artificial latency delay (InteractiveDelay): Removes a small, built-in delay in RDP interactivity.
- Optimize LanmanWorkstation network: Disables network bandwidth throttling and enables support for larger network packets (MTU).
- Turn off desktop composition: Disables desktop composition even if the client requests it. Usually improves performance.
- Disable minimum frame rate requirement for DWM: This can help resolve rendering issues with Chromium-based apps.
- Use hardware graphics adapters for RDP: Forces RDP to use a hardware GPU for rendering, which is essential for graphically demanding applications.
- Enable RemoteFX/virtualized graphics: Enables the RemoteFX graphics virtualization features.
- Allow RDP to use both UDP and TCP: Configures the RDP transport protocol to use UDP for better performance on low-latency networks, with TCP as a fallback.
- Enable hardware H.264 encoding: Prefers using hardware-accelerated H.264/AVC video encoding, which is more efficient than software encoding.
- Prioritize H.264/AVC 444 graphics mode: Enables the highest quality H.264 mode (AVC 444) for pixel-perfect color accuracy, which is beneficial for text and sharp images.
- Use XDDM drivers instead of WDDM: Disables Windows Display Driver Model (WDDM) so sessions will attempt to use the older Windows 2000 Display Driver Model (XDDM) instead.
- Turn off font smoothing: Disables font smoothing for remote sessions. Enable this if you see issues with text rendering.
- Auto-login when connecting (Network Level Authentication): When checked, connections are authenticated up front with the credentials saved in the RDP client (
UserAuthentication1,SecurityLayer2), so you go straight to your desktop. When unchecked, connections land on the Windows login screen, where you can sign in as any account (UserAuthentication0,SecurityLayer1). - Allow multiple sessions per user: Sets
fSingleSessionPerUserto 0 so the same account can hold several concurrent RDP sessions instead of always being reattached to its existing one. Unchecking restores the single-session default (fSingleSessionPerUser1). This only makes a difference on Windows Server or with a patchedtermsrv.dll- stock Windows client editions allow a single interactive session regardless. The tool detects whether that support exists (Windows Server, ortermsrv.dllpatched e.g. by TermsrvPatcher) and shows a warning in the status bar if you check this box without it. - Enable Chrome Remote Desktop curtain mode: Hides the host's physical display while a Chrome Remote Desktop session is active. Curtain mode requires Network Level Authentication to be off, so checking it automatically turns auto-login off, and turning auto-login back on disables curtain mode.
The script also allows you to configure a group of RemoteFX settings using presets:
- High Quality: Optimized for a high quality connection over a fast connection, reduces various compression settings to minimum compression.
- Low Quality: Optimized for sub-optimal connections, it increases various compression settings to maximum compression.
- Disabled: Reverts to system default settings.
This script modifies the Windows Registry, use it at your own risk.
