Why your RDP session feels laggy (and how to fix it)
Latency, bandwidth, codecs and MTU explained — plus the eight settings that make a remote desktop feel local, ranked by how much they help.
Nadia Ferrand
Head of Solutions Engineering
Published
The three numbers that matter
Round-trip time (RTT)
Every keystroke travels to the server and the screen update travels back. That round trip is the floor on responsiveness and no setting changes physics. From Paris: our Paris node is 6-12 ms, Frankfurt 14 ms, New York 78 ms, Singapore 165 ms. The Paris and Singapore servers can be identical hardware and one will feel instant while the other feels like typing through syrup.
Jitter
Variation in RTT, and subjectively worse than latency itself. A steady 90 ms feels fine; 40 ms that spikes to 300 ms feels broken, because the session cannot keep a smooth frame cadence. Jitter usually comes from your side — congested Wi-Fi, a saturated uplink, or a VPN with an overloaded exit.
Bandwidth
Matters far less than people assume. A 1080p desktop doing office work uses 300 kbps-1.5 Mbps. Video playback pushes 6-12 Mbps. If you have 25 Mbps, bandwidth is not your problem.
Fixes, ranked by impact
1. Choose the right region (huge)
Run a quick ping to our looking-glass IPs before ordering — every location page lists one. If two are within 15 ms of each other, pick either. If one is 100 ms closer, that decision outweighs every tweak below combined.
2. Wire your laptop (large)
Wi-Fi adds 5-30 ms and, worse, unpredictable jitter under interference. Ethernet is the single biggest client-side improvement available to most people, and it costs nothing.
3. Turn on the modern codec (large)
Windows Server 2019+ supports H.264/AVC 444 hardware-friendly encoding, which is dramatically better than the legacy bitmap path for anything that moves. Enable it:
gpedit.msc → Computer Configuration → Administrative Templates →
Windows Components → Remote Desktop Services → Remote Desktop Session Host →
Remote Session Environment
"Prioritize H.264/AVC 444 Graphics mode" → Enabled
"Configure H.264/AVC hardware encoding" → Enabled
"Configure compression for RemoteFX data" → Enabled → Optimized for low bandwidth
4. Trim the visual effects (medium)
In the Windows client, Experience tab, uncheck font smoothing, desktop composition, window contents while dragging, and menu animations. Font smoothing alone is often worth 20-30% of the bandwidth on a text-heavy session. Set "Choose your connection speed" to Modem (56 kbps) and add back only what you miss.
5. Fix your MTU (medium, and invisible until you check)
If you are behind PPPoE or a VPN, an MTU mismatch causes fragmentation that shows up as random freezes rather than uniform slowness. Find your real path MTU:
ping -f -l 1472 your.server.ip
# Reduce 1472 by 10 until it stops saying "Packet needs to be fragmented",
# then add 28 for the IP+ICMP headers to get your MTU.
netsh interface ipv4 set subinterface "Ethernet" mtu=1420 store=persistent
6. Use UDP transport (medium)
RDP 8.0+ prefers UDP, which handles packet loss far more gracefully than TCP for graphics. Make sure your firewall allows UDP on the RDP port both ways — many people open TCP only and silently lose this.
New-NetFirewallRule -DisplayName "RDP-UDP" -Direction Inbound -Protocol UDP -LocalPort 53389 -Action Allow
7. Check for CPU steal and disk wait (situational)
Sometimes it is not the network. If the server is pinned, everything feels laggy. On Windows, Task Manager → Performance; on Linux, vmstat 1 and watch the st column. Steal above 5% consistently means the node is oversubscribed — send us the numbers and we will migrate you to a quieter node the same day.
8. Prefer a better client (small but free)
The Windows App (formerly Remote Desktop client) outperforms the legacy mstsc.exe on unstable links. On macOS use Microsoft's official client, not a generic VNC-style app. On Linux, FreeRDP with /gfx:AVC444 /network:auto is excellent.
A diagnostic you can run in two minutes
ping -n 50 your.server.ip # look at avg AND max — the gap is jitter
tracert your.server.ip # find where the hop count jumps
psping -t your.server.ip:53389 # TCP-level RTT on the actual port
If ping average is good but max is 10x higher, you have a jitter problem: check Wi-Fi, then your router's queueing. If a specific hop adds 80 ms, that is a transit issue — open a ticket with the traceroute and we will look at rerouting; our Premium network route add-on exists for exactly these cases.
Nadia Ferrand
Head of Solutions Engineering
Joined RDPForge in 2021 after eight years running virtualisation platforms for a European MSP. Writes most of our sizing guidance.
Put this into practice for $5 a month
Windows RDP from $12/month, Linux VPS from $5/month, delivered in about four minutes with a 72-hour money-back guarantee.