Mah - Mahjong Solitaire
June 26, 2026 · View on GitHub
Mah - Mahjong Solitaire
The original open-source Mahjong Solitaire game powering many Mahjong experiences on the web.
Completely free. No ads. No tracking. No cloud.
🀄 Play now in your browser
✨ Features
🧩 84 built-in boards - from classic layouts like Turtle and Dragon to unique custom designs
🌱 Random seed based board generator - enter or generate a custom seed to share or replay a specific randomly generated board for endless replayability
🎨 13 tile image sets - switch between beautiful tile designs in light and dark styles
🏆 3 difficulty levels for features and boards generation - from relaxed casual play to expert-level challenge
🖼️ Massive visual customization - 8 image backgrounds, 375 pattern backgrounds, light/dark mode, 14 color themes
🧘 Zen mode - hide the UI chrome for a clean, distraction-free playing experience
⏱️ Optional game timer - show or hide the game clock to suit your play style
🎉 Victory confetti - optional celebratory confetti burst when you clear the board
💾 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
🏛️ Explore More Boards
Mahjong Solitaire Layout Museum
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.
📥 Download
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, 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.app
The 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
🙏 Acknowledgements
Mah's art is built on open-source creative work. See the credits for artwork, backgrounds, sounds, icons and fonts.
🐳 Docker
Run Mah with a single command:
docker run -d -p 8080:80 ffalt/mah
Then open http://localhost:8080.
Or use Docker Compose:
services:
mah:
image: ffalt/mah
ports:
- "8080:80"
For building your own docker container, see resources/docker.
🛠️ Development
Build Config
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
Quick Start
npm run start # Dev server → http://localhost:4200/
npm run build:prod # Production build → dist/
npm run test # Run unit tests

