MAJI Mahjong School
Taiwanese Mahjong with Friends
Free · In‑App Purchases · Designed for iPad. Not verified for macOS.
Mahjong School — gather your friends, deal a hand
Friends in the room? Everyone plays from their own phone. Friends far away? Open an online room and send them the code. It's proper Taiwanese 16-tile mahjong — flowers, tai scoring, dealer streaks, rounds and winds, all of it.
HOW TO START A TABLE — THREE STEPS
1. Tap "Host" — the first button on the main screen. Your room opens with a 4-character code on it, something like MJ7K
2. Tap "Invite Friends" — the code and a link go straight into Messages or LINE. Friends tap the link and they're seated; reading four characters out loud works just as well
3. Everyone here? Tap "Start" — still short a player? Hand the empty seats to the AI. One person is enough to fill a table
Your friends only have to do one thing: open the app, tap "Join Online Room", and type those four characters. No account, no payment.
THE CODE STAYS PUT
• The room lives on a server, not inside your phone — close the app, step back to the lobby, come back in, and it's still the same code. Your friends arrive where you told them to
• If someone drops mid-game, they come back to the same seat, the same hand and the same chips
• Friends sitting next to you can also walk into the same room through Nearby, over Wi-Fi / Bluetooth
NEW TO MAHJONG? START HERE
• Characters suit printed with Arabic numerals, so tiles are easy to read
• A tutorial that walks you from draw-and-discard to chow, pong and scoring
• Ready-hand hints and live tai estimates; winnings are worked out for you
PROPER TAIWANESE 16-TILE
• Flowers and replacements, kong-on-kong, robbing a kong, last-tile wins
• Dealer streak 2N+1, round and seat winds, East-only / half / full games
• Stakes — set what a base and a tai are worth and see what the hand actually pays
WHAT YOU BUILD OVER TIME
• Levels and avatars — play to unlock combs, scarves and accessories, and build your own chicken
• Hand Collection — special hands you've won are recorded: flush, big three dragons, all honors and more
• Stats — win rate, deal-in rate, self-draws; watch yourself improve
• Replay — still puzzling over that discard? Rewind the whole game and scrub to any hand
• Cloud progress — switch phones or reinstall, and your level, nickname and avatar come back with you
FREE AND PAID
Hosting, joining by code, nearby play, solo play against the AI, stats and the tutorial are all free, with no account required.
• Mahjong School Pro (one-time purchase, Family Sharing) — unlocks house rules: custom tai values and game length. If the host has Pro, the whole table plays by your house rules; nobody else has to buy anything
Mahjong was always meant to be played with other people. Gather a table.
Privacy Policy: https://maji.com.tw/mj/privacy
Terms of Use (EULA): https://www.apple.com/legal/internet-services/itunes/dev/stdeula/
more • The "Unseen tiles" panel now opens by itself at the end of every hand and shows every tile nobody drew — even when someone wins early, you can see where the fourth red dragon was hiding. It shows the last 16 by default; tap to see them all.
• Fixed the hand occasionally being drawn twice after the deal.
• Fixed a freeze (and forced quit) that could happen when returning from the background or bringing up the keyboard.
• Replays now carry the original game number in the watermark, so a bug report can point at the exact hand.
• Steadier online play: other players' chat no longer slows the table down.
1.7.2 21h ago
A fix release.
• Survival mode is capped at three hearts again. Gaining a heart had no ceiling, so a good early run could stack up a dozen of them and become impossible to kill — the board was ranking early luck, not how long you lasted. Winning at full health no longer adds one.
• Because the rule changed, the survival board starts over. Old scores were set without the cap and are not comparable.
• The survival board reads "this week" rather than "today", which is what it has actually been for a while.
• With a keyboard attached (iPad, Mac): the lobby and the claim buttons (pung, chow, win) can be driven from the keyboard.
1.7.1 6d ago
This release is about one thing: until now, the only way to get better was to play more hands. Now there is a puzzle waiting for you every day.
• Daily puzzle — one hand a day, the same one for everyone. After you answer you see what everyone else discarded, what the best discard was, and why yours differs. Want more? Unlimited practice, with puzzles generated from real recorded hands rather than written by hand.
• The first launch deals you in — no manual to read first. You learn as you play. Until you have finished a hand, the lobby stays out of your way; the rest appears once you have played.
• Online games now end after a full round. They used to run on forever. You get a settlement, a window to decide whether to keep the table going, and a ledger that follows you across rounds.
• Play with a keyboard or a controller — on Mac and on iPad with a keyboard attached: arrow keys to pick a tile, Space to discard, H/P/C/K for win, pung, chow and kong, Esc to pass, F1–F8 for emotes. Xbox and PlayStation controllers work too.
• Hand-lettered tile faces — the characters, red dragon, green dragon and the four winds have all been redrawn.
• The lobby has been rearranged — your avatar is now a floating identity key, the actions sit in one column, over an ink-wash background.
• Stats on iPad and Mac is now a scrollable masonry layout; the Mac window keeps a fixed aspect ratio, so it no longer distorts when resized.
Also fixed: a crash when pressing a number key at the table; a purchase bug where tapping "Restore Purchases" left you unable to buy anything afterwards (this affected a lot of people who were trying to pay — sorry); online guests not seeing the end-of-round card; spectator name tags landing on the wrong seat; the round wind stuck on East; a lobby animation that dragged the table down to 15fps; and a stray tile back flashing during the winning animation.
"Restore Purchases" has moved into Settings. It used to sit directly under the buy button, where many people tapped it as if it were part of the flow — and tapping it was what broke the purchase.
Thank you to everyone who sent a report. You can reach us from Settings; we read all of them.
1.7.0 Sep 20
This one fixes a single thing: room codes that die.
• Hosting now runs on a persistent server — A room code is a real table again. The four characters you sent your friends no longer change into a different code just because you stepped back to the lobby and came in again, and the table no longer disappears when the host closes the app. In both cases your friends used to arrive at the code you gave them, find an empty room, and get no error message at all.
• The table survives a deploy — When we update the server, the chips on the table are picked back up. No more everyone re-buying in.
• Nearby now hands you a room code, not a different kind of game — Joining a friend through Nearby connects you to the same table on the same server as typing their code would. It's just another way of finding the number.
• Hosting and joining are free, and the subscription is no longer sold — In the end the subscription gated exactly one thing, a reserved room code, and almost nobody ever saw it. Rather than keep selling something that unclear, we stopped. Existing subscribers are unaffected — the row is still in Settings, and you can manage or cancel from there at any time.
• Replay has its own screen now — Portrait, with a scrubbable timeline and pinch-to-zoom on the tiles. Replay used to be the game replaying itself, so rewinding meant starting over; now stepping either direction is instant.
Also fixed:
— Redeem codes opened the wrong sheet. The App Store said the code was redeemed and Pro never turned on — we hand out offer codes and the app was opening the promo code sheet, so the code was never actually submitted.
— After tapping "Restore Purchases", every purchase for the rest of that app launch failed immediately — and failed in a way indistinguishable from you cancelling it yourself.
— After a reconnect, tapping your own tile did nothing until the game timed you out and played for you. The tile you discarded died with the dropped connection, and both sides believed it had arrived.
— The scoring card credited the dealer's streak bonus to the winner's hand, so the number on the card and the chips pushed across the table told two different stories. The settlement was always right; the number wasn't.
— On an English device, hosting showed Chinese seat labels and waiting-room text.
— The calligraphy on the launch screen was white drawn on white — and it's centred now, too.
— Force-quitting a challenge mid-game didn't count against your attempts, so reopening the app gave you another go. It now ends the same way tapping "Back to Main Menu" does, submitting the real score you'd reached.
Thank you to everyone who sent in a report. You can reach us straight from Settings.
1.6.1 Sep 8
This one solves a single problem: you no longer need to find three other people.
• Quick Match — No room code, and nobody to round up first: one tap and you're seated. The hand starts only when four humans are there — empty seats are never filled with AI, so everyone at your table is a person. The lobby button shows how many are already sitting (N/4), so you know how many are still missing before you tap. You're dealt 200 chips on arrival and the table runs until someone is cleaned out.
• The table no longer dies with the host — Tables now live on a server. Before, the host closing the app took the whole table with them. Now the table stays, and players who arrive one at a time still end up with a full table. Your seat is bound to your identity, so nobody can take it.
• Hosting and joining are free — Anyone can open a 4-character room and anyone can join it, with no purchase and no account. The subscription now sells exactly one thing: a room code that stays yours — pick your four characters, and hosting uses them automatically from then on. Nobody else can take it. One code, given once to the same group of friends.
• The lobby's left column is now a season board — It resets every month, and you can see where you rank and how many players you're ahead of. The old wall — first place taken by one strong player, forever — is gone.
• Challenge mode now resets daily — It used to be three attempts a month, and once they were gone you waited.
• A new phone no longer means starting over — Stats, the hand collection and your saved hands follow you. They were always in the cloud; there just wasn't a way to get them back.
• The AI plays for a hand now — It will go for mixed-suit, all-pungs and seven-pairs. It literally could not win on seven pairs before.
• Matching flowers and your seat-wind triplet light up on the table — The scoring table has explained them all along; the table itself never showed you which tiles were counting.
• There's a countdown between hands — Those 12 seconds used to read as "stuck" rather than "12 seconds left". The odd wait in the middle of a game is fixed too.
• The stats card is now a running balance — A cumulative win/loss curve replaces the win rate in ten-hand blocks, and you can zoom into any stretch of it.
• Two new emotes: smoke bomb and flash bang.
Also fixed: seat-wind triplets scored against the dealer instead of your own seat and matching flowers scored against the wrong wind (two rule sets, each applied to half the table), a 0 shown for tai on the hand you joined mid-game, the 7th and 8th flower tiles labelled the wrong way round, AI opponents reverting to AI-1/2/3, hands older than the 200 most recent never uploading after offline play, and the XP bar drawing outside its card at max level. Tile faces now share one texture — a hundred-odd tiles no longer means a hundred-odd draw calls.
Thank you to everyone who sent in a report. You can reach us straight from Settings.
1.6.0 Sep 3
No new headline feature this time — this one sands down the rough edges the last update left behind.
• Take a phone call, come back, your table is still there — Sending the app to the background and returning used to be read as the whole table dropping, and you got kicked out of the hand. Now returning just re-checks the connection; everyone who was there is still there.
• Twice as fast to the first tile — From tapping start to your first draw: 9.8 seconds down to 5.3. Over a full game that's more than a minute of waiting gone.
• Chow no longer waits for the whole table — It only waits on the players who could actually outrank it. And when someone is claiming a pung, the chow button no longer appears just to be taken away.
• Auto-win now has a "self-draw only" setting — If you're holding out for a self-drawn hand, everything discarded by others is passed automatically instead of asking you tile by tile.
• Find yourself on the leaderboard — The left column now shows where you stand, so you don't scroll from first place looking for your own name. Long nicknames finally fit, too.
• The app speaks up when it can't find nearby tables — A denied local-network permission now says so and offers a one-tap jump to Settings, and tapping a table gives you feedback instead of looking frozen.
• The app is 26.9MB smaller, with a properly licensed typeface on the tile faces.
Also fixed: an occasional miscount of tai at the moment you win, the denominator on the stats page, computer players' names, clipped text on the shareable hand card, and action buttons pushed off screen when there were more than three.
Thank you to everyone who sent in a report. You can reach us straight from Settings.
1.5.1 Aug 21
This update is about getting people to the table — and keeping what you've earned.
• Challenge Mode — One full game, fixed rules, no shortcuts. Play out all four rounds and see where your net tai lands you on the leaderboard.
• Invite links — Open a table, send the link over Messages or LINE, and your friends tap once to land in your room. No more reading room codes out loud. The link's landing page even shows how many players are already waiting (2/4).
• Your progress now lives in the cloud — Level, nickname and avatar are no longer stuck on one phone. Switch devices or delete and reinstall, and you come back as you, with every comb and scarf you unlocked still there.
• Hand Collection — Special hands you've won are recorded. Flush, Big Three Dragons, All Honors… light up the whole book one hand at a time.
• The AI coach is always one tap away — Not sure what to discard? Just ask. The button moved to the bottom-left so it no longer covers the ready-hand indicator, and its reasoning is clearer than before.
• Stakes and tai values — Set what a base and a tai are worth, and "1 base, 3 tai" finally tells you what the hand actually pays.
• See your connection — A live latency readout on the table, so when things lag you can tell whose network is having a bad day.
• Rebuilt for landscape — The main menu and settings are properly landscape now, and the left/right seat plates are vertical, so even a very long nickname stays out of the discard pool.
Also fixed: online games getting slower the longer you played, names showing up as gibberish, not being able to rejoin your own table after leaving mid-game, a leftover wall in the middle of the table, losing a kong when you had two or more, and action buttons getting clipped when there were too many.
Thank you to everyone who sent in a report. You can reach us straight from Settings.
1.5.0 Aug 18
Thank you to every one of our beta testers. Every crash you reported, every "this feels off", every game you played through to the end — the feel of the shuffle, the flower-replacement animation, the scoring details — all of it got sanded down because you kept pointing it out. Thank you, genuinely.
In this version:
• All the AI is free now. The AI opponent, the AI coach, and your personal stats no longer cost anything. Short a player? Don't wait around. Not sure what to discard? Ask the coach. Want to see how much you've improved? Open your stats. Not a cent.
• Pro is now about your house rules. Pro unlocks custom tai scoring (flowers, dealer streaks, flush — every value adjustable to the way your family counts) and game length (one round, half game, or full game). One-time purchase, Family Sharing supported, no subscription, no ads.
• The host's settings apply to the whole table. If you have Pro and you host, your game length applies to everyone at the table — your friends don't need to buy anything.
• Restore Purchases lives in Settings. New phone or fresh install? Same Apple ID, first row of Settings, and it's back. No paying twice.
• The round-wind die is a little smaller, and tapping it now opens the game menu — no more hunting for a long press.
• The game menu has been rebuilt. It used to be one long system list with a dozen options crammed together and checkmarks for toggles. Now it's a two-column panel — this game's stats, the tutorial, and feedback on the left; auto-discard and voice toggles on the right; "New Game" and "Back to Main Menu" set apart at the bottom so you can't fat-finger them.
There's plenty more coming — online play, ranked, a fuller tutorial. If you have ideas or run into trouble, keep telling us.
See you at the table.
1.4.0 Aug 5
• The "Unseen tiles" panel now opens by itself at the end of every hand and shows every tile nobody drew — even when someone wins early, you can see where the fourth red dragon was hiding. It shows the last 16 by default; tap to see them all.
• Fixed the hand occasionally being drawn twice after the deal.
• Fixed a freeze (and forced quit) that could happen when returning from the background or bringing up the keyboard.
• Replays now carry the original game number in the watermark, so a bug report can point at the exact hand.
• Steadier online play: other players' chat no longer slows the table down.
more Version 1.7.2 21h ago
Data Linked to You The following data may be collected and linked to your identity:
Purchases User Content Identifiers Usage Data Diagnostics