
Mercurygram
Telegram is a messaging app with a focus on speed and security. It’s superfast, simple and free.
This is an unofficial fork of Telegram App for Android, maintained by rebasing Mercurygram patches and forward-ported de-googling patches on top of upstream Telegram.
Install
Mercurygram publishes three kinds of build. The tag shape tells you which:
| Channel | Tag shape | Example | Packages | When it ships |
|---|---|---|---|---|
| Stable | 4-part X.Y.Z.M (M ≥ 1) |
12.7.3.1 |
stable only (it.belloworld.mercurygram) |
Tagged release. Also goes to F-Droid / IzzyOnDroid. |
| Snapshot | 5-part X.Y.Z.M.K (M ≥ 1) |
12.7.3.1.42 |
both stable and beta (it.belloworld.mercurygram.beta) |
Every push to the Mercurygram branch (beta.yml). Snapshot of the next stable. |
| Pre-source | 5-part X.Y.Z.0.N (penultimate = 0) |
12.7.3.0.1 |
both stable and beta | When DrKLO ships an official Telegram APK before pushing the matching source — built from a decompiled APK on a throwaway pre-source/ branch (prerelease.yml). Decompiled Java may contain artefacts. |
The 5-part channels publish two APKs per release: a Release-flavor APK that updates the stable package side and a Debug-flavor APK (filename infixed with -debug) that updates the .beta package side. Filenames: Mercurygram--.apk (Release) and Mercurygram-debug--.apk (Debug). Stable installs pull the Release APK via the in-app updater opt-in toggle; .beta installs pull the Debug APK.
Versions order naturally: 12.7.3.0.1 < 12.7.3.0.2 < 12.7.3.1 < 12.7.3.1.42 < 12.7.3.2.
One-click install via Obtainium
Open the link on your Android device and the app source pre-fills with the right release filter and package ID.
Stable — package it.belloworld.mercurygram. Tagged stable releases only.
Beta — package it.belloworld.mercurygram.beta. Any 5-part build (both Snapshot and Pre-source). The catch-all if you want everything pre-release.
Snapshot only — package it.belloworld.mercurygram.beta. Per-push snapshots of the next stable (X.Y.Z.M.K, M ≥ 1). Skips pre-source builds.
Pre-source only — package it.belloworld.mercurygram.beta. Decompiled-APK ports (X.Y.Z.0.N). May contain decompilation artefacts.
Obtainium users: pre-source iterations of the same upstream version (
X.Y.Z.0.1,X.Y.Z.0.2, …) share the sameversionCodeby design. In your beta app entry, set Sort method → Release date and Apk Sort Method → Release date so newer iterations are detected. The in-app updater handles this automatically.Stable users: the in-app updater can be opted in to pre-release updates from Settings → Mercurygram → Updates → Accept pre-release updates. Enabling shows a warning dialog; once installed a pre-release you can only turn the toggle off again after upgrading to a stable (4-part) release.
Features
- Add ID in Profile Info
- Add a menu in Notifications and Sounds in order to set the UnifiedPush distributor. The same menu may be long-clicked to inspect recent UnifiedPush notification/decryption stats
- Add a menu in Notifications and Sounds in order to set the UnifiedPush WebPush gateway
- Add toggle setting in Chat Settings to start video messages with rear-facing camera
- Add toggle setting in Chat Settings to hide keyboard on chat scroll
- Add toggle setting in Chat Setting to hide "All Chats" tab (feature from NekoX)
- Add administrators item in group/channel info
- Add toggle setting in Debug Menu to enable Message Details menu
- Add toggle setting in Debug Menu to disable Unified Push support
- Add toggle setting in Debug Menu to disable Secure Flags. This option must only be used for debugging
- Add toggle setting in Debug Menu to remove sponsored messages and proxy sponsor banners. This option must only be used for debugging
- Re-add Monet themes (#31)
- Disabled DOH resolving since this leaks your used proxy to Google and it's not needed since Android DNS over TLS should be used instead
- Unlock premium app icons for anybody
- Unlock 5 accounts (was 3) and remove premium check for number of accounts
- Add toggle setting in Chat Settings to send large photos (2560px instead of 1280px)
- Telegram application icons are replaced with hermes wing (Created by Anthony Ledoux from Noun Project)
TF-originated de-googling patches
These patches were originally derived from the Telegram-FOSS effort, but Mercurygram now forward-ports and rebases them directly onto upstream Telegram.
Replacement of non-FOSS, untrustworthy or suspicious binaries or source code:
- Do location sharing with OpenStreetMap via MapLibre instead of Google Maps
- Use Noto emoji set instead of Apple's emoji
- Google/Firebase push services replaced with UnifiedPush
- SECURITY: BoringSSL, FFmpeg, libvpx, dav1d, and tde2e are built from source at compile time instead of shipping upstream prebuilts
Removal or stubbing of non-FOSS, untrustworthy or suspicious binaries or source code and their functionality:
- Google Play Services / Firebase dependencies from the default Mercurygram build and manifests
- Google Maps / Fused Location providers are stubbed out and replaced by MapLibre / Android location providers
- Google Wallet, SafetyNet, Play Integrity, and related proprietary verification pieces are stubbed out through local compatibility classes
- Google Cast integration
- Google ML Kit / Google Vision integrations, including barcode and face detection paths
- Android passkey support is disabled as Telegram servers verify the APK signature, which fails for unofficial forks
Other:
- Added the ability to parse locations from intents containing a
geo:,,string - Force static map previews from Telegram
- No content restrictions
Notes
In order to have reliable notifications, it may be necessary to set battery optimization to Not optimized for Mercurygram (no, it won't use more battery).
Background Connections setting is not necessary and uses lot of battery, so please disable it when you use UnifiedPush.
If you set Battery optimization to Not optimized, Keep-Alive Service will be not necessary.
See dontkillmyapp for more information.
If you can't/want set Battery optimization to Not optimized and you don't receive notifications after a while (more than 30 minutes) please enable Keep-Alive Service instead.
UnifiedPush WebPush gateway
Mercurygram uses Telegram's WebPush notifications through UnifiedPush.
When the app registers with a UnifiedPush distributor, it generates its own WebPush keypair and auth secret, then sends Telegram a WebPush token in JSON form:
<div class="highlight highlight-source-json notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="{"endpoint":"/aesgcm?e=","keys":{"p256dh":"...","auth":"..."}}">
{"endpoint":"/aesgcm?e=","keys":{"p256dh":"...","auth":"..."}}






























