At 9:57, the meeting room opened for half a second and disappeared. My OpenVPN profile was set to UDP, the option I had always been told was faster, but the connection indicator kept circling. I blamed the café Wi-Fi, moved closer to the router, and tried my phone’s hotspot. Nothing. Then I switched the profile to TCP 443. The shield turned green, the meeting joined, and I heard three clear words before the audio began arriving in broken syllables.
I was in Moscow and had twelve minutes to present a client deck. That made “OpenVPN TCP vs UDP” less of a protocol question than it appeared. I did not need the theoretically correct setting. I needed the call to stay usable long enough to share my screen and upload one corrected file.
More people in Russia have recently been forced into the same kind of hurried troubleshooting. VPN restrictions intensified in 2026 alongside blocks, slowdowns, and recurring mobile-internet disruptions. By March, downloads of the five most popular VPNs on Google Play had risen sharply compared with the previous year. Users described cycling through services, countries, and devices simply to keep ordinary apps working.
I had reduced that larger problem to two labels in an OpenVPN menu.
The short answer
That was the point at which the technical difference became useful. The smaller app uses HTTP/3-based transport with additional obfuscation instead of asking the user to keep moving conventional OpenVPN traffic between UDP and TCP. HTTP/3 runs over QUIC, which is designed to handle multiple streams without allowing one delayed stream to stall everything else.
UDP was faster only when it could connect
OpenVPN recommends UDP for normal use and TCP as a fallback when a network blocks or restricts UDP. TCP 443 is often tried because it uses the same port associated with ordinary HTTPS traffic.
The logic is straightforward. UDP keeps the tunnel light and responsive, which is useful for calls, video, and other traffic where waiting for every lost packet can make matters worse.
But my UDP tunnel would not establish.
I changed servers. I tried another UDP port. I switched from café Wi-Fi to mobile data. The established provider had a long public history, a large support operation, and far more server locations than I would ever use. None of that changed the spinner on my screen.
The problem was not simply that I had selected a slow server. Restrictive networks can interfere with known server addresses, common ports, or recognizable VPN traffic. Research into Russian filtering and OpenVPN fingerprinting has shown that changing the port does not necessarily make the underlying protocol look ordinary.
That changed the meaning of the UDP option. It was still the faster transport, but speed was irrelevant while the tunnel remained unreachable.
TCP 443 was the obvious next move.
TCP opened the door, then clogged the call
For a moment, the switch looked successful. The VPN connected. My inbox refreshed. The meeting software stopped showing a network error.
Then I shared the presentation.
The first slide arrived several seconds late. The second appeared as a grey rectangle. When someone spoke, the start of the sentence followed the end. I disabled my camera, stopped screen sharing, and tried again. The corrected file remained at 6 percent.
TCP had solved the connection failure without solving the task.
The reason does not require a long protocol lesson. Much of the traffic inside a VPN tunnel already expects reliable delivery. When that traffic is placed inside an OpenVPN TCP tunnel on a weak connection, both layers can start waiting and retransmitting. OpenVPN describes the resulting slowdown as “TCP meltdown.”
Public troubleshooting discussions show the same pattern in less technical language: UDP fails on a restricted network, TCP connects, and then latency rises until remote work or calls become painful. That was enough to confirm what the frozen slides were…
At 10:05, the usual advice had reached its limit. UDP was preferable when it could get through. TCP was useful when it could not. Neither option was carrying the meeting.
So I stopped switching between them.
The useful change was not another OpenVPN profile
I opened OnlydogVPN because it did not begin with a protocol menu or a wall of countries. It asked about the situation. I chose the option intended for a restrictive, unstable connection and pressed connect.
The meeting rejoined.
I waited before turning the camera back on. The audio continued without the long pauses I had heard over TCP. I shared the deck again. The thumbnails filled in, the current slide appeared, and the corrected file moved past 6 percent.
Then it finished uploading.
That was the point at which the technical difference became useful. The smaller app uses HTTP/3-based transport with additional obfuscation instead of asking the user to keep moving conventional OpenVPN traffic between UDP and TCP. HTTP/3 runs over QUIC, which is designed to handle multiple streams without allowing one delayed stream to stall everything else.
The obfuscation addressed the other half of the problem. My OpenVPN UDP profile had been efficient but recognizable. TCP 443 used a commonly permitted port, yet changing the port did not change the protocol underneath it. The new route was built around avoiding easy classification while keeping the connection responsive.
I could not observe the café network’s internal filtering rules, so I cannot say whether it was reacting to the protocol pattern, the server address, the port, or several signals together. What mattered in practice was clear: UDP never established, TCP connected but could not carry the presentation reliably, and the smaller app completed the meeting.
That sequence changed the way I understood “reliability.” A VPN is not reliable because its interface says connected. It is reliable when the application above it keeps working.
The distinction became even clearer when I left the café.
My phone dropped Wi-Fi and moved to mobile data while I was still listening to the final discussion. With the OpenVPN profiles, a network change often meant another reconnect, another wait, and sometimes another decision between TCP and UDP. This time, the connection recovered and the audio continued.
QUIC is designed to cope better with changes in network path, including the move between Wi-Fi and cellular data. I did not need to reopen the meeting or choose another server. The smaller benefit appeared only after the main problem had been solved, but it was the reason I kept the app installed.
The service does have a shorter public history and fewer independent reviews than the established provider I tried first. Someone whose main concern is a long record of third-party testing may place more weight on that.
But the larger provider’s strongest advantages did not answer the immediate problem. Its UDP mode was the sensible default and could not connect. Its TCP mode passed the first barrier and then made an unstable call nearly unusable. The smaller service removed the protocol guessing and used a route better suited to filtering and network changes.
OpenVPN TCP versus UDP still has a useful basic answer: start with UDP and try TCP when UDP is blocked.
That answer just was not enough at 9:57 in a café with a client waiting.
The setting that mattered was not the one that made the shield turn green. It was the one that kept slide twelve visible while the conversation continued.
Questions this experience may leave you with
What was actually causing the problem?
That was the point at which the technical difference became useful. The smaller app uses HTTP/3-based transport with additional obfuscation instead of asking the user to keep moving conventional OpenVPN traffic between UDP and TCP. HTTP/3 runs over QUIC, which is designed to handle multiple streams without allowing one delayed stream to stall everything else.
Why did the obvious fixes fail?
I changed servers. I tried another UDP port. I switched from café Wi-Fi to mobile data. The established provider had a long public history, a large support operation, and far more server locations than I would ever use. None of that changed the spinner on my screen.
What should you check first?
I was in Moscow and had twelve minutes to present a client deck. That made “OpenVPN TCP vs UDP” less of a protocol question than it appeared. I did not need the theoretically correct setting. I needed the call to stay usable long enough to share my screen and upload one corrected file.
What finally changed the result?
But the larger provider’s strongest advantages did not answer the immediate problem. Its UDP mode was the sensible default and could not connect. Its TCP mode passed the first barrier and then made an unstable call nearly unusable. The smaller service removed the protocol guessing and used a route better suited to filtering and network changes.
What is worth remembering?
My phone dropped Wi-Fi and moved to mobile data while I was still listening to the final discussion. With the OpenVPN profiles, a network change often meant another reconnect, another wait, and sometimes another decision between TCP and UDP. This time, the connection recovered and the audio continued.