Skip to content
barcoder

Standards/walletconnect-uri

WalletConnect URI

TypeQR Data Format
Completeness78%high

Overview

A WalletConnect URI is a wc: string, defined by ERC-1328 (EIP-1328), that carries what an application and a wallet need to open an encrypted connection. It can be shown as a QR Code or passed as a link 1. Unlike a payment URI, it names no recipient or amount: it only bootstraps a channel, over which the application later proposes a session and sends signing requests 4 18.

Two versions exist. Version 1 pointed at a bridge server and was shut down in June 2023; version 2 names a relay protocol and is current 1 8. The company behind the protocol renamed itself Reown in September 2024, while the network and the URI kept the WalletConnect name 10.

History

  • 2017. Pedro Gomes began exploring Ethereum as a developer and user, and saw shortcomings in wallet user experience 31.
  • March 2018. According to Ric Burton, a collaborator at the time, Gomes sketched WalletConnect for the Balance team, who wanted a transport layer between phones and desktops. Burton posted a demo on 27 March 2018 in which a phone wallet connected to a web application by scanning a QR code; Gomes shared the first architecture on 31 March 7. WalletConnect's own blog gives 2018 as the founding year 30.
  • May 2018. Burton reports a $150,000 Ethereum Foundation grant, announced in the May 2018 cohort. WalletConnect was later separated from Balance, and Gomes used the grant to develop the protocol towards version 1.0 7.
  • August 2018. ERC-1328 is dated 15 August 2018, by ligi and Pedro Gomes 1. Gomes opened the pull request on 16 August, and it merged on 28 August 2018 2. The change replaced the JSON payload of the alpha, which was inefficient to parse from a QR code. ligi's review added the point that a URI, unlike JSON, lets Android's Intent system route the code 1 2.
  • January 2021. Burton counts 100 applications supporting WalletConnect on 23 January 2021 7.
  • 2022–2023: v1 retirement. A migration notice on the Celo forum gives 16 December 2022 as the wallet deadline. The shutdown moved from 1 March to 28 June 2023 9. WalletConnect announced on 28 June 2023 that v1.0 "has now been shut down", five years after it was first built, citing an inability to scale horizontally 8.
  • September 2024: Reown. On 16 September 2024 the company announced that "WalletConnect Inc. has officially rebranded to Reown". The WalletConnect Network kept its name and decentralization roadmap, and Reown called itself a partner of the network 10. The SDK formerly named Web3Wallet became Reown WalletKit 11.

Technical specification

Carrier. A pairing code is an ordinary QR Code holding the URI as text, so it belongs to the same family as URL QR. The URI can equally travel as a link or be pasted into a wallet 1 18. The sources fetched specify no error-correction level or symbol size.

Grammar. ERC-1328 defines the form below in ABNF; topic and parameter values are unconstrained strings, and version is one or more digits 1.

wc:<topic>[@<version>][?<key>=<value>[&<key>=<value>...]]

Version differences

v1 (@1) v2 (@2)
Encryption key parameter key 1 symKey 1
Message transport bridge: URL of a bridge server 1 relay-protocol, optional relay-data 1
Method list none methods: JSON-RPC methods grouped by protocol 3
Expiry none optional expiryTimestamp, Unix seconds 1
Topic in the published sample UUID form 1 64 hex digits 1
Status Shut down June 2023 8 Current; replaced v1 8

Published samples

From ERC-1328, version 1, with the published key value replaced by a placeholder 1:

wc:8a5e5bdc-a0e4-4702-ba63-8f1a5655744f@1?bridge=https%3A%2F%2Fbridge.walletconnect.org&key=<64-hex-key>

From the WalletConnect pairing specification, version 2, with the key value replaced by a placeholder 3:

wc:7f6e504bfad60b485450578e05678ed3e8e8c4751d3c6160be17160d63ec90f9@2?symKey=<64-hex-key>&methods=[wc_sessionPropose],[wc_authRequest,wc_authBatchRequest]&relay-protocol=irn&expiryTimestamp=1705667684

What happens after the scan

  1. The proposer generates a random symmetric key and takes its SHA-256 hash as the pairing topic, so the topic follows from the key. It then creates an inactive pairing 4. The reference SDK generates 32 random bytes for the key 13.
  2. The application encrypts its request with that key, publishes it on the topic, and shows the URI as a QR code or deep link 4.
  3. The wallet checks methods against the methods it has registered. If they match, it subscribes to the topic, receives the request and creates an active pairing; if not, it tells the user and publishes wc_deletePairing 4.
  4. In the SDK, pair({ uri }) creates the pairing and raises the session_proposal event. The default session lifetime is 7 days 18.

Lifetimes. An inactive pairing expires after 5 minutes and an active one after 30 days, extended whenever a peer delivers a message 4. The specification says expiryTimestamp should be generated 5 minutes ahead 3, and the reference SDK does this 13.

Cryptography. Random symmetric keys are used only for pairings; other protocol keys come from an X25519 exchange passed through HKDF. Messages use ChaCha20-Poly1305, and SHA-256 hashes keys into topics 5. A type 0 envelope is a 1-byte type, 12-byte IV, ciphertext and 16-byte tag; type 1 adds a 32-byte public key 6.

Parser behaviour

  • methods in practice. ERC-1328 and the pairing specification list methods as required 1 3. The reference SDK treats it as optional, and its pair() validation names only relay-protocol and symKey 13. A parser should not assume methods is present.
  • Prefixes. parseUri strips an Android wc:// as well as wc:, and tries base64 decoding if the string lacks wc: 12.
  • Encoding. formatUri sorts parameters alphabetically and encodes them through URLSearchParams, so a comma in methods becomes %2C 12. Raw and encoded forms therefore both occur.
  • Stale or repeated URIs. The SDK refuses a URI past its expiry, and refuses a topic whose pairing is already active. Both errors ask for a new connection URI 13.

For same-device use, a wallet registers a custom scheme and receives the URI as a parameter, for example examplewallet://wc?uri={pairingUri}; universal links take the form https://example.wallet/wc?uri=… 14 15. WalletConnect's documentation recommends deep links, because a universal link may open a browser. Wallets should also register wc:// 15. During signing, an application may open the wallet with an incomplete URI such as examplewallet://wc?uri=wc:00e46b69-d0cc-4b3e-b6a2-cee442f97188@2, which the wallet must not treat as a new connection, and a QR scan should not trigger a redirect back to the application 14.

Link Mode, a separate feature, carries auth and session requests between native applications over Universal Links, reducing reliance on a relay WebSocket connection. Its documentation does not cover QR codes 16.

Symbol size

Computed with segno 1.6.6, with error-level boost off. Every payload encoded in byte mode.

Payload Characters L M Q H
v1 sample above 156 8 (49 × 49) 9 (53 × 53) 11 (61 × 61) 13 (69 × 69)
v2 sample above 252 10 (57 × 57) 12 (65 × 65) 14 (73 × 73) 17 (85 × 85)
v2 sample without methods (structurally illustrative) 187 8 (49 × 49) 10 (57 × 57) 12 (65 × 65) 14 (73 × 73)

Use cases

  • Connecting web applications to wallets. The original purpose: a phone wallet connects to a desktop application by QR code 7. AppKit's modal displays the code for the wallet's built-in scanner, which avoids deep linking altogether. That is also the suggested workaround when an Android in-app browser blocks a wallet from opening 19.
  • Trading. The 0x Project collaboration of April 2018 let people trade on the web from a phone wallet 7.
  • Non-Ethereum chains. Reown's Polkadot wallet guide uses the same flow: scan the modal's code, or copy and paste the URI 18.
  • Sign-in. The v2 sample lists wc_authRequest among its methods 3, and WalletConnect cited one-step Sign-in with Ethereum as a v2 benefit 8.
  • Retail payments, a related but separate code. WalletConnect Pay shows a QR code on the point-of-sale device. A wallet scans it to pay; a phone camera opens a browser payment page instead 20. WalletConnect's blog of 15 January 2026 announced the service through Ingenico, whose customer base it puts at over 40 million terminals in 120+ countries 22. This is not necessarily a wc: code: the SDK documents payment links as https://pay.walletconnect.com/... and checks for them with isPaymentLink before falling back to pair() 21. The user-facing page does not state what the QR holds 20.

Security

  • What the code contains. ERC-1328 says the URI should contain nothing that could compromise the communication or allow control of a user's private keys 1. In practice it does carry a symmetric key, but that key is random and generated for the pairing 5. It is not the wallet's private key.
  • Impersonation. Check Point Research reported on 26 September 2024 that a fake Google Play app named "WalletConnect – Crypto Wallet" drew over 10,000 downloads, and that over 150 victim addresses lost more than $70,000 in total. The app traded on the protocol's name; the report describes no protocol flaw. It opened a malicious site through a wallet's browser, not a pairing code 23.
  • Verify. WalletConnect's Verify feature helps wallets assess the domain behind a session proposal or request, combining a domain registry with threat intelligence from Hexagate, ChainPatrol and Hypernative. A flagged domain sets isScam 17.

Implementations

Project Lang Stars Last active Notes
WalletConnect/walletconnect-monorepo TypeScript ~1.7k 2026-10 v2 reference; holds formatUri and parseUri 12 27
reown-com/appkit Web (React topic) ~5.5k 2026-10 Application toolkit whose modal shows the QR code 19
reown-com/reown-swift Swift 123 2026-10 WalletKit and AppKit for iOS
reown-com/reown-kotlin Kotlin 67 2026-10 Android implementation
reown-com/reown_flutter Flutter 67 2026-10 Flutter implementation
WalletConnect/walletconnect-utils JavaScript 134 2026-01 JavaScript utilities
WalletConnect/walletconnect-legacy JavaScript 9 2025-06 v1 packages; archived 19 June 2025 28

Comparison

  • wc: vs EIP-681. An ethereum: URI describes a transaction, with destination, value and chain, so one scan can request one payment [eip681-ref]. A wc: URI describes no transaction; it opens a channel that needs a relay and can carry many requests 1 18. Choose EIP-681 for a single printed payment request, and wc: when an application must keep talking to a wallet.
  • wc: vs Solana Pay. A Solana Pay transaction request also goes beyond static fields, but the wallet fetches a transaction from an HTTPS endpoint named in the URI [solana-ref]. A wc: URI names no application server; both sides meet on a relay topic 4.
  • wc: vs URL QR. Both are URI strings in a QR code, but wc: is meant for a wallet's own scanner or a registered app, and the payload expires in minutes 3 19. A pairing code should therefore be generated on screen, not printed. That follows from the 5-minute expiry 4.

Fun facts

  • WalletConnect's first public demo was a QR code, but the first QR payload was not a URI. The wc: scheme arrived about five months later because the JSON in the alpha was inefficient to parse 1 7.
  • The v2 sample in ERC-1328 contains a stray " after the methods value, an apparent typo. The sample in the WalletConnect pairing specification has none 1 3.

Status

Active. ERC-1328 is Final 1, and its text is also published on ercs.ethereum.org 29. Version 2 is the live protocol. Version 1 has been offline since June 2023 8, and its JavaScript repository was archived in 2025 28. The reference repository received commits in October 2026 27.

The naming is split. Reown's site is still live and calls the company "powered by WalletConnect" 25, and its SDKs keep the name, such as @reown/walletkit 21. WalletConnect's own documentation lives at docs.walletconnect.com 26. When fetched on 30 October 2026, walletconnect.network and docs.walletconnect.network redirected to walletconnect.com hosts, and the docs.reown.com mobile-linking pages returned 404. The fetched pages do not say which entity runs what today.

Reported scale is self-published and not independently verified. WalletConnect's site claims about 900M users, 700+ wallets and 80,000+ apps 24. Reown's site says 700+ wallets and 70K apps 25.

Sources

1 ERC-1328: WalletConnect URI Format — Ethereum Improvement Proposals, 2018, accessed 2026 2 ERC-1328 - WalletConnect Standard URI Format (PR #1330) — ethereum/EIPs on GitHub, 2018 3 Pairing URI — WalletConnect v2 specs, accessed 2026 4 Pairing API — WalletConnect v2 specs, accessed 2026 5 Crypto Keys — WalletConnect v2 specs, accessed 2026 6 Crypto Typed Envelopes — WalletConnect v2 specs, accessed 2026 7 The History of WalletConnect — Ric Burton, 2021 8 WalletConnect v1.0 has now been shut down — WalletConnect, 2023 9 WalletConnect v1 to v2 migration — Celo Forum (third party), 2023 10 Meet Reown: the onchain UX platform — Reown, 2024 11 Upgrade from Web3Wallet to Reown WalletKit — WalletConnect Docs, accessed 2026 12 uri.ts (parseUri, formatUri) — walletconnect-monorepo, accessed 2026 13 pairing.ts (create, pair) — walletconnect-monorepo, accessed 2026 14 Mobile linking (iOS) — WalletConnect Docs, accessed 2026 15 Mobile linking (Android) — WalletConnect Docs, accessed 2026 16 Link Mode — WalletConnect Docs, accessed 2026 17 Verify — WalletConnect Docs, accessed 2026 18 Wallet Integration Guide (Polkadot) — Reown Docs, accessed 2026 19 AppKit FAQs — Reown Docs, accessed 2026 20 How to Pay with WalletConnect Pay — WalletConnect Pay Docs, accessed 2026 21 WalletConnect Pay via WalletKit: Web/Node.js — WalletConnect Pay Docs, accessed 2026 22 How WalletConnect Pay and Ingenico Facilitate Stablecoin Payments in Everyday Checkouts — WalletConnect, 2026 23 Wallet Scam: A Case Study in Crypto Drainer Tactics — Check Point Research, 2024 24 WalletConnect Network — WalletConnect, accessed 2026 25 Reown — Reown, accessed 2026 26 WalletConnect Docs — WalletConnect, accessed 2026 27 walletconnect-monorepo — GitHub, accessed 2026 28 walletconnect-legacy — GitHub, accessed 2026 29 ERC-1328: WalletConnect URI Format — Ethereum Request for Comment, accessed 2026 30 Building from Zero to Solving Payments — WalletConnect, 2026 31 Founder Q&A: Pedro Gomes from WalletConnect — Circle, 2022

Deployments

No country reports mention this standard by name.

Regions / aggregations not mapped to a single country

  • Universal
source · content/standards/walletconnect-uri/index.md