Ninehole app icon — a cream playing card tilted on dark green felt, carrying a bold black 9 and a yellow golf flag standing in its hole

▶ COMING SOON  //  iPHONE + iPAD + MAC + ANDROID

Ninehole

Nine cards. Nine holes.
Lowest score wins.

Nine-card golf for a table of two to sixteen. Everybody brings their own screen — a phone, a tablet, a laptop — one of them hosts the table, and any empty seat is filled by a bot. You get nine cards in a three-by-three grid, all face down, and you turn two of them over to start. On your turn you draw the top of the deck or take the discard, then either swap it into your grid or throw it away and flip something. A queen is worth 25, a king is worth nothing, and a joker is worth −2. Three of a kind down a column cancels the whole column to zero. The first player to get all nine face up goes out, everyone else gets one last turn, and a knocker who isn't lowest takes +50 for the trouble.

PRIVACY POLICY

Both store buttons are dead on purpose. Ninehole is not on the App Store and not on Google Play yet, so there is nothing behind them to link to — they become real links the day it is live, and not one day earlier. No date, because we do not have one to keep. What we can tell you now is the shape: paid once — and one purchase covers iPhone, iPad and Mac. No ads, no in-app purchases, no account, no sign-in.

▶ THE LOOP

HOW IT PLAYS

A hole is nine cards; a game is as many holes as the host sets — one, three, six, nine or eighteen of them. One person opens a table, everyone else joins it, and the cards are dealt. Nobody shuffles, nobody argues about whether a jack is ten, and nobody has to remember whose turn it is.

▶ THE ARRANGEMENT

ONE DEVICE OWNS THE GAME

No server of ours. There isn't one to have.

Ninehole is self-hosted. One player's device holds the only real deck, runs every rule, and sends each of the other seats a version of the table with every face-down card blanked out before it leaves. That masking is not a courtesy — it is the only shape the game has. Nobody can see a face-down card, and that includes you, and that includes the host.

Online play is the newest and least-travelled part of this game. Solo and same-Wi-Fi tables are the ones we play, and they are the ones we would tell you to buy it for.

▶ THE HONEST BIT

ONE PRICE, FOREVER

Ninehole is a premium game and nothing else. No ads. No in-app purchases. No account, no sign-in. No analytics. There is no subscription, no season pass, no currency, no energy meter and no card-back shop — none of those things were built, so none of them can arrive in an update you didn't ask for. You buy it once and own all of it.

We do not print prices here. A figure written on this page goes stale the day a store moves it and nobody notices; the store page you buy from is always current and always right for your territory.

▶ ONE CODEBASE

WHERE IT RUNS

Built with Flutter: one codebase across iOS, iPadOS, macOS, Android and Windows. The rules are one pure-Dart engine that no screen, no bot and no network layer is allowed to second-guess, and the host's device is the one running it — so a phone and a laptop at the same table are reading the same game rather than each keeping its own opinion of it.

▶ ON THE RECORD

IT COLLECTS NOTHING

Ninehole has no account, no sign-in, no server of ours, no analytics and no crash reporter, and there is no advertising or in-app-purchase code in the build at all. Your name, your avatar, your settings, your lifetime stats and the table you are in the middle of are written to your own device's storage and stay there; deleting the app deletes all of it. A solo game or a same-Wi-Fi table sends nothing past your own network. Choosing Online — which you have to do on purpose, on the Host or Join screen — is the one exception, and the privacy page says exactly what reaches Epic Online Services when you do, and what does not. Purchases are handled by the store you bought from; we never see payment details.

READ THE NINEHOLE PRIVACY POLICY

▶ WHERE THE PARTS CAME FROM

CREDITS

Every card, the felt and the app icon are drawn in code — painters and a fragment shader, no imported art. Every sound is synthesized rather than recorded. Type is Lilita One and Nunito, both under the SIL Open Font License, with the licence texts bundled in the app's own licence page. Everything else came off our own line.