Skip to Content

bbpPairings Engine

SwissSys uses the bbpPairings engine for FIDE-rated tournaments. It is the official FIDE-endorsed pairing program and implements the Dutch system pairing rules from the FIDE Handbook.

Source and Licensing

bbpPairings is developed by Bierema-Boyz Programming and is available at github.com/BieremaBoyzProgramming/bbpPairings .

It is licensed under the GPL and is distributed with SwissSys as an aggregate. See Help → About for full licensing, copyright, and disclaimer information. Source code is included in the file bbpPairings Source.zip.

How SwissSys Uses bbpPairings

SwissSys does not implement FIDE pairing logic internally. Instead it:

  1. Exports a TRF file (PrePair.trf) — Writes player data, results, and restrictions to a PrePair.trf file
  2. Runs bbpPairings — Executes bbpPairings.exe --dutch "PrePair.trf" -p and reads back the pairing list
  3. Imports the pairings — Converts the engine output into SwissSys board assignments

What Affects FIDE Pairings

Only data exported in the TRF file affects bbpPairings results:

ExportedEffect
Player data, results, ratingsCore input for Dutch system
Hard restrictions (team, club, city, state, forbidden pairs)Exported as XXP lines — players listed cannot be paired
Bye value (BBU line)Point value of the pairing-allocated bye
Final round number (XXR line)Affects last-round pairing rules
Acceleration (XXA lines)Fictitious points for FIDE Baku system

USCF-only settings (color variation rules, bye strictness, random pairings, etc.) are not exported and have no effect on FIDE pairings. bbpPairings implements its own color and bye rules per the FIDE Handbook.

Inspecting the Engine’s Input and Output

From the pair chart, go to Tools → Inspect FIDE engine input/output to view:

  • Input — The exact TRF file sent to bbpPairings
  • Output — The pairing list returned by the engine

This is useful for verifying that player data, restrictions, and acceleration values were exported correctly.

If bbpPairings Fails

If the engine returns no valid pairings (output starts with 0), SwissSys will prompt you to either use the USCF engine or pair manually.

Common causes include too many restrictions making a legal pairing impossible.

See something that needs updating? .