Euchre Game Notation (.egn) and Euchre Match Notation (.emn) are platform-agnostic, human-readable, and machine-optimized open standards designed to record individual games and complete multi-game match series.
{
"fileType": "Euchre Game Notation",
"version": "1.6",
"metadata": {
"title": "WEC Finals",
"players": ["Alice", "Bob", "Cindy", "David"],
"ruleset": { "std": true }
},
"deals": [
{
"dealNumber": 0,
"initialState": {
"dealer": 3,
"upCard": "Jd"
},
"phases": [
{
"type": "EUCHRE_BIDDING",
"calls": ["Pass", "Pass", "Order"]
}
]
}
]
}
The Euchre ecosystem has historically suffered from fragmentation. EGN & EMN establish a common language for players, developers, and platforms.
Different digital Euchre sites use custom database rows or raw log configurations. EGN & EMN act as a bridge, allowing games and match series played on any client to be exported, shared, and evaluated on a unified engine.
EGN isolates the chronological facts of the game from internal application representations. A parser can load the format independently of specific rendering frameworks or proprietary state management structures.
By eliminating redundant state data, EGN compresses entire games into an incredibly tiny memory footprint. This makes massive databases of historical games and tournament statistics highly accessible and cheap to host.
EGN & EMN are built on a simple rule: store only the raw, unpredictable actions of a game or match, and let the parser calculate the rest.
Unlike verbose database schemas that duplicate real-time player points, trick counts, or whose turn it is to lead, EGN stores four foundational pieces of information:
Additional metadata items are also supported for:
By relying on a deterministic rules engine, parsers reconstruct the exact game state dynamically. This guarantees 100% data integrity while stripping out unnecessary data bloating.
Contains environment, calls, card drops, rulesets, and player registries.
Applies standard rules, handles Left Bower, computes winning cards.
Calculates trick winners, scores, led suits, and player turn orders.
Quick guide to the EGN v1.5 / EMN v1.2 vocabulary and standard card representations. View the JSON schemas on GitHub.
Cards are written as 2-character strings combining Rank (Capital letter) and Suit (Lowercase letter). Special characters support edge cases:
| Format | Description | Example |
|---|---|---|
[Rank][Suit] |
Standard card (9s, Tens, J, Q, K, A) | As (Ace of Spades), 9h (9 of Hearts) |
N[Suit] |
Alternative notation for 9 | Nc (9 of Clubs) |
R or L |
Explicit Right or Left Bower markers | R (Right Bower), L (Left Bower) |
B |
Joker / Benny (if ruleset enabled) | B (Best Bower) |
Xx |
Unknown rank/suit (hidden data) | Xc (Unknown Club), Xx (Unknown card) |
Decisions are mapped sequentially in the bidding phases. Standard calls include:
| Call | Meaning | Description |
|---|---|---|
"Pass" |
Pass | Player passes action. |
"Order" |
Order Up / Pick Up | Orders dealer to pick up up-card (Round 1). |
"s", "h", "d", "c" |
Suit Bid | Calls Spades, Hearts, Diamonds, or Clubs (Round 2). |
"n" |
No Trump | Calls No Trump (if ruleset allows). |
"x" |
Unknown Call | Used for incomplete or partial logging. |
EGN supports regional and local variations through the ruleset metadata object. This lets engine
parsers validate actions accordingly:
9 for 24-card deck, 7 for 32-card
deck).
10).
"LEFT_OF_DEALER" or "LEFT_OF_LONER".
B) as the highest trump card.
"n") in Round 2.
EMN wraps multiple EGN games into a single .emn match file, standardizing match progression
formats (e.g. Best-of-N, Target Score), centralized player registries to track statistics across games, and
team seat rotations or player substitutions.
EGN & EMN support multiple formats to fit different application demands, from human debugging to production network transfer.
Highly readable, structured, and easy to edit. Perfect for single game databases and multi-game match histories shared on GitHub repositories.
Replaces verbose JSON arrays with base64URL bitpacked strings. Encodes bids, cards, annotations, and matches (.emnb) with automatic deal compression.
Serialized binary format powered by Google Protobuf schemas. Provides strong typing, speed, and compatibility for enterprise backend integration.
egn-convert & emn-match-combineConvert single games, or combine multiple games into a unified match (.emn) and extract them using our Node CLI utilities.
# Install global library
npm install -g euchre-game-notation
# Convert EGN JSON to condensed binary bitpack
egn-convert game.egn game.egnb
# Combine multiple EGN games into a single EMN match file
emn-match-combine game1.egn game2.egn -o series.emn
# Extract individual EGN games back out from an EMN match file
emn-match-extract series.emn -o ./extracted_games
NextSuit Labs develops a suite of companion applications leveraging the EGN and EMN standards to analyze, render, and capture Euchre games and matches.
A desktop-grade analysis web app. Allows users to load EGN and EMN files, scrub through plays step-by-step, view annotations, switch perspective focus to any player's seat, analyze alternative branching gameplay lines, and navigate full match series.
React + ViteManual loggers built for real-time game and match logging. Provides button-based entry for live recording, saving directly to clean EGN and EMN formats without the need for manual code formatting.
React + TypeScriptHTML5 Canvas-based graphic overlay system. Features timing controls and studio settings. Headless Puppeteer runner captures the canvas overlay dynamically, injecting real-time game cards into broadcast streams.
Canvas2D + Puppeteer