1. Home
  2. Blog
  3. ChatGPT Not Working With Clash? Fix Timeout Errors Fast

ChatGPT connection failures through Clash usually appear in one of several forms: the page stays on a blank loading screen, the login flow loops, messages remain stuck on “Thinking,” the browser reports a network error, or the request ends with a timeout. These symptoms look similar, but they do not always have the same cause. A slow node, a blocked domain, a broken DNS path, an expired system proxy setting, and a TUN routing conflict can all produce what appears to be the same failure.

The fastest way to troubleshoot the problem is to avoid changing five settings at once. First determine whether the selected proxy can reach the service at all. Then verify that ChatGPT traffic is actually entering Clash, confirm that the required domains are routed through a suitable proxy group, and only afterward investigate DNS, browser state, or TUN behavior. This order separates an upstream connectivity problem from a local configuration problem.

Do not treat a successful latency test as proof that ChatGPT will work. A node may respond quickly to a test URL while failing on HTTPS, WebSocket, streaming responses, login redirects, or the specific OpenAI domains used by the web application.

ChatGPT Not Working With Clash? Fix Timeout Errors Fast

Identify the Failure Before Changing Settings

Start by recording exactly what fails. Open the ChatGPT website in a private browser window and note whether the home page, sign-in page, conversation list, or message submission is affected. If the page opens but a reply never arrives, the initial connection may be working while a later API or streaming request is being blocked. If the sign-in page itself cannot load, the problem is more likely to involve the selected node, DNS, browser policy, or routing rules.

Test the same URL with Clash completely disabled, then test it again with Clash enabled. This comparison is useful only as a diagnostic signal. If the service works direct but fails through Clash, inspect the proxy path. If it fails both ways, the issue may be local DNS, browser data, account access, regional availability, a temporary service incident, or the network itself. If it works with Clash in Global mode but not in Rule mode, the node is probably usable and the rule set is the first place to investigate.

  • Only one node fails: switch to another node in the same group. The original server may be overloaded, rate-limited, or unable to handle the required connection pattern.
  • Every node fails: check the profile, the proxy group, DNS settings, and whether the client core is running correctly.
  • Global mode works but Rule mode fails: a domain, rule provider, or final MATCH rule is sending traffic to DIRECT or an unsuitable group.
  • The browser works but the desktop application fails: compare application proxy settings, certificate handling, DNS behavior, and TUN capture rather than replacing the whole profile.
  • Text loads but replies time out: inspect streaming connections, WebSocket handling, node stability, and idle connection behavior.

Also check Clash's connection or traffic log while loading the site. A request that never appears may be bypassing Clash entirely. A request marked DIRECT indicates a rule decision, while a request assigned to a proxy group confirms that the rule engine saw and routed it. A repeated connection followed by timeout usually points to the node or the upstream network rather than a missing browser permission.

Test the Node and Proxy Group First

A ChatGPT timeout is often caused by a node that passes a simple ping test but cannot maintain a reliable HTTPS session. Latency is only one measurement. Packet loss, congestion, server-side policy, TLS compatibility, upload quality, and sustained connection stability matter more when submitting prompts or receiving streamed responses.

In Clash Verge, Clash Verge Rev, Clash for Windows, ClashX, or another mihomo-based client, open the proxy group used by the relevant rule and manually select a known-working node. Avoid testing only the group name shown on the dashboard because the group may be using url-test, fallback, or load-balance behavior that changes the active node without making the cause obvious.

  1. Choose a node with a stable recent history rather than simply the lowest displayed latency.
  2. Open the ChatGPT website in a private browser window.
  3. Send a short prompt and wait for the complete response, not just the first visible characters.
  4. Repeat the test with two or three nodes from different regions or providers.
  5. Keep the node that completes several requests consistently, even if its latency is slightly higher.

Do not immediately conclude that a region is universally supported or unsupported based on one node. Nodes in the same country may use different upstream providers, IP ranges, transport protocols, and server-side policies. A node can also be temporarily rejected because its shared IP has accumulated unusual traffic. Switching to a different node is a controlled diagnostic step; repeatedly changing the entire profile is not.

NODE TEST · HTTPS CONNECT · STREAMING RESPONSE · REPEATABILITY

If the client exposes connection details, verify that the request is using the expected outbound proxy and that there are no repeated TLS handshake failures. For mihomo profiles, confirm that the selected group contains the intended proxy names and that the group itself is not empty after a subscription update. When a profile imports successfully but a group suddenly has no usable members, the subscription may contain unsupported protocol fields or malformed node data.

Check ChatGPT Rules and Routing

Rule mode evaluates entries from top to bottom and stops at the first match. A broad direct rule placed above a more specific proxy rule can silently send ChatGPT traffic outside the proxy. The same problem can occur when a remote rule set is stale, unavailable, or mapped to the wrong policy group. The dashboard may show that Clash is active while the actual request is still being routed directly.

Inspect the traffic log while refreshing the page and submitting a message. Look for the destination domain, the selected policy, and the final outbound node. Do not rely on a single hostname. A modern web service can use several domains for the main interface, authentication, API requests, static assets, telemetry, and streaming connections. The exact set can change over time, so a rule that covers only one visible domain may be incomplete.

Use a dedicated proxy group for service-related rules when the profile permits local overrides. This makes testing easier than sending everything through a large general-purpose group. A simplified rule arrangement might look like this:

rules:
  - DOMAIN-SUFFIX,openai.com,ChatGPT
  - DOMAIN-SUFFIX,chatgpt.com,ChatGPT
  - DOMAIN-SUFFIX,oaistatic.com,ChatGPT
  - MATCH,Final

The example is not a universal replacement for a maintained rule set. Domain coverage depends on the client, the service version, and the profile provider. The important principles are that specific rules must appear before broad rules, the target policy must exist, and the final rule must have a predictable behavior. If your profile uses a remote rule provider, update it from the client and check whether the provider update completed without an HTTP error.

  • Confirm that the proxy group name in the rule exactly matches the group name defined in proxy-groups.
  • Check for a preceding DOMAIN-SUFFIX, DOMAIN-KEYWORD, GEOIP, or RULE-SET entry that catches the request first.
  • Make sure the final MATCH rule does not unexpectedly send unmatched traffic to DIRECT.
  • After changing rules, reload the configuration and create a new browser session.

Perform a Controlled Clash Test

Once the node and rules are understood, run a short controlled test. The goal is not to use Global mode permanently; it is to determine whether the rule engine is responsible for the timeout. Record the current mode and selected group first so the original configuration can be restored after testing.

  1. Update the profile and rule providers, then reload the active configuration.
  2. Select one stable node manually instead of allowing automatic selection during the test.
  3. Temporarily switch from Rule mode to Global mode and assign that node as the global proxy.
  4. Close the ChatGPT tab, open a private window, and load the service again.
  5. Sign in if necessary and send two short prompts, waiting for each complete response.
  6. Switch back to Rule mode and repeat the same prompts.
  7. Compare the connection log and the result of both tests.

If Global mode succeeds and Rule mode fails, restore Rule mode and fix the matching logic instead of leaving the entire device on Global mode. If both modes fail with the same node, test another node. If all nodes fail in both modes, move to DNS and client-layer checks. This sequence prevents a common mistake: changing DNS when the selected server is simply unusable, or replacing a working profile when one rule is misordered.

A successful controlled test gives you a useful boundary. Global success plus Rule failure points to routing. Global failure with one node but success with another points to node quality. Failure across all nodes suggests DNS, transport, profile, network, or service-side conditions.

Fix DNS Interference and Fake-IP Issues

DNS problems can prevent the initial connection or cause Clash to route the wrong destination. This is especially important when the client uses Fake-IP mode. Fake-IP returns an address from a reserved range and keeps an internal mapping between that address and the original domain. When the connection later reaches the Clash core, the mapping allows domain-based rules to run. If the mapping is stale, the DNS request bypasses the client, or an application rejects the synthetic address, the page may fail before a useful proxy connection is created.

Check whether the active profile enables Clash DNS and whether the operating system is using the expected DNS path. In TUN mode, the virtual interface may capture DNS requests differently from ordinary system proxy mode. A browser may also use its own encrypted DNS implementation, which can bypass the assumptions in the Clash profile. For a clean test, temporarily disable browser-level Secure DNS or configure it consistently with the chosen client mode, then restart the browser.

Useful checks include clearing the Fake-IP mapping or DNS cache from the client, reloading the profile, and testing again in a private window. Do not delete every DNS setting at random. First note the current values for enhanced-mode, fake-ip-range, nameserver, and any fallback or fallback-filter entries. A profile that mixes incompatible DNS modes can create confusing results, especially when system proxy mode and TUN mode are alternated repeatedly.

When using Fake-IP, review the profile's fake-ip-filter. Some applications need real DNS answers because they perform their own address validation or use local-network discovery. Adding every domain to the filter defeats the purpose of Fake-IP, so exclude only domains that demonstrably fail under synthetic resolution. For ChatGPT-related failures, first verify routing and upstream reachability before assuming that Fake-IP is the cause.

Separate System Proxy and TUN Mode

System proxy mode and TUN mode intercept traffic through different mechanisms. System proxy mode normally affects applications that honor the operating system's HTTP or SOCKS proxy settings. TUN mode creates a virtual network interface and captures traffic at a lower level, allowing applications that ignore system proxy settings to be routed as well. Running both paths with conflicting settings can cause duplicate interception, bypasses, DNS leaks, or traffic loops.

For a browser test, use one mode at a time. Disable TUN, enable the client's system proxy integration, and confirm that the browser is configured to use the operating system proxy rather than a manually entered old port. Then reverse the test: disable system proxy integration if the client recommends doing so, enable TUN, and verify that the operating system shows the virtual interface as active. The exact labels vary between Clash Verge, Clash Verge Rev, Clash for Windows forks, ClashX, and mihomo clients.

  • System proxy mode: confirm the HTTP or mixed port, usually a local address such as 127.0.0.1, and remove stale manual proxy entries from the browser.
  • TUN mode: confirm that the client has permission to create the virtual interface and that no other VPN, firewall filter, or network extension is competing for the same traffic.
  • Both enabled: use this only when the client documentation and profile are designed for it. Otherwise, disable one path while troubleshooting.
  • After changing modes: close existing browser tabs and restart the browser so persistent connections do not continue using the old route.

On Windows, another VPN adapter, security product, or corporate network filter may have higher priority than the Clash TUN interface. On macOS, system network extensions can remain active after an application appears to be closed. On Android, Clash clients use the system VPN framework, so another VPN-based application cannot normally share the same active VPN slot. These conflicts should be eliminated before editing routing rules.

Check Browser and Application-Level Conditions

If Clash logs show successful connections but ChatGPT still does not render correctly, inspect the browser layer. Extensions that block scripts, cookies, WebSocket connections, or content delivery domains can make a healthy proxy look broken. Test in a private window with extensions disabled where possible. If the private window works, clear site data for the affected domains and re-enable extensions one at a time.

Do not keep retrying a failed conversation while changing nodes. A stale page can preserve failed WebSocket or HTTP/2 sessions, and a service may return a cached error even after the route is fixed. Close the tab, clear only the relevant site data, and create a new session. If the browser has a manually configured proxy, compare its host and port with the active Clash mixed port. A browser configured for an old SOCKS port can bypass the current profile or produce an immediate connection refusal.

Desktop applications may have their own proxy controls and may not follow the operating system setting. Check whether the application supports HTTP, SOCKS5, or system proxy mode, and make sure the selected protocol matches the port exposed by Clash. A mixed port is commonly used for both HTTP and SOCKS connections, but the application must still be configured according to its own interface. Avoid enabling a second embedded VPN or proxy layer while testing.

Choose Stable Settings After the Fix

Once ChatGPT works, make the smallest permanent change that explains the successful test. If one node was unstable, keep the working group and remove or deprioritize the failed node. If a rule was wrong, preserve the corrected rule order and update the provider source rather than adding many overlapping exceptions. If DNS caused the issue, document the working mode and avoid switching between system DNS, Fake-IP, and TUN capture without reloading the client.

For everyday use, a manually selected stable group is often easier to diagnose than an aggressive load-balancing group. Automatic selection can be useful, but a group that changes nodes during a streaming response may interrupt the connection. Use a reasonable health-check interval and avoid interpreting a single fast URL-test result as a complete quality score. Stability over several minutes is more relevant for long replies and file uploads than the lowest initial latency.

Keep the core and profile format compatible. A mihomo configuration may contain protocol types, rule-set behaviors, DNS fields, or TUN options that an older original Clash core cannot parse correctly. If the client reports unknown fields, silently drops proxies, or shows an empty group after an update, verify the core selected by the client before making application-specific changes.

Symptom Most likely area First action
Global works, Rule fails Rule order or policy group Inspect the traffic log and rule providers
One node fails, others work Node quality or upstream server Select a stable node manually
All nodes fail in every mode DNS, profile, network, or service status Check DNS path, core logs, and another network
Browser works, application fails Application proxy or extension Compare proxy type, host, and port
Page loads, reply streams then stops Connection stability or node switching Use a fixed node and test another outbound

Finally, test from a different network, such as a mobile hotspot, if the failure remains unexplained. A network-specific timeout can come from local DNS interception, firewall policy, captive portal behavior, or an unstable route to the selected server. If the same profile and node work on another network, focus on the original network rather than repeatedly editing Clash rules.

Get the Right Clash Client

Use a current Clash-compatible client with the core and platform features your configuration requires. After installation, import the profile, confirm the active mode, and apply the troubleshooting sequence above before changing advanced DNS or TUN options.

Download Clients

What the numbers on a node list actually mean

Open the proxy group page in your client and every node name is usually followed by a string of numbers or badges — a latency figure, a multiplier tag, a region code. These look simple, but plenty of people misread them and end up with nodes that look "fast" yet stutter constantly in real use. To choose well, you first need to understand what each figure measures, since none of them can substitute for the others.

A node list is essentially a rendering of the subscription's configuration. Each entry corresponds to one outbound item under the proxies field of config.yaml, containing the server address, port, protocol type, and auth parameters. The client's job is to turn these entries into a clickable list and layer on its own latency and status checks. So the same subscription shows the same node count and parameters across different clients, but latency numbers may differ — because the test target, frequency, and timeout threshold vary between clients.

What latency tests measure, and why low latency isn't high speed

The latency figure shown in the client is, in most cases, the round-trip time (RTT) of a single HTTP or TCP probe against a fixed test endpoint — typically a request to a lightweight interface, timing how long the first byte takes to come back. This number reflects how long it takes to "establish a connection and get the first response," measured in milliseconds. A smaller number means the handshake from your device through the proxy server to the test target is faster.

But low latency doesn't mean fast downloads — these are two different things. Latency measures round-trip time; speed measures how much data can move per unit time, which depends on bandwidth, concurrent connections, current server load, and link congestion. A common scenario: one node shows only 80ms latency, which looks great, but the server's outbound bandwidth is already saturated by heavy usage, so actual download speed is only a few hundred KB/s; another node shows 250ms latency but has plenty of headroom, so its download speed can actually hit the bandwidth cap. So latency should only serve as a first-pass filter to eliminate clearly unusable nodes (timeouts or latency above 1000ms), not as the sole ranking criterion.

A more reliable way to judge node quality is cross-checking latency with an actual download speed test: use latency to shortlist candidates, then download the same test file on two or three of them, compare real speeds, and stick with whichever is more consistently fast.

Also watch how often auto-testing runs, since it affects node availability. Some clients offer automatic latency testing, and setting the interval too short creates needless request load on the server and may get flagged as abnormal traffic by rate-limiting rules, temporarily throttling the node. Testing manually or auto-testing every ten-plus minutes is usually enough — no need to poll every few seconds.

How traffic multipliers work and how they affect real usage

The multiplier badge after a node's name (commonly written as x0.5, x1, x2, or a percentage) represents the billing weight applied to that node's traffic. A multiplier is not a speed indicator — it's a billing coefficient: downloading 1GB on an x0.5 node only deducts 0.5GB from your total data allowance; downloading 1GB on an x2 node deducts 2GB.

Common reasons for multiplier differences include: higher bandwidth costs for the node's region (e.g., overseas backbone egress), a temporary discount during off-peak hours, or providers using multipliers to steer users toward less-loaded data centers to spread load. Low-multiplier nodes tend to sit on heavier-loaded or more congested lines, while high-multiplier nodes usually have better line quality but higher cost — it's a trade-off, and there's no free lunch of "low multiplier plus great line quality."

  • Everyday browsing, messaging apps: Speed requirements are low, so favor low-multiplier nodes — this noticeably stretches your monthly data allowance.
  • Large downloads, HD video, cloud sync: Favor nodes with a moderate multiplier but stronger latency and speed, since saving data at the cost of a long, poor-performing connection isn't worth it.
  • Urgent, short-lived, high-priority tasks: Ignore the multiplier and just pick the most stable-performing node.

It's worth organizing low-multiplier nodes into a "daily" group and high-multiplier, high-quality nodes into a "heavy-load" group within your proxy groups, then pairing them with rule-based routing so traffic is auto-assigned to the right group by domain or app type instead of everything going through one node.

How to pick nodes by region, and where unlocking differences come from

The region code in a node's name (like HK, SG, JP, US) marks where the server is physically deployed, which directly affects two things: the physical link distance to services you commonly use, and which content library version you can access. The closer the geography, the fewer hops the link typically needs, and the lower the baseline latency — which is why nearby-region nodes tend to top latency rankings.

At its core, unlocking works because a target service determines your region from the visitor's egress IP and serves different content libraries or features accordingly. This means that even if a subscription labels a node with a certain country's region code, if the server's actual egress IP range gets classified as a different region by the target service — or has already been flagged as a datacenter/proxy range — unlocking will still fail. Conversely, under the same region code, IP ranges purchased by different providers vary in quality, so the name alone doesn't guarantee consistent unlocking results.

A practical approach to picking region nodes:

  1. First clarify whether the main goal is "lower latency via proximity" or "access content from a specific region" — the two have different priorities.
  2. For the proximity case, favor regions with shorter geographic distance and lower baseline latency.
  3. For the content-access case, run an actual access test on candidate nodes to confirm the target content displays correctly, rather than trusting the region label in the node name alone.
  4. If several nodes share a region, rotate through them testing speed and stability, and keep a record so you're not guessing from scratch every time.

Protocol trade-offs between stability and speed

The protocol type in a node entry determines the underlying implementation of the connection. Different protocols vary in resistance to interference, transmission efficiency, and handshake overhead — pick based on your network environment rather than assuming one protocol is universally superior.

ProtocolTransportCharacteristicsBest for
ShadowsocksTCP/UDPSimple implementation, low handshake overhead, selectable encryptionLenient network environments, lowest latency
VMess / VLESSTCP/WS/gRPCSupports multiple transport wrappers, can pair with TLS disguiseEnvironments with stricter network inspection
TrojanTCP + TLSTraffic signature close to normal HTTPS, slightly higher handshake costEnvironments needing stronger interference resistance
Hysteria / TUICQUIC-basedBuilt on UDP, more efficient retransmission on poor linksLinks with high packet loss or instability

A few quick rules of thumb: if your network environment has few restrictions, Shadowsocks usually handshakes fast with low CPU overhead, making it the most direct choice for low latency; if the link is prone to interference or deep inspection, TLS-disguised protocols (like Trojan, VLESS+TLS) are more stable at the cost of a few extra tens of milliseconds during handshake; if your network has a high packet loss rate (like mobile networks frequently switching cell towers), QUIC-based protocols generally recover from retransmission more efficiently than pure TCP schemes and are worth keeping as a backup group.

The mihomo core (i.e., the Clash Meta branch) offers broader protocol support, including newer implementations like Hysteria2, TUIC, VLESS, and Shadowsocks 2022. If your subscription provides nodes for these protocols but your client keeps failing to connect, first confirm the client is actually running the mihomo core — the original Clash core doesn't support these newer protocols.

Combining all four dimensions into a repeatable node-picking workflow

No single factor — latency, multiplier, region, or protocol — is enough on its own to decide whether a node is good. In practice, follow this order to turn gut feeling into a repeatable process:

  1. Step 1: Filter by latency. Open the proxy group, run a one-click test across the group, and drop any node above 1000ms or timing out — the remaining candidate pool is usually 30-50% of all nodes.
  2. Step 2: Narrow by region for the task at hand. Clarify whether this session is about "lowering everyday latency" or "accessing content from a specific region," and narrow the candidate pool to the matching region.
  3. Step 3: Check whether the protocol matches your network conditions. If there's noticeable interference or high packet loss, favor TLS-disguised or QUIC-based nodes, and drop protocol types that keep failing to connect in your current environment.
  4. Step 4: Decide your multiplier tolerance based on your data budget. With a generous monthly allowance, don't fuss over multipliers; if data is tight, set low-multiplier nodes as your default group and reserve high-multiplier nodes for critical tasks.
  5. Step 5: Confirm with an actual download speed test. Download a test file on each of the remaining two or three candidates and keep whichever is more consistently fast with less fluctuation — not necessarily the one with the lowest latency number.

This workflow doesn't need to be repeated daily — running through it once when your subscription updates or when you clearly notice stuttering is enough. Lock the results into your proxy groups and pair them with rule-based routing so different traffic types land in the right group automatically, saving you from manually switching nodes every time.

Common pitfalls and troubleshooting tips

The most common mistakes when picking nodes fall into a few categories:

  • Trusting the top of the latency ranking blindly. The top result is often just a snapshot from a brief probe and doesn't reflect performance under sustained load — pair it with the actual download speed test mentioned earlier.
  • Ignoring the strategy type of a proxy group. Proxy groups themselves come in different strategies — an auto-select group switches automatically based on latency, a fallback group automatically moves to the next node when one goes down. If you've manually pinned a node but it keeps getting switched away, check the group's strategy type first instead of repeatedly re-selecting manually.
  • Treating region codes as a guarantee of unlocking. As explained earlier, region codes only reflect where a server is deployed — actual unlocking depends on the egress IP range. If unlocking fails, try another node in the same region before giving up on that region entirely.
  • Assuming lower multiplier is always better. Low multipliers often come with heavier load, and relying solely on the lowest-multiplier node long-term means running into more peak-hour congestion — group nodes by use case instead of applying a blanket rule.

If a node consistently behaves oddly (latency swings wildly, frequent disconnects), first suspect the node or its line itself — switch to another node in the same region to verify before checking your local network or client settings.

Get the Clash Client

Once your node strategy is set, you still need a client that correctly recognizes proxy groups and supports rule-based routing to put these settings into practice.

Download Client