Options live under Settings → Mercurygram, unless a section says otherwise. They are off by default unless the Default column says otherwise, and apply to the current account only. The ones marked all accounts are device-wide, which the app also tells you in place. Options marked pre-release are not in the current stable build yet; they ship in the 5-dotted pre-release builds and land in the next stable.
Hidden accounts
The Hidden Accounts row appears at the top of the Mercurygram settings once an app passcode or stealth mode makes hiding possible. A hidden account is kept out of account switchers, settings and notifications until you type its own 4-digit unlock code, which must be unique and must not match the app passcode. At least one account has to stay visible.
The unlock code controls in-app access only. It is not encryption: chat data, media and credentials stay readable to anyone with full device access.
| Option | What it does | Default |
|---|---|---|
| Stealth mode | Hides hidden accounts without turning on the regular app passcode. Type a hidden account's code in the chat search field to open it for the session. | Off |
| Only show settings when using a hidden account | Keeps the Hidden Accounts screen itself out of sight unless you are signed into a hidden account. | Off |
| Change unlock code / Remove hidden account | Long-press an account in the list. Removing it makes the account visible again everywhere. | n/a |
General
| Option | What it does | Default |
|---|---|---|
| Show "Message Details" | Adds a Message Details entry to the message long-press menu, including Export as JSON. | Off |
| Hide keyboard on chat scroll | Drops the keyboard as soon as the message list starts scrolling. | Off |
| Hide "All Chats" tab | Removes the All folder tab. Long press the title bar to show it temporarily. | Off |
| Default launch folder | The chat list opens on the folder you pick, on the first tab build after launch. Local to this device. | All Chats |
| Hide stories | Removes the stories bar from the chat list entirely. | Off |
| Hide Premium promo | Hides the Telegram Premium, Business and gifting rows in Settings and the Premium banners in the chat list. Unlocks nothing and does not touch sponsored messages. | Off |
| Use system font (all accounts) | Uses the device system typefaces instead of the bundled Roboto. | Off |
| Show character counter | Counts the characters in the message you are typing, for groups where a bot enforces a length limit. Hidden while Telegram shows its own remaining-characters counter. | Off |
| Delete for everyone by default | Pre-ticks "Delete for everyone" (and "Also delete for…" in private chats) in the delete dialog. You can still untick it. | Off |
| Save deleted & edited messages | Messages the other side deleted, your own included, stay in the chat, grayed out and non-replyable, and can be removed with the usual Delete; messages you delete yourself are not kept; edited messages keep their earlier versions under Edit history in the message menu. Stored separately from the Telegram cache. Self-destructing messages and secret chats are never saved. | Off |
| Clear saved message history | Wipes everything the option above recorded. Shown only while it is on. | n/a |
Custom emoji pack
A sub-screen under General. Renders emoji from your own pack instead of the built-in Noto set; any emoji the pack is missing falls back to the built-in one. The pack stays on your device and is never shared.
| Option | What it does | Default |
|---|---|---|
| Use custom emoji pack (all accounts) | Switches emoji rendering to the imported pack. | Off |
| Import pack from file | Takes a .zip of emoji images, or an official Telegram APK to extract emoji from. | n/a |
| Remove pack | Deletes the imported pack and goes back to the built-in set. | n/a |
Media
| Option | What it does | Default |
|---|---|---|
| Use rear camera for video messages | Round video messages start on the rear camera. | Off |
| Disable Live Photos by default | Sends only the still frame of a Google Motion Photo. Tapping the motion icon in the attach panel still enables it for one selection. | Off |
| Disable proximity sensor (all accounts) | Keeps the screen on when the phone is near your face during calls and voice message playback, for phones whose sensor misfires. Raise-to-listen and the switch to the ear speaker stop working. | Off |
Privacy
| Option | What it does | Default |
|---|---|---|
| Reduce network tracking (all accounts) | Rotates the session key every hour instead of once a day, so a passive observer has a harder time correlating your device across IP changes. Background network activity rises slightly, and the first key after a fresh login is still observable once. If the server rejects the shorter lifetime, that account falls back to the standard 24h key and the screen says which. | Off |
| Tor (all accounts) | Opens the Tor screen, which is also reachable from Settings → Data and Storage → Proxy Settings and from the login screen, so an account can be logged in over Tor. Routes Telegram protocol traffic (MTProto) through an embedded Tor daemon, defeating the passive auth_key_id correlation that links your account to your real IP. Media downloads and other HTTP traffic stay direct. Tor stops when the app is idle and restarts on demand. Calls may suffer, and Telegram still sees the Tor exit. Needs the companion Tor plugin, which the app offers to install. While Tor is on it owns the connection: adding, picking or deleting a regular proxy is refused with a hint instead of quietly taking over, and the proxy you had before is restored when you turn Tor off. | Off |
| ↳ Anti-censorship (all accounts) | Direct connection where Tor is not blocked, Snowflake where it is (domain-fronted, no setup), or obfs4 bridges with lines from @GetBridgesBot. | Direct connection |
| ↳ Stop Tor after idle (all accounts) | Never, 1 minute, 5 minutes, 15 minutes or 1 hour. | 5 minutes |
| Disable global search | Search stops looking up public usernames, channels and messages across Telegram, and only covers your own chats and contacts. | Off |
| Disable AI text editor | Hides the AI button in the message and caption editors, which sends your draft to Telegram's AI service. | Off |
| Disable AI summaries | Hides the AI Summary button, which sends the message text to Telegram's AI service. | Off |
| Open links in browser | Link taps open the page in your browser instead of Instant View, which is rendered by Telegram's servers. The explicit Instant View button still works. | Off |
| Disable link previews | Stops the app fetching web page previews while composing, in every chat, so Telegram's servers never load the links you type or paste. | Off |
| Strip tracking parameters | Removes click-tracking parameters (utm_*, fbclid, gclid, igsh and about seventy more) from links you open, links you paste into the message field, links you copy out of the app, and links shared into Mercurygram from another app. Site-specific ones go too, where they are only tracking on their own site: si on YouTube and Spotify, s/t on X, the share ids on TikTok and Instagram's stkn, ref/pd_rd_* on Amazon, ved on Google Search. Parameters that carry real meaning are kept, such as Instagram's img_index. The rest of the address is untouched. | Off |
| Keep drafts on this device | Unsent drafts are never uploaded to Telegram, so they stop appearing on your other devices. Clearing a draft still syncs, so a draft stored before you turned this on can be removed from the server. | Off |
| Confirm Telegram links | Asks before opening t.me and tg:// links and shows the address first, against links that quietly join a channel or open a bot. | Off |
| Start new chats as secret | The compose button creates an end-to-end encrypted secret chat instead of a regular one. Secret chats live only on this device. Existing chats and other ways of opening a chat are unaffected. | Off |
Translation
A sub-screen under Privacy. Applies to all accounts.
| Option | What it does | Default |
|---|---|---|
| Translation engine | Telegram cloud sends the text to Telegram (which forwards to Google). Alternative HTTP routes it through a public Mozhi privacy proxy. Offline hands each translation to a separate FOSS app over a bound service, so the message never leaves the device; formatting may be lost, since the engine returns plain text. Default defers to Telegram's own setting. | Default (Telegram cloud) |
| Install Offline Translator from F-Droid | Opens the listing for dev.davidv.translator, the reference offline provider. Open it once afterwards to download your language pairs. | n/a |
| Auto-fallback on failure | If the offline translator returns nothing (no model, language not detected, service unreachable), fall back to the Alternative HTTP path. The Telegram cloud is never used as a fallback once you picked the offline engine. | On |
| Engine (Alternative HTTP) | DuckDuckGo, Google (via Mozhi) or Yandex. | DuckDuckGo |
| Instance (Alternative HTTP) | Rotate across the default Mozhi instances, pin one of them, or enter a custom https:// URL. The instance operator can log what it translates. | Auto (rotate across defaults) |
Voice transcription
A sub-screen under Privacy. Transcribes voice and round video messages on the device with whisper.cpp: the audio never leaves your phone and it works without Telegram Premium. The models are open source (MIT) and are downloaded or imported separately, not bundled.
| Option | What it does | Default |
|---|---|---|
| Transcribe on device (all accounts) | Uses the local model instead of Telegram's premium-gated transcription request. Needs a model installed. | Off |
| Model (all accounts) | Tiny (smaller, faster), Base (larger, more accurate) or Small (most accurate, slower). | Tiny |
| Download model / Import model from file / Delete model | Fetch a model over the network, or import one you already have. Tapping the row while a download runs stops it and discards the partial file. | n/a |
| Language | Automatic lets the model detect the spoken language; Device language or a specific language pins it, which helps because the smaller models often mis-detect short messages. | Device language |
| Skip silence (voice detection) (all accounts) | Detects speech and skips the silent parts, so the model cannot invent words during silence. Uses a small extra model downloaded alongside the main one. | On |
Updates
Hidden on F-Droid and Google Play builds, which update through their store. Applies to all accounts.
| Option | What it does | Default |
|---|---|---|
| Disable in-app updater | Stops the startup check for new releases on GitHub. Manual checks still work. | Off |
| Accept pre-release updates | Receives the 5-dotted development snapshots taken between stable releases (such as 12.6.4.4.42). They may crash or carry half-finished features; turning the option back off offers you the matching 4-dotted stable as an update, rolling the install back. Installing a pre-release any other way switches the option on by itself, so it always shows the channel you are on. | Off |
| Check for updates now | Runs the check immediately and shows when it last ran. | n/a |
Notifications
Push runs over UnifiedPush instead of Firebase, via the aesgcm-proxy gateway. Applies to all accounts.
| Option | What it does | Default |
|---|---|---|
| Disable UnifiedPush | Stops push notifications: the distributor subscription is dropped and both device tokens are revoked on Telegram's side. Applied immediately, no restart. Background delivery then depends on Telegram's own connection, so enable Background Connection or Keep-Alive Service under Settings → Notifications and Sounds if messages are still wanted while the app is closed. | Off |
| UnifiedPush Distributor | Picks the installed distributor app that receives pushes. Long press for recent notification and decryption statistics. | Not set |
| ↳ Google FCM (built in) | Entry in the same menu for devices with Play Services and no distributor app installed. Delivers through Firebase Cloud Messaging without bundling any Google library or Firebase project: Play Services is asked for a plain WebPush endpoint, and the gateway signs the pushes it cannot sign itself. Payloads stay end-to-end encrypted, but Google learns that a notification reached the device, so the entry is never selected automatically and warns before it is. The one exception is a Google Play install with no distributor app: there it is the default, and installing any distributor app turns the default off again. | Not set (Google FCM on Google Play) |
| Gateway URL | The URL prefix of the UnifiedPush gateway. | https://p2p.belloworld.it/ |
| ↳ VAPID public key | Shown only while Google FCM (built in) is the selected distributor. Firebase accepts a push only if it is signed with the key of the gateway it comes from, so this is the VAPID public key of the gateway set above, and its /fcm/ route follows that same Gateway URL. Change both together to run the built-in entry through a self-hosted gateway; leave both alone to use Mercurygram's. Editing either one re-registers with the distributor straight away. | Mercurygram gateway |
The default ntfy.sh server has very low rate limits and blocks the gateway, so
the app warns and switches away from it. A self-hosted ntfy server or another
distributor works fine.
Elsewhere in the app
| Option | Where | What it does |
|---|---|---|
| OpenStreetMap map previews | Settings → Privacy and Security → Map preview provider | Renders map previews on the device with MapLibre and OpenStreetMap instead of Google. Always offered, whatever the server suggests. |
| Stickers / GIFs / Games / Inline Bots | Group permissions, and the per-member restriction editor | Splits Telegram's single "Stickers & GIFs" permission into four independent toggles. |
| Disable Secure Flags | Debug menu (long press the version number) | Allows screenshots and recents previews in screens that normally block them. |
| Remove Ads & Proxy Sponsor | Debug menu | Drops sponsored messages and the proxy sponsor channel. |
| Do Not Translate, Translate Entire Chats | Settings → Language | Both rows are listed without Premium. The switch turns the in-chat "Translate to X" bar off for the account; manual translation stays available. |
| Keep-Alive Service, Background Connection | Settings → Notifications and Sounds | Both switches now write where the app reads them, so they work on every account, not only the first, and Background Connection is applied to all logged-in accounts at once. Android requires an ongoing notification while the keep-alive service runs; tapping it opens its notification channel, where it can be silenced or hidden. |
| Mercurygram folder | Settings → Folders, on the create and edit screens | A switch that keeps the folder off Telegram's folder API, so it counts against neither the folder limit nor the chats-per-folder limit; once the server limit is hit, "Create new folder" opens with it on. Flipping it on an existing folder that is not shared moves the folder to Mercurygram (deleted from Telegram) or back to Telegram, chats and pins included. Mercurygram folders carry a "Mercurygram" tag in the folder list and are synced between your Mercurygram apps through one JSON document in Saved Messages, so Telegram learns nothing it did not already know. |
| Tor | Settings → Data and Storage → Proxy Settings, and the proxy button on the login screen | The same Tor screen as under Settings → Mercurygram, placed where connection settings live so it can be turned on before logging in. |
| Search operators | The in-chat search field | Typed filters next to the search text: from:username, before:/after:/date: (YYYY-MM-DD, today, yesterday) and type: (photo, video, voice, round, music, gif, file, link, contact, geo, poll, mention, pinned). Filtering runs on Telegram's servers through the same search API fields the official apps' filter UIs use, so no extra data leaves the device; a token that does not parse is searched for literally. |
Always on
Some of the fork is not a toggle. These behaviours are always active.
Privacy and networking
- CDN redirects are refused. When the server hands out a CDN redirect for a
download, the app declines it once per file, so your permanent
auth_key_idnever reaches a third-party CDN. This is independent of Reduce network tracking. - A fresh perfect-forward-secrecy handshake on every network change, so moving between Wi-Fi and mobile data does not carry the old session key over.
- No DNS-over-HTTPS fallback to Google.
- No voice or round-video playback from the lock screen, including Bluetooth and headset keys, and the sender's name and avatar are kept out of the lock-screen player. Music playback is unaffected.
- De-googled. MapLibre and OpenStreetMap instead of Google Maps, Noto emoji instead of Apple's, UnifiedPush instead of Firebase. Play Services, SafetyNet, Play Integrity, Cast, ML Kit and Wallet are stubbed out, passkeys are disabled, and BoringSSL, FFmpeg, libvpx, dav1d and tde2e are built from source. Play Billing is gone too, so Telegram Premium, gifts and Stars are paid for through Telegram's own invoice and card form, the one bots already use, and the Google Pay button of that form is the only part that is missing.
Premium gates removed
- Eight accounts instead of three.
- The Premium app icons.
- The per-language "Do Not Translate" list, and the Translate Entire Chats switch next to it, so the in-chat "Translate to X" bar can always be switched off. The list itself does not hide that bar: ML Kit is stripped from this build, so no language is ever attributed to a chat. It stays local to the device and feeds the suggested target languages.
- Free folder reordering, including moving "All chats" off the first position.
- Up to 100 pinned chats in "All chats" instead of the five Telegram allows without Premium. The order is kept on the device and written back after every refresh from Telegram, which is what keeps the pins the server refuses; Telegram still receives the first few as ordinary pins, so other clients show those. A chat pinned on another device joins the top here, but a chat unpinned there while this device was offline for long stays pinned until you unpin it here.
Interface
- The user or chat ID in Profile Info, and long-pressing a profile title copies the name.
- An Administrators entry in group and channel info.
- Mention in the text selection toolbar, by user ID or from your contacts.
- Translate in the selection toolbar of the message and caption editors, with "Use This Translation". Forced on-device in secret chats.
- Remove all proxies as a bulk action in the proxy list.
- Log in by QR code on the login screen, scanned from a device where the account is already logged in (Settings → Devices), like Telegram Desktop. No SMS or login code needed.
- Go to first message in the chat menu, jumps to the oldest message of a chat, group or channel.
- Search that folds decorated Unicode fonts, so typing
Cucina italianafindsℂᑌℂℐℕᗅ ℐᝨᗅℒℐᗅℕᗅ. Applies to chat search, contact and member pickers, and the forward and share lists. - The animated 🍑 emoji, restored.
- Material You / Monet dynamic themes.
- Inline
codeis always tap-to-copy, all profile photos load rather than the first 80, and the sticker picker shows every stored recent sticker rather than 20.
Media
-
Editing keeps the resolution. The crop is cut out of the original file rather than out of a copy that has already been shrunk to the send size, so a photo cropped to a quarter of the frame is sent at the full 1280 px (or 2560 px in high quality) instead of a quarter of it. A photo that also went through a filter is cut out of the filtered working copy, which the editor caps at 2560 px. The editor's working file is also saved near-losslessly, so sending no longer re-compresses an already-compressed image, and picking high quality on a photo sent outside an album now really sends it at high quality.
-
A transcription follows the settings it was made with. Each on-device transcription records the model and language that produced it, so changing either one transcribes the message again the next time you open it instead of showing the earlier result, which is what makes pinning a language after a wrong automatic detection worth doing. A voice message that is not on the device is downloaded first, rather than reporting that the audio is unavailable.
Fixes carried ahead of upstream
The fork also carries upstream bug fixes: the Android 16 heads-up notification bug, a custom notification sound on a contact or a chat that the Sound screen reset to Default whenever it could not match the stored tone, the notification permission prompt coming back on every launch after it was accepted, a set of crash and memory-leak fixes, secret-chat delete-for-everyone propagation, IPv6 and multi-address proxy connectivity, several performance fixes for large accounts, and a batch of photo picking and editing fixes (a crop that could silently send the uncropped original, a caption lost when send was pressed or moved onto the wrong photo when the selection was reordered, rotating in the crop editor discarding the crop, and images pasted from Gboard skipping the editor), an album whose remaining photos overlapped after part of it was deleted, and two live location fixes: sharing without Play Services never left the stale position a GPS fix was meant to replace and did not survive a reboot, and a location shared "until stopped" was shown as already expired in the chat banner and on the map.