The original open-source Mahjong Solitaire game powering many Mahjong experiences on the web.
Completely free. No ads. No tracking. No cloud.
🧩 84 built-in boards plus a random board generator for endless replayability
🎨 13 tile image sets - switch between beautiful tile designs in light and dark styles
🖼️ Massive visual customization - 8 image backgrounds, 375 pattern backgrounds, light/dark mode, 14 color themes
🏆 3 difficulty levels - from relaxed casual play to expert-level challenge
💾 Auto-save - your game state and best times are saved locally in your browser, never to the cloud
📱 Cross-platform - runs in the browser, on desktop (macOS, Windows, Linux), and on Android
🌍 37 languages - English, العربية, বাংলা, Català, Čeština, Dansk, Deutsch, Ελληνικά, Español, Euskara, فارسی, Suomi, Filipino, Français, हिन्दी, Magyar, Bahasa Indonesia, Italiano, 日本語, 한국어, Bahasa Melayu, Nederlands, Norsk, Polski, Português, Română, Русский, Svenska, Kiswahili, தமிழ், తెలుగు, ไทย, Türkçe, Українська, اردو, Tiếng Việt, 中文
Want to help translate? Contribute on Crowdin
Browse a curated archive of custom board layouts created by the Kyodai Mahjongg community. Click any layout and select "Play it with Mah" to import it directly into your game.
Play instantly in the browser, or grab a native build for your platform:
| Platform | Available | |
|---|---|---|
| 🌐 | Web | Play now |
| 🍎 | macOS | .dmg installer |
| 🪟 | Windows | .msi / .exe installer |
| 🐧 | Linux | .deb / .AppImage |
| 🤖 | Android | .apk |
Important
Unsigned apps/installers (macOS and Windows)
The macOS and Windows builds are not yet code-signed. Your OS may show a warning the first time you run the app - this is normal for unsigned software and does not mean the files are malicious. If you prefer to skip these warnings, just play in your browser instead.
🍎 macOS - bypassing Gatekeeper
Apple's Gatekeeper blocks apps from unidentified developers. You may see a message claiming the app is damaged - this is not true.
Remove the quarantine attribute to fix it:
xattr -dr com.apple.quarantine /Applications/mah.appThe exact steps may vary by macOS version - search for instructions specific to yours.
🪟 Windows - bypassing SmartScreen
Microsoft Defender SmartScreen shows a warning for unsigned apps.
Click "More info" → "Run anyway" to proceed.
🤖 Android - installing from APK
Android blocks installs from unknown sources by default. Go to Settings → Security (or Apps) and enable Unknown Sources.
Most modern phones use arm64. Try these APK variants in order:
android-mah-x_y_z-arm64.apkandroid-mah-x_y_z-arm.apkandroid-mah-x_y_z-x86_64.apkandroid-mah-x_y_z-x86.apk
Mah's art is built on open-source creative work. See the credits for artwork, backgrounds, sounds, and fonts.
The default game name is "Mah Jong". To change it:
- Copy
custom-build-config.json.disttocustom-build-config.json - Edit the name in
custom-build-config.jsonto your desired app name
npm run start # Dev server → http://localhost:4200/
npm run build:prod # Production build → dist/
npm run test # Run unit tests
