In the open-source code of Telegram Web K — the web version at web.telegram.org/k — the complete Gram Wallet appeared on October 30: balance, history, sending and receiving, secret phrase, collectibles, in-chat transfers, and TON Connect. On November 2, it was hidden: the WALLET_RELEASED constant is set to false, and until it's manually switched, no menu item, link, or button leads to the wallet. The wallet is not yet on web.telegram.org/k — that site serves a build from October 30, compiled four and a half hours before the wallet commit. In the second web version, Web A, the wallet is already in the live build: it's displayed based on the wallet_available server flag, the same one used by the iOS and Android applications. This affects users accessing Telegram from a browser.
What's in the Web K Code
The wallet was merged in a single commit on October 30 at 19:18 UTC: 284 files, 48,483 lines added, 375 removed. The commit description refers to the iOS and Android clients as a reference. What it includes:
| Section | Features |
|---|---|
| Balance | amount in Gram and selected currency |
| History | operation pages are cached |
| Sending | to a contact, by username, to a TON DNS address or domain, with a comment |
| Receiving | address, QR code, top-up |
| Secret phrase | backup, export, word verification |
| Encrypted key backup | enable and disable; disabling allows rotating to a new secret phrase |
| Old wallet | a second wallet on the device is stored alongside the main one |
| Collectibles | viewing and sending |
| In-chat transfers | a separate card, shows "sending" while the transfer is in progress |
| TON Connect | connecting applications and responding to their requests; requests wait while the wallet is closed |
Transactions and keys are not handled by the client itself, but by the wallet-engine — a cross-platform TON wallet in Rust from a TON Core developer. It's not on npm: the web package is fetched as an archive from a GitHub release, currently 0.0.7 from September 30, and a separate script verifies the archive against a published checksum. The same releases contain engine builds for Android, Swift, macOS, Linux, and Windows.
Between the merge and the hiding, the wallet was edited three times, and all three edits concern the TON address menu: two commits by an outside contributor, merged via pull request #750, and one by the lead Web K developer. Now, when an address is tapped, the client searches for the owner among already loaded profiles and in the wallet cards of the message author, the chat partner, and the user's own account. It then queries the server, and only loads other profiles if the server responds that the wallet is not linked to anyone. The owner is displayed as a line with an avatar, sized for the Android client.
What's in Web A
In the second web version, telegram-tt, the Gram Wallet appeared earlier — with a commit on October 12 titled "Wallet: Introduce Gram Wallet," adding 26,255 lines. On October 26, a new sending screen with WebGPU effects was added, and separate commits introduced TON Connect link verification and operations where the second party is a channel or a Telegram gift.
The build on web.telegram.org/a — version 12.0.48 from October 26 — contains the wallet: it loads as a separate module, and the client displays it if the server sends wallet_available in the account's config. The same config also sets the minimum transfer amount (wallet_transfer_min_nanos) and the number of gasless daily transfers (wallet_gasless_daily_transfers).
What to Do
- Need the wallet in your browser now — try web.telegram.org/a: it might already be available there. Display is determined by the same server flag as in phone apps, so the wallet won't appear in the browser for accounts where the server hasn't enabled it.
- Using Web K — the wallet will not yet be in the menu, settings, or settings search. The
t.me/sendgramslink opens as a regular username link until release, and a TON address in a message appears as plain text. - Received an in-chat transfer in Web K — the transfer card is visible, but it won't open until release: view details and encrypted comments in the phone app.
- Before logging out of your account in the browser check if your secret phrase is recorded or if encrypted key backup is enabled. The web version stores wallet keys on the device, and in the Web K code, the logout screen warns about this separately (section below). How to find and save your phrase is in the help article.
How the Wallet is Hidden Until Release
Hiding the wallet took two commits on November 2. First, at 14:31 UTC, the "Send Money" item was removed from the chat menu, Gram transfer menu, and TON address menu; everything else still depended on the server. At 15:23 UTC, a second commit closed everything: the WALLET_RELEASED = false constant appeared in the lib/wallet/release.ts file. According to its description, this is not a setting: it will be switched in the code on the release day.
While it's false, the "Wallet" item in the main menu and settings (the client doesn't even request the balance for this line), the settings search result, the item in the attach menu, all "Send Money" buttons, the wallet window, wallet and TON Connect links, the TON address menu, and TON Connect requests are all closed. The wallet remains open only in the popup sandbox — which is available in dev and preview builds and operates on fixtures, without server requests.
After release, the server will decide, but with a different default than in Web A: Web K will hide the wallet only if the wallet_available flag comes with a "no" value, while Web A will show it only if the flag comes with a "yes" value.
Keys in the Browser
A Telegram wallet key can be kept in an encrypted backup. Enabling and disabling the backup in Web K, according to a code comment, mirrors the iOS client, and the strings describe it as follows: the backup is split into three parts and stored in data centers on three continents, assembled only on the owner's devices. If the backup is disabled, the wallet can only be restored with the secret phrase. When disabling, the client also offers to rotate to a new phrase: the address and balance remain the same, the change is recorded on the network and incurs a network fee, and it cannot be done with a zero balance.
Hence the warnings when logging out of an account. Web K has four of them: wallet keys exist only on this device and Telegram has no copy; keys for another, old wallet are on the device; a key rotation is unconfirmed, and the new key exists only here; and the general case — if keys exist, logging out will destroy them. In the first three cases, the wallet can only be recovered with the secret phrase; in the last, with a Telegram backup or the phrase.
How It Was Verified
- Web K code: wallet commit (Oct 30, 19:18 UTC, +48,483/−375, 284 files), hiding Send Money and hiding the wallet (Nov 2), file with the constant, wallet strings in
src/lang.ts,@ton/wallet-enginedependency inpackage.jsonand its update script. - web.telegram.org/k site: page served with
Last-ModifiedOctober 30 14:47 UTC — this is the build commit from 14:46 UTC; wallet animations from the October 30 commit are not on the site, their addresses respond with redirects. - Web A code and site: wallet commit (Oct 12), sending screen (Oct 26); in the live build 12.0.48 (
Last-ModifiedOct 26 18:09 UTC) — wallet module,openWalletModal, and config fieldswallet_available,wallet_transfer_min_nanos,wallet_gasless_daily_transfers. - Engine: wallet-engine releases — 0.0.1 from August 19 to 0.0.7 from September 30.




