A matching pairs game. Cards start face down. Turn two over: a pair stays up, a mismatch turns back. Find every pair to finish. No timer, no score to beat, and no way to lose. No ads, no tracking, no accounts, no in-app purchases.

openpairs gameplay

Levels

LevelPairs
Very Easy3
Easy6
Medium10
Hard15
Extra Hard21

Cards are never drawn smaller than a set minimum, so a small screen caps the harder levels. The Options screen shows the number of pairs the current screen allows.

Cards show shapes, not words or numbers. Pairs match by shape, so colour is never needed to tell them apart.

How it is built

The rules and the board layout are platform-independent C, covered by unit tests that need no window. Drawing, input, and audio go through raylib 6.0 on every platform except iOS, which has a Metal and UIKit backend with no raylib. There are no asset files: the card faces are drawn shapes, the sounds are synthesized at startup, and the typeface is embedded.

Layout

One layout for every screen. The grid is sized to the window each frame, so it works in both orientations on phones and tablets, and rotating re-fits the same board without reshuffling it.

Controls

Mouse and keyboard, on desktop and desktop browsers:

InputAction
Click a cardTurn it over
Arrow keysMove the highlight
Enter / SpaceTurn over the highlighted card
EscapeBack to the menu, game stays resumable
Alt+EnterToggle fullscreen
Up / Down, Enter / SpaceMenu navigation; Left / Right change the level in Options

Touch, on iOS, Android, and mobile browsers:

GestureAction
Tap a cardTurn it over
Tap above the cardsBack to the menu, game stays resumable
Two-finger tapBack to the menu
Tap a menu rowChoose it

In the browser

The same C compiled to WebAssembly. Play it here. Nothing to install.

Download

Every push to main cuts a release with builds for Linux, macOS, Windows, Android (APK), iOS, and the browser. Source is on GitHub under MIT; the README has the build instructions.

On iOS it will be on the App Store: free, iPhone and iPad, iOS 15 or later. The build is with Apple and pending review. The .ipa attached to the release is the App Store build and will not sideload. Android is not on Google Play; install the APK directly.

Download openpairs on the App Store