Telegram Mini Apps vs Discord Activities vs web game — picking the platform
Three near-identical-sounding ways to ship a game inside a chat app. Each has very different reach, distribution, and monetization.
Telegram Mini Apps, Discord Activities, and a plain web game are three different distribution surfaces for what looks like the same artifact — an HTML/CSS/JS game embedded somewhere users already are. They're not interchangeable. Telegram Mini Apps reach a billion users, monetize via Telegram Stars or your own Stripe link, and have the lightest review process. Discord Activities reach Discord's gaming-focused 200M MAU, monetize via the Discord SDK or external links, and have stricter quality bars. A plain web game reaches everyone with a browser but is the hardest to distribute because no one is going to type a URL into their phone browser to play your game. Pick by where your audience already is, not by which platform has the better docs.
We've shipped games and casual apps on each. This is the comparison no marketing page will give you.
What each one actually is
Telegram Mini Apps are web apps loaded inside Telegram's chat client. The user opens your bot, taps a button, and a webview opens running your URL with the Telegram WebApp JS bridge available. Auth comes free via Telegram's user identity. Payment goes through Telegram Stars or a Stripe Checkout URL.
Discord Activities are web apps loaded inside Discord's voice channel UI. Users in a voice channel start an activity together; your app runs in a panel everyone in the channel can interact with. Auth via OAuth. Payments via Discord SKUs or external link.
A plain web game is just a URL. Users open it in their browser. Auth, payments, distribution — all on you.
Reach, honestly
| | Total addressable users | Active casual-game audience | |---|---|---| | Telegram Mini Apps | ~1B | ~300M+ (Telegram has invested heavily in mini-app discovery) | | Discord Activities | ~200M MAU | ~50M+ | | Plain web game | All internet users | dependent entirely on your acquisition |
The "reach" number is misleading without distribution. Telegram and Discord both surface mini-apps inside their UIs. A plain web game lives or dies on whatever traffic you can buy.
Where each ecosystem is strongest:
- Telegram: viral group-chat games (Notcoin / TapSwap-style tappers, crypto plays, content unlocks)
- Discord: multiplayer game-room experiences, party games, watching a movie together
- Web: high-effort games where players will actually search for them
The DX comparison
Telegram Mini Apps are dead simple to start. Any web app works. Tap a button in BotFather to register your URL. Test in 5 minutes. The Telegram WebApp SDK exposes user identity, theming variables, payment hooks, and a few chat-aware features.
// Telegram Mini App — get the user
import { initData, expandViewport } from "@telegram-apps/sdk";
expandViewport();
const user = initData.user();
console.log(user?.username, user?.id);
// Send payment via Telegram Stars
WebApp.openInvoice(invoiceUrl);Discord Activities require more setup. You register an app at the developer portal, set up OAuth scopes, and run your app on a specific URL pattern that Discord proxies. The Discord SDK gives you channel state, voice events, and per-user identity within the activity.
import { DiscordSDK } from "@discord/embedded-app-sdk";
const sdk = new DiscordSDK(import.meta.env.VITE_CLIENT_ID);
await sdk.ready();
const { code } = await sdk.commands.authorize({
client_id: import.meta.env.VITE_CLIENT_ID,
response_type: "code",
scope: ["identify", "guilds.members.read"],
});
// Exchange code for token server-sideWeb game is the most flexibility and the least scaffolding. Whatever framework you want, whatever auth you want, whatever payment you want. The trade-off is you build everything.
Monetization
The biggest practical difference between the three.
Telegram Stars are Telegram's in-app currency. Users buy Stars with real money via the App Store / Play Store / direct cards. You sell digital goods in Stars and Telegram pays you out (Stripe-connected payout). Apple/Google take ~30% on the Star purchase; Telegram takes a small cut; you keep the rest.
You can also use Stripe Checkout links from your Mini App for non-IAP purchases. App Store / Play Store policies still apply — digital goods purchased in-app must use Stars on iOS/Android.
Discord SKUs let you sell entitlements in your Activity. Discord takes 12% + payment fee. Significantly worse than Stripe direct, but useful for Discord-native virtual goods. For real-world goods or services, you can use external Stripe links.
Web game — full Stripe control. You eat the Stripe fee (~3-5% all-in) and nothing else.
For pure virtual-goods business: Stars is competitive after you account for the platform taxes you'd face elsewhere. For service-style products or high-value sales, web + Stripe is the best margin.
Performance constraints
All three are HTML/CSS/JS at the end of the day. Practical differences:
- Telegram Mini App: webview on user's device. Older Android phones can be slow. Test on a 2018-era Android.
- Discord Activity: typically run on a desktop client where users have GPUs. Mobile Discord Activities support is more limited.
- Web game: depends entirely on the user's device.
Telegram Mini Apps have the most diverse device base. Optimize for it like you'd optimize a mobile web app — Lighthouse score matters.
Auth flows
Each platform gives you an auth signal you should validate server-side. The pattern is the same: client sends a signed token, server validates it.
// Telegram — verify initData on the server
import crypto from "node:crypto";
function verifyTelegramInitData(initData: string, botToken: string) {
const params = new URLSearchParams(initData);
const hash = params.get("hash");
params.delete("hash");
const dataCheck = [...params.entries()]
.map(([k, v]) => `${k}=${v}`)
.sort()
.join("\n");
const secret = crypto.createHmac("sha256", "WebAppData").update(botToken).digest();
const computed = crypto.createHmac("sha256", secret).update(dataCheck).digest("hex");
return computed === hash;
}Trust the verified identity. Don't trust client-claimed user ids.
Distribution
This is where Telegram pulls away.
- Telegram has aggressive native discovery for mini-apps. The "Apps" tab in Telegram surfaces mini-apps prominently. Apps can go viral in group chats.
- Discord Activities are discoverable inside voice channels but only after a user starts one. Less viral.
- Web games rely entirely on your marketing.
If you want growth, Telegram is the best ecosystem in 2026 for casual mini-apps. The downside: the bar to get noticed has risen as the ecosystem has matured.
When to pick each
| Use case | Platform | |---|---| | Crypto-adjacent tapper / web3 game | Telegram (the entire ecosystem is there) | | Casual game targeting a generic mobile audience | Telegram Mini App | | Multiplayer game played with friends in voice | Discord Activity | | Party game for groups | Discord Activity | | High-effort single-player game | Web (and maybe Steam) | | Subscription-content app | Web (Stripe direct gives the best margin) | | Content-driven utility for an existing audience | Web (you control the funnel) |
Hybrid pattern
A common shipping pattern: build the game as a web app first, wrap it in a Telegram Mini App second. Same codebase, two distribution surfaces. The Telegram WebApp SDK is unobtrusive — you can check window.Telegram?.WebApp and only call it if present.
const inTelegram = typeof window !== "undefined" && Boolean((window as any).Telegram?.WebApp);
if (inTelegram) {
(window as any).Telegram.WebApp.ready();
(window as any).Telegram.WebApp.expand();
}We've shipped this pattern. It works. The Telegram-specific affordances (Stars payment, native back button) get conditional code paths.
Building a game or mini-app?
We've shipped Telegram Mini Apps, Discord Activities, and web games — and we know which platform fits which idea.
FAQ
Are Telegram Mini Apps the same as Telegram bots?
A Mini App is launched from a bot. The bot is the entry point; the Mini App is a webview opened via the bot. Most production Mini Apps are paired with a bot for notifications and commands.
Can I monetize a Telegram Mini App without Stars?
Yes — link to Stripe Checkout in your browser. Apple/Google IAP rules apply: if the user is on iOS or Android and buying digital goods, you technically need Stars (Telegram's bridge to IAP). For real-world goods/services, Stripe direct is fine.
What's the user experience like for Discord Activities?
A panel that opens inside a voice channel. Everyone in the channel sees the same activity. Good for multiplayer; awkward for single-player content.
Can I share code between a web game and a Mini App?
Yes. We do it. The Mini App is just your web game with a thin shim. Same Next.js / Vite app, conditional Telegram SDK calls.
How does Telegram Stars payout work?
You connect a Stripe-style payout account in your bot's settings. Telegram pays you on a monthly cadence, minus their cut.
Can I get featured on Telegram?
Yes, through Telegram's editorial team. The process is opaque. Volume + quality + visual polish help. So does paid Telegram Ads.
What languages do Discord Activities support?
Whatever your web app supports. The Discord SDK is JS-only, but your game can be anything that compiles to a browser-runnable bundle.
Are there App Store / Play Store restrictions on these?
Apple specifically has rules about mini-app ecosystems. Telegram has navigated them. Be aware that an iOS-only feature can break if Apple changes a rule. Test on iOS regularly.