Telegram is a messaging app with a focus on speed and security. It’s superfast, simple, and free! This repo contains the official source code for Telegram for macOS.
mas install 747648890
If you would like, you can download the non-MAS version.
You can also download the beta version if you want to try the latest features and you are prepared for bugs and crashes. If you are running the beta, join the beta testing chat on Telegram to report bugs.
See this repository’s contributors graph.
You can report bug or suggestions feature for Telegram for macOS on Telegram’s Bugs & Suggestions platform. Read the platform tip before creating first card.
You can help translate Telegram for macOS on Telegram’s translations platform. Pick your language, then look for the macOS translation set.
Telegram strives to protect your privacy. This app asks for as few permissions as possible:
- Microphone: You can send voice messages and make audio calls with Telegram.
- Camera: You can set your profile picture using your Mac’s iSight camera.
- Location: You can send your location to friends.
- Outgoing network connections: Telegram needs to connect to the internet to send your messages to your friends.
- Incoming network connections: Telegram needs to accept incoming connections for peer-to-peer voice calls.
- User-selected files: You can save files or images to your Mac.
- Downloads folder: Telegram can automatically download files or images you receive.
With Shortcuts you can learn how easy is navigate using your devices.
Telegram for macOS is licensed under the GNU Public License, version 2.0. See LICENSE for more information.
You can fork this application and make something awesome! Make sure that your fork follows these five requirements:
- Do get your own API ID.
- Don’t call your fork Telegram — or at least make sure your users understand that yours is unofficial.
- Don’t use our standard logo (white paper plane in a blue circle) for your fork.
- Do read and follow our security guidelines to make sure you take good care of your users’ data and protect their privacy.
- Do publish your code. The GPL license requires it!
For a local test build, install the prerequisites in INSTALL.md, then copy
Telegram-Mac/Local.xcconfig.example to Telegram-Mac/Local.xcconfig. Fill in your API ID,
API hash, a unique bundle ID, and the team ID of your installed Apple Development certificate.
The local configuration is ignored by Git. Then run:
sh scripts/build-local.shChoose arm64 (Apple Silicon), x86_64 (Intel), or universal. Press Enter to use this Mac's
architecture. The choice applies to the native libraries and Rust engines as well as the Debug app.
The script signs with your Apple Development certificate. The configured bundle ID and team
are shared by the app, extension and app groups, keeping local data separate from the official app
when you choose a distinct bundle ID.
Local builds disable the app updater, including background downloads, manual update commands,
recovery update actions and installation on quit. The update menu and Settings entry are hidden.
The script applies the Xcode 27 compatibility changes when needed and keeps logs, timings and
DerivedData under .build/local-<architecture>/.
It does not archive or deploy the app. The finished app is under DerivedData/Build/Products/Debug/Telegram.app.
You can also pass the architecture directly or preview the commands without building:
sh scripts/build-local.sh arm64
sh scripts/build-local.sh arm64 --dry-runAfter preparing the native frameworks for an architecture, rebuild just the app with:
sh scripts/build-local.sh arm64 --app-only--app-only skips framework preparation and its tool checks, while keeping the Xcode compatibility
step, local signing, disabled updater, logs and existing DerivedData. It also works with --dry-run
and the interactive architecture prompt. Xcode may still rebuild affected Swift packages and workspace
dependencies. Run without --app-only when native sources or the required framework architectures change.
Repeated builds reuse compatible native outputs. Changing architectures rebuilds those shared
outputs; the regular framework and release scripts still default to both architectures.
The script checks tools but does not install them. The legacy setup_build_env.sh still requests
openssl@1.1; use the Homebrew dependency list without that formula, since OpenSSL is built from source.
Quick start (full details, requirements and troubleshooting are in INSTALL.md):
- Install Xcode 16 or newer, Homebrew and a Rust toolchain (rustup). On Xcode 27, apply the local changes in XCODE27.md first: it supports macOS 12.0 and newer only, and the project targets 10.13.
- Clone with submodules:
git clone --recurse-submodules https://github.com/macosswift/telegram.git - Prepare the machine and build the native libraries once:
sh scripts/setup_build_env.sh --build - Open
Telegram-Mac.xcworkspacein Xcode and build theTelegramscheme.

