What VPN works best for Midjourney? The key is not finding the “fastest” node, but choosing a route that keeps Discord messages, image CDNs, and web requests working consistently. Sending a generation command only shows that the messaging path is temporarily available; preview images, repeated channel reconnects, and access to the artwork page also depend on exit routing, packet loss, DNS, and split-tunneling rules.
That is why route selection should not rely solely on the latency shown in the client. A low-latency node can still stall during image transfers, while a high-bandwidth node may frequently drop Discord’s persistent connection because its exit path is unstable. A more useful approach is to break the access flow into stages, test each one, and adjust the route based on where the failure occurs.
What connections do Midjourney and Discord actually use?
Using Midjourney inside Discord may look like sending a single command, but it involves several types of network requests. The client must complete sign-in and synchronize channel data before maintaining a messaging gateway connection. After a command is submitted, status updates return through the messaging system, while previews and final images are typically delivered by separate media domains and CDNs.
These requests may go to different addresses and may be affected by different split-tunneling rules. A common symptom is that text messages work while images spin indefinitely; another is that the web app opens while the desktop client keeps reconnecting. The first usually points to media domains, DNS, or CDN routing. The second is more consistent with an interrupted persistent connection, incomplete system-proxy coverage, or route instability during sustained transfers.
| Connection stage | Common symptoms | Check first |
|---|---|---|
| Sign-in and channel sync | The page remains stuck loading and the channel list is incomplete | System time, DNS, and whether API domains go through the proxy |
| Messaging gateway | No status update after sending a command; the client keeps reconnecting | Route stability, persistent connections, and client proxy mode |
| Media CDN | Text is visible but previews are blank; downloads stop partway through | Media-domain routing, exit path, packet loss, and bandwidth fluctuation |
| Artwork page | Discord works, but the artwork management page will not open | Browser proxy, cache, script domains, and DNS resolution |
| Voice connection | Channel messages work, but voice fails separately | UDP availability and whether the client enables a full tunnel |
Image-loading failures are not always caused by insufficient bandwidth. A CDN selects edge nodes based on exit location, DNS results, and the network path. If DNS requests stay on the local network while image requests leave through an international route, the resolution location and actual exit may not match. This can cause detours, slow handshakes, or a situation where some images in the same channel load while others time out.
If text messages work but images fail, check media domains and DNS first. If the entire client disconnects, check the persistent connection and proxy mode. If only voice is affected, test UDP separately. Do not start by repeatedly changing accounts or reinstalling Discord.
How to choose a route type: direct, relay, or IEPL
A direct route goes from the current network straight to an overseas server, making its structure simple and its path easy to understand. Its real-world performance depends heavily on the local carrier network and international exit. It may be smooth when the network is quiet, but latency is more likely to fluctuate when routes change or congestion appears. For occasional prompt submissions and a small number of previews, a stable direct route may be sufficient, but one connection result cannot predict long-term performance.
A relay route sends traffic to a nearby entry point first, then uses the provider’s relay network to reach the exit. Its value is not magically adding bandwidth, but avoiding some unstable public-internet paths and making the entry-to-exit segment more controllable. Relay quality depends on entry access, internal scheduling, and exit capacity; if the exit itself is congested, adding another relay will not fix the final link.
IEPL generally refers to international connectivity built on carrier-managed private-line resources. Its main difference from an ordinary public-internet direct route is that the cross-border backbone segment does not rely entirely on conventional internet routing. For Discord persistent connections and continuous image loading, these routes typically prioritize path stability. However, “private line” does not mean every segment from the device to the destination server is on a closed network. Local access, the provider’s entry point, the overseas exit, and the target CDN can still affect the result.
- ✅ Prioritize a route with a stable path from your location to the entry point, rather than mechanically chasing the farthest exit region.
- ✅ Send messages continuously and open several previews to check for reconnects, blank images, or interrupted downloads.
- ✅ Compare direct and relay routes under the same exit region to avoid mistaking regional differences for route-type differences.
- ✅ Keep a backup route that uses a different protocol so you can distinguish node congestion from transport incompatibility.
- ❌ Do not choose a long-term route based only on a single latency test from the client’s home screen.
- ❌ Do not keep using an old DNS cache after frequently switching to distant exit regions.
Choose an exit region based on compatibility and path quality. A shorter physical distance often reduces round-trip waiting, but it does not guarantee a better route. Some nearby regions may take a detour, while seemingly more distant regions may offer a more stable relay. During testing, keep the client, protocol, and usage time fixed and change only one variable; otherwise, it is difficult to identify what caused the improvement.
Protocol selection: Shadowsocks, VMess, Trojan, VLESS, Hysteria2, and TUIC
A protocol name alone does not determine speed. The real experience depends on the implementation, transport layer, encryption overhead, route, and how the current network handles UDP or TCP. The same protocol can perform completely differently on different nodes. First confirm client support, then choose the transport that best fits the current network.
Shadowsocks: simple configuration for basic proxying
Shadowsocks is an encrypted proxy protocol with a mature client ecosystem, typically suitable for web, messaging, and image access. It does not handle complex route scheduling or automatically solve DNS and split-tunneling issues. In rule mode, confirm that Discord APIs, the gateway, media CDNs, and Midjourney web domains all go through the proxy.
VMess and VLESS: performance depends on the transport combination
VMess and VLESS are common in clients that support multiple transport methods. VLESS focuses more on lightweight authentication and carriage, with outer mechanisms such as TLS generally providing the actual encryption and security boundary; VMess includes its own authentication and encryption design. Both can use different transports, so the protocol name alone cannot tell you whether a route suits Discord. If a route reconnects frequently, also check whether the transport, TLS settings, and server configuration match.
Trojan: commonly carried over TLS
Trojan typically runs over a TLS connection and suits web, messaging, and media requests carried by TCP. Its network compatibility is often straightforward, but noticeable packet loss can make TCP retransmissions feel especially slow, leaving image loading stuck halfway. Test another route first instead of concluding that the protocol is unusable.
Hysteria2 and TUIC: pay attention to the UDP environment
Hysteria2 and TUIC both use modern UDP-based transport approaches and may be more flexible than traditional TCP connections on networks with some jitter or packet loss. This requires stable UDP access and correctly matched server and client parameters. If the current network restricts UDP, these protocols may fail to connect entirely, repeatedly fail during the handshake, or drop shortly after connecting.
Start with a TCP-based route with broad compatibility to verify that the account, DNS, and split-tunneling rules are correct, then test Hysteria2 or TUIC. If UDP-based protocols fail while Trojan or Shadowsocks works, first suspect how the current network handles UDP rather than Midjourney itself.
Key points for subscription import and client settings
A subscription link is the client’s entry point for retrieving node configurations. After import, the client parses node addresses, ports, protocols, and transport parameters. Subscription updates synchronize provider-side changes. Import links only into trusted clients, and do not paste them into unfamiliar web conversion tools because subscription data usually contains connection credentials.
If nodes still cannot connect after updating the subscription, completely stop the old connection before selecting a node again. Some clients retain old DNS caches, connection pools, or rule states, so tapping refresh may not switch the current session immediately. If the provider offers both a dedicated client and a generic subscription, use one consistently during troubleshooting to avoid two configurations modifying the system proxy at the same time.
- Copy the subscription link from the service panel and import it into a client that supports the matching protocol.
- After updating the node list, choose one stable route and do not run other proxy tools at the same time.
- First use global or full-tunnel mode to verify that Discord, images, and the artwork page all open correctly.
- Once the basic connection works, switch to rule-based split tunneling and add missing domains one by one.
- After disconnecting, test local websites again to confirm that the client has correctly restored the system proxy.
Windows and macOS
Desktop clients usually offer two ways to take over traffic: the system proxy and TUN. The system proxy mainly affects apps that follow system settings and is lightweight, but some independent network requests or UDP traffic may not enter the proxy. TUN takes over traffic through a virtual network interface and usually provides broader coverage, making it useful for checking whether the Discord desktop client is bypassing the proxy.
If Discord works in the browser but repeatedly disconnects on the desktop, first check whether the desktop client actually follows the system proxy, then compare it with TUN mode. On macOS, also check whether the system has allowed the client to create a network extension; on Windows, avoid enabling the system proxy or virtual interface in multiple clients at once.
iOS and Android
iOS clients typically take over traffic through the system VPN configuration. After importing a subscription, allow the corresponding configuration to be created and confirm that another network extension has not taken precedence. If Discord remains in an old connection state after switching networks, disconnect the route, wait for the network to recover, reconnect, and reopen the app.
Android clients need system VPN permission. Background power-saving policies on some devices may pause the proxy client, leaving Discord visibly open while the tunnel has actually stopped. Add the proxy client to the apps allowed to run in the background, and avoid enabling a firewall, filter, or another proxy app that also takes over the local VPN interface.
Why DNS leaks and split-tunneling rules affect images
A DNS leak is not only a privacy issue; it can also create a routing mismatch. After enabling a proxy, if domains are still resolved by the local network, the returned CDN address may suit the local exit while the actual image request leaves through a remote node. Conversely, if DNS goes through the remote route while rules mistakenly send traffic direct, a similar mismatch occurs.
Global mode can serve as a troubleshooting baseline. If Discord and Midjourney work globally but images become blank after switching to rule mode, the issue is likely within the split-tunneling rules. Check more than the main site domain: include authentication APIs, the messaging gateway, static assets, attachments, and media CDNs. Proxying only the main page domain is usually insufficient.
Rule-based clients may use domain matching, address matching, or a combination of both. Address rules are harder to maintain as CDN addresses change; domain rules are easier to understand, provided the client can identify the domain at request time. If you use encrypted DNS, make sure DNS traffic follows the same proxy policy, and do not let multiple DNS tools and proxy clients compete over system settings.
- ✅ If global mode works but rule mode fails, add Discord and media-resource rules first.
- ✅ After switching exit regions, clear the old DNS cache, then reopen Discord and the artwork page.
- ✅ Check whether the browser and desktop client use different DNS or proxy paths.
- ✅ Keep the resolution exit consistent with the actual connection exit to reduce CDN routing mismatches.
- ❌ Do not assume that adding only the Midjourney main domain sends every image resource through the proxy.
- ❌ Do not run multiple tools that modify DNS, the system proxy, or virtual interfaces at the same time.
Troubleshooting order for image-loading failures and channel disconnects
Effective troubleshooting depends on single-variable testing. Changing the node, protocol, client, and DNS all at once may restore service temporarily, but it will not identify the cause. The next time the issue appears, you will still be guessing from scratch. A more reliable method is to define the scope of the failure first, then narrow it down layer by layer.
- Confirm the affected service area. Check whether only one image fails, the entire media area fails, or channel messages also stop updating. A single resource may point to cache or CDN trouble, while a full channel reconnect is more likely a route issue.
- Switch to another route in the same region. Keep the exit region and protocol unchanged and replace only the node. If the issue disappears, the original node or its exit path was likely in poor condition.
- Switch protocol types. Test TCP and UDP transports in the same type of region. If only UDP protocols fail, continue checking network restrictions; if all protocols fail, investigate DNS, the client, or the account session.
- Use a full tunnel. Temporarily disable rule-based split tunneling so related requests use the same path. If images return, the rules are incomplete or the DNS and connection exits do not match.
- Compare clients. Cross-check the browser and desktop versions to determine whether the issue is limited to one app’s traffic-capture method.
- Re-establish the session. Disconnect the route, clear failed connections, and sign in again. Do this after checking the network to avoid mistaking a temporary recovery for a resolved account issue.
A speed-test page is only a reference. It usually tests a large file or concurrent connections to a fixed server, unlike Discord persistent connections, scattered API requests, and small CDN image loads. For Midjourney, a more meaningful test is to watch channel updates continuously, open previews, enter the artwork page, and download one finished image while checking whether the whole process completes reliably.
Final selection criteria: stability over dashboard numbers
A VPN route suitable for Midjourney and Discord should keep messages updating, media loading completely, web sessions stable, and DNS and connection paths consistent. Latency, bandwidth, and protocol names are useful signals, but none represents the full experience alone. With Discord’s persistent connections especially, a route with slightly higher but steadier latency is often more time-saving than one that is occasionally fast but frequently reconnects.
For everyday use, keep a stable relay or IEPL route as the primary route and prepare a backup using a different protocol. Use the primary for regular image generation, channel communication, and artwork management; when a local network issue appears, use the backup protocol to determine whether UDP, TCP, or client traffic capture is involved. This produces more repeatable results than aimlessly cycling through the node list.
For Midjourney, prioritize a relay or IEPL route with a stable entry path and an exit compatible with Discord and media CDNs. Start with client compatibility and persistent connectivity, then test UDP options such as Hysteria2 and TUIC. For blank images, check media routing and DNS; for channel disconnects, check persistent connections, node stability, and how the proxy takes over traffic.