Open-source project
Upinel/BetterRDP avatar
Upinel/BetterRDP

BetterRDP is a Windows registry file for 60 FPS remote desktop on the server side

This is to enable 60fps and GPU acceleration on RDP connection

767 stars42 forksPowerShellApache-2.0

At a glance

What is it?
BetterRDP ships a single .reg file that adjusts Windows registry settings on the machine hosting the Remote Desktop session, enabling 60 FPS capture, GPU acceleration alongside RemoteFX, reduced compression and large MTU packets. It also includes a PowerShell script, a Group Policy deployment guide and a macOS client troubleshooting note, and it is Apache 2.0 licensed.
Who is it for?
Administrators of Windows machines that host Remote Desktop sessions for graphics-heavy work should test BetterRDP on a non-production machine first, because it targets exactly the session host and turns on the frame rate, GPU and compression settings that the stock configuration holds back.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 138 days ago.
What is it written in?
Mainly PowerShell, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.

Editorial analysis

One registry file, applied to the server and not the client

BetterRDP is a Windows Registry file, named UpinelBetterRDP.reg, designed to enhance a Remote Desktop Protocol session by enabling 60 FPS, GPU acceleration and RemoteFX features, with the stated aim of a smoother and more responsive remote desktop experience.

The detail that matters most is in the README's emphasis: these changes only need to be applied to the RDP server, not the client machine. That is unusual for a performance tweak, and it changes who the tool is for. A developer connecting from a Mac to a remote Windows workstation is not the person who runs this. The administrator of the machine hosting the session is, and they apply the settings once per host.

The repository is small and reflects that. At the top level there is the registry file, a BetterRDP.ps1 PowerShell script, and three documents: the README, GROUP_POLICY.md and MACOS_TROUBLESHOOTING.md. There is a LICENSE file and a .github directory. The primary language is recorded as PowerShell.

The project is under the Upinel organisation, the licence is Apache 2.0, and the release history is short: v1.0 on 2024-02-20 and v2.0.0 on 2026-06-07, the second with a name, The Gloria Release. The repository is not archived and the last push was on 2026-06-07.

What each registry change actually buys you

The feature list is the substance of the project, and it is worth reading item by item because these are server-side display and network settings rather than client tuning.

First, the combination that matters most: the settings allow both GPU acceleration and RemoteFX during RDP sessions. Normally those two are alternatives, and the README's phrasing suggests this file enables the combination, which is the unusual claim here.

Second, the capture framerate is set to 60 FPS for a smoother visual experience, which is the headline feature. Third, compression is reduced to improve image quality over RDP, a trade of bandwidth for fidelity. Fourth, system responsiveness is adjusted for better user interface interaction.

Then the network side. Bandwidth throttling is disabled to reduce network related slowdowns, large MTU packets are allowed, which the README says can improve network performance, and the flow control for display and channel bandwidth is optimized, specifically mentioning RemoteFX devices and including controllers. Finally, the artificial latency delay is removed for more immediate interaction over RDP.

One option is deliberately not active: there is a setting to disable WDDM drivers in favour of XDDM drivers for better performance on Nvidia graphics cards, and the README says it is commented out by default. That is a sensible default for a tool that anyone might apply to a production host, since it is the change most likely to behave differently across driver versions.

The acknowledgements say where the settings came from, crediting Microsoft Support material on the frame rate limit in Windows 8 and Windows Server 2012, and a community Windows 10 optimisation guide. The value of the project is largely in curating those into a single tested file rather than in inventing new registry values.

Applying it: back up first, then reboot

The use instructions are five steps and they are deliberately cautious.

Download the UpinelBetterRDP.reg file from the repository. Back up your current registry settings. Double-click the UpinelBetterRDP.reg file. Confirm that you want to apply the changes by clicking Yes when prompted. And reboot your computer for the changes to take effect.

The middle step is the one that matters, and the README's disclaimer explains why. Modifying the Windows Registry can potentially cause system instability if not done correctly, and it is highly recommended that you back up your system and registry before applying these changes, and to use these registry settings at your own risk.

The reboot is worth noting too, because a registry file is not a live setting. Some of these values are read when the graphics stack or the Remote Desktop service starts, so the change is not visible in the current session.

The support section narrows the audience. It is for Windows 8, Windows 10, and Windows Server 2012 or later. It is advisable to perform these changes on machines where you have full permissions and control, and it is always better to test the settings on a non-production machine before applying them to a live environment.

Those two sentences together are the real guidance for anyone evaluating this in an enterprise: it is a machine-level change with a reboot, applied by someone with administrative rights, and the README's own instruction is to try it somewhere harmless first.

Group Policy for fleets and a note about the macOS client

Two of the repository's extra documents exist because a single desktop tweak does not scale, and because the client side has its own limits.

For enterprise environments, BetterRDP can be deployed centrally via Group Policy Preferences or Startup Scripts, with the detailed instructions in GROUP_POLICY.md. That is the route for a support organisation that manages a fleet of session hosts, and it converts a manual per-machine step into a configuration item. The Startup Script option in particular is a natural fit for the PowerShell file that sits alongside the registry file in the repository.

The macOS note is the other half of the story. If you are connecting from a Mac and not seeing 60 FPS despite the server-side optimisations, the macOS RDP client has known limitations, and MACOS_TROUBLESHOOTING.md has fixes.

That caveat is worth internalising before anyone concludes the tool does not work. The 60 FPS setting is applied on the server, and the client still has to be able to display the extra frames. The README's honest position is that a Mac client may not, which means the headroom this project creates is not always reachable, and the party responsible for the client is not the party running the registry file.

The README also states the terms plainly. The settings are provided as is, with no warranties, and confer no rights, and you are responsible for using them safely and within the terms of your software licensing agreements.

Editorial conclusion

Administrators of Windows machines that host Remote Desktop sessions for graphics-heavy work should test BetterRDP on a non-production machine first, because it targets exactly the session host and turns on the frame rate, GPU and compression settings that the stock configuration holds back. It is the wrong tool if your latency comes from the network path rather than the server, and it is the wrong tool if the session host is managed by someone else, since the changes have to be applied to the server and not the client. Before applying it, back up the registry, read the disclaimer in the README, and confirm that the client you use is one the project documents as able to take advantage of the settings.

Frequently asked questions

Do I apply BetterRDP to the RDP client or to the server?

To the server. The README emphasises that these changes only need to be applied to the RDP server, not the client machine, and that the registry file is designed to enhance the session on the host side.

How do I apply the BetterRDP registry settings?

Download the UpinelBetterRDP.reg file, back up your registry settings, double-click the file, confirm with Yes when prompted, and reboot the computer for the changes to take effect.

Can BetterRDP be deployed across many machines?

Yes. The README says that for enterprise environments BetterRDP can be deployed centrally via Group Policy Preferences or Startup Scripts, with detailed instructions in GROUP_POLICY.md.

Why do I not get 60 FPS when connecting from a Mac?

The macOS RDP client has known limitations, so the server-side optimisations alone may not deliver the frame rate. The repository points to MACOS_TROUBLESHOOTING.md for the fixes.

Official sources

  1. Issues
  2. License: Apache-2.0
  3. README
  4. Releases
  5. Upinel/BetterRDP on GitHub
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/upinel-betterrdp.svg)](https://hysenlabs.com/projects/upinel-betterrdp)

Was this useful?