Key Takeaways
- Most WalletConnect failures are timing or leftover session problems, not wallet or blockchain problems. A refreshed QR code and a full session clean out fixes a large share of cases.
- WalletConnect uses a WebSocket relay, so anything that blocks WebSocket traffic, such as a VPN, a corporate firewall or a strict browser extension, can stop the connection before the wallet ever sees a request.
- Never share a seed phrase or private key while troubleshooting. No legitimate connection fix ever requires it.
What WalletConnect Actually Does
WalletConnect is a messaging protocol. It is not a wallet, and it does not hold your funds. Its job is to carry encrypted messages between an application, often called a dApp, and the wallet where your keys live.
The flow has four steps:
- The application creates a pairing request and shows it as a QR code or a deep link.
- Your wallet reads that request and connects to the same relay server.
- The application sends a session proposal that lists the chains and permissions it wants.
- You approve or reject the proposal, and a session is created.
Once the session exists, signing requests travel through the relay, and your private keys never leave the wallet. That design is good for security, but the connection depends on several moving parts. When one of them fails, the user usually just sees a spinning loader.
| Part of the chain | What it does | Common failure |
|---|---|---|
| Application side | Builds the pairing link, holds the developer Project ID | Expired QR code, misconfigured Project ID, outdated SDK |
| Wallet side | Reads the link, approves the session, signs requests | Old app version, leftover sessions, unsupported chain |
| Relay server | Passes encrypted messages over a WebSocket | Blocked by firewall, VPN, network filter or an outage |
| Device and browser | Deep links, clipboard, local storage | Cache conflicts, blocked storage, app suspended in background |
Start Here: The Five Minute Checklist
Work through this list in order before trying anything advanced. It solves most cases.
- Refresh the QR code. An inactive pairing expires after about five minutes, and a session proposal is stored for about five minutes as well. A QR code that has been sitting on screen while you looked for your phone is often already dead.
- Disconnect old sessions in the wallet. Look for a menu named Connected Apps, Connections, Sessions or WalletConnect. Remove every entry, including ones you no longer recognise.
- Update the wallet app and the browser. Wallet releases regularly include relay and session fixes.
- Reload the application page. Then try again in a private or incognito window to rule out cached state.
- Change the network. Switch from Wi-Fi to mobile data, or the other way around. If it suddenly works, the original network was blocking the relay.
If the connection still fails after all five steps, move to the symptom table below.
Fix by Symptom
| Symptom | Most likely cause | What to try |
|---|---|---|
| QR code scans, then nothing happens | Session proposal expired, or the wallet cannot reach the relay | Refresh the QR code and scan within a few seconds, then test on another network |
| Wallet shows connected, the site still shows disconnected | Leftover session on one side only | Disconnect on both sides, close the tab, reconnect from a fresh page load |
| An error mentioning an existing pairing | The same QR code was scanned twice | Generate a new QR code and scan the new one |
| Connection drops when you switch apps on a phone | The operating system suspended the wallet in the background | Open the wallet immediately after tapping connect, and disable aggressive battery saving for the wallet app |
| Works at home, fails at the office or at school | WebSocket traffic is filtered on that network | Use mobile data, or ask the network administrator about WebSocket access |
| Every dApp fails, on every device | Outdated wallet build or a relay incident | Update the wallet, then check the wallet provider status page and support channels |
| Connects, but signing requests never arrive | Stale session or a chain mismatch | Disconnect, switch the wallet to the network the application expects, then reconnect |
How to Clear Ghost Sessions Properly
A ghost session is a connection record that one side still believes is active. It is the single most common cause of repeat failures.
In the wallet:
- Open settings and find the WalletConnect or Connected Apps section.
- Disconnect every listed application, not just the one that failed.
- Fully close the wallet app or lock and reopen the extension.
In the application:
- Use the Disconnect button in the site interface if one is offered.
- Reload the page.
- If the site still thinks you are connected, clear site data for that domain in the browser, then reload.
Important safety note: clearing browser site data is safe. Uninstalling or resetting a wallet extension is not, unless you have your recovery phrase stored securely offline. Never reset a wallet as a troubleshooting step.
Mobile Specific Problems
Mobile has its own failure patterns because two apps have to hand control back and forth.
- Deep link does not open the wallet. Install the wallet app first, then reload the application page so the connect menu can detect it.
- The wallet opens but returns you to the browser too early. Wait for the approval screen to load fully before switching apps.
- The browser tab reloads while you approve. Mobile browsers unload background tabs to save memory. Keep the number of open tabs low during the connection.
- Background restrictions. Battery optimisation and low power mode can suspend the wallet and close its relay socket. Disable optimisation for the wallet app during troubleshooting.
- In-app browsers. Social media in-app browsers often block the storage and scripts that wallet connections need. Open the site in the system browser, or use the browser built into the wallet app instead.
Browser and Network Causes
WalletConnect depends on a WebSocket connection to a relay server. If that socket cannot open, nothing else in the flow can happen.
Check the following:
- Ad blockers and privacy extensions. Strict blocking rules can stop the relay domain. Disable extensions for the site, then reload.
- VPNs and proxies. Some VPN exit nodes and corporate proxies break long lived WebSocket connections. Turn the VPN off and test again.
- Regional restrictions. Users in some regions have reported that relay endpoints are unreachable on certain networks. Testing on a different connection is the quickest way to confirm this.
- HTTPS. Wallet connections expect a secure origin. A site served over plain HTTP will often fail silently.
- Browser storage settings. Blocking all cookies and site data prevents the application from storing session state, so the connection appears to succeed and then vanishes on reload.
A quick diagnostic: open the browser developer console and look for a failed WebSocket request when you press Connect. If the socket never opens, the problem is the network, not the wallet.
When the Problem Is on the Application Side
If you build or operate a dApp, connection failures are often configuration issues rather than user error. Every project needs a Project ID, created in the developer dashboard, and that ID can be restricted by an origin allowlist. Requests from origins outside the allowlist are denied, and allowlist changes are documented as taking around fifteen minutes to apply.
Published relay error codes are useful when reading logs.
| Code | Meaning | Typical fix |
|---|---|---|
| 401 | Project ID does not exist, or the token has expired | Check the ID and the environment variable that supplies it |
| 403 | The Project ID exists but is not valid for this request | Review the origin or bundle ID allowlist |
| 1013 | Too many requests | Reduce reconnect attempts and review rate limits |
| 1001 (WebSocket close) | Server is terminating the connection | Reconnect |
| 4008 (WebSocket close) | Client is stale, connected without a subscription | Reconnect when needed |
| 4010 (WebSocket close) | Load rebalancing | Reconnect |
Timing rules also matter, because many bug reports are simply expiry working as designed.
| Item | Documented lifetime |
|---|---|
| Inactive pairing | About 5 minutes |
| Active pairing | About 30 days |
| Session proposal | About 5 minutes |
| Session request, default | 300 seconds, which is 5 minutes |
| Session request, maximum | 604,800 seconds, which is 7 days |
One more historical point that still causes confusion: WalletConnect version 1 was shut down on 28 June 2023, so any integration or wallet build that still targets it cannot connect at all. The company behind the toolkits, formerly WalletConnect Inc., rebranded to Reown in September 2024, and older packages such as Web3Wallet and Web3Modal were deprecated in favour of the current wallet and application SDKs. Documentation has since been reorganised across the Reown and WalletConnect Network sites, so old tutorials may point to retired packages.
Safety Rules While Troubleshooting
Connection problems create urgency, and attackers use that.
- No support agent, form, pop up or chat bot ever needs your seed phrase, private key or wallet password. Any request for one is theft.
- Check the domain before approving anything. Phishing clones of popular applications frequently appear in search results and social posts.
- Read the session proposal. If a simple site asks for permissions across many chains and accounts, reject it and reconnect from the official site.
- Review token approvals periodically with a reputable approval checker, especially after connecting to unfamiliar applications.
When It Is Not WalletConnect At All
Sometimes the connection is fine and something else fails just after it.
- Wrong network. The wallet is on one chain and the application expects another. Switch the network and reconnect.
- RPC failure. The application's node provider is down, so balances do not load even though the wallet is connected.
- Insufficient gas. A signing request appears but fails, which is a funding issue rather than a connection issue.
- The application itself is broken. If the same wallet connects to other sites without trouble, the problem is on that one site.
Working through this guide in order, from expiry to sessions to network to configuration, is faster than guessing and usually ends with a stable connection.
FAQ
Why does my WalletConnect QR code keep expiring? An inactive pairing and a session proposal each last about five minutes by design. Refresh the code and scan it promptly. If it expires within seconds, the wallet or the application is probably failing to reach the relay.
Why does my wallet say it is connected when the site says it is not? That is a ghost session. One side kept a record the other side dropped. Disconnect on both sides, reload the page, and start a fresh connection.
Is WalletConnect down, or is it just me? Test the same wallet on a different application and a different network. If everything fails everywhere, check the wallet provider's status and support channels. If only one site fails, the issue is that site.
Does WalletConnect ever need my seed phrase? No. The protocol only passes encrypted messages between an application and a wallet. Keys never leave the wallet, and no legitimate troubleshooting step involves entering a recovery phrase.
Why do connections drop when I switch between apps on my phone? Mobile operating systems suspend background apps to save power, which can close the relay socket. Reopen the wallet quickly, and turn off battery optimisation for it while you connect.
Related Terms
- Pairing: the initial encrypted link between an application and a wallet, created from a QR code or deep link.
- Session: the approved connection that defines which chains, accounts and methods an application may use.
- Relay: the server that forwards encrypted messages between the two sides without being able to read them.
- Deep link: a link that opens a specific app or screen directly, used to move from a mobile browser to a wallet.
- dApp: a decentralised application, meaning a website or app that interacts with smart contracts through your wallet.
Sources
- Reown Docs, Relay, Project ID, allowlist rules, error codes and WebSocket close codes: https://docs.reown.com/cloud/relay
- Reown Docs, WalletKit Best Practices, pairing expiry, session proposal expiry and expected pairing errors: https://docs.reown.com/appkit/overview
- WalletConnect Docs, Extended Sessions, session request expiry minimum and maximum: https://docs.walletconnect.network/custodians/extended-sessions
- WalletConnect, v1.0 shutdown schedule confirming the 28 June 2023 date: https://medium.com/walletconnect/weve-reset-the-clock-on-the-walletconnect-v1-0-shutdown-now-scheduled-for-june-28-2023-ead2d953b595
- Reown, rebrand announcement from WalletConnect Inc. to Reown: https://reown.com/blog/walletconnect-is-now-reown
- Reown Docs, deprecation schedule for legacy WalletConnect packages: https://docs.reown.com/appkit/upgrade/to-reown-appkit-web
More Reading
- Reown Docs, WalletKit Best Practices, for the full list of expected pairing and session errors and how wallets should handle them.
- WalletConnect Network Docs, Wallet SDK section, for current wallet side implementation guidance after the documentation move.
- Trust Wallet Support, Unable to Connect to a dApp with WalletConnect, for a worked example of a wallet specific troubleshooting flow.
Disclaimer: This article is educational and does not constitute financial, legal, or security advice. Wallet menus and settings change between versions, so confirm exact steps in your wallet's official help documentation.
Not sure which problem you have?
Use the Fixing Crypto Mistakes hub to identify the transaction, wallet, network, or exchange issue before taking another action.
OPEN TROUBLESHOOTING HUB



