JaVaFo: the pairing engine behind the programs

JaVaFo is not a program an organizer opens. It is the component that decides who plays whom - the pairing engine that sits inside tournament software. Knowing that this layer exists explains a lot about why pairings from different programs agree, and why hand-made pairings do not.

What it is

A pairing engine: a piece of software that takes the state of a tournament - who has played whom, with which colours, on how many points - and returns the pairings for the next round according to the FIDE Swiss rules.

  • It implements the Dutch system. The default Swiss pairing rules used at the overwhelming majority of open events.
  • It is certified. Which means its output has been checked against the rules by FIDE's pairings body - the reason organizers can rely on it rather than argue about it.
  • It has no interface worth speaking of. Data goes in as a file, pairings come out as a file. Everything a human sees is provided by the program around it.
  • It is written in Java, hence the name, and it runs anywhere Java runs.

Where it is used

Inside other software, essentially always. An organizer encounters JaVaFo without ever seeing it:

  • In tournament programs. Desktop software calls a pairing engine rather than implementing the rules itself - the rules are long and the certification is the point.
  • In online platforms. Swiss events on chess servers need exactly the same logic.
  • In federation systems. Wherever pairings must be defensible after the fact.
  • As a checking tool. Arbiters occasionally run an engine independently to verify a disputed pairing.

The data format they exchange is TRF, the FIDE standard tournament file - which is why tournament data moves between programs at all.

JaVaFo and bbpPairings

These are the two engines an organizer is likely to hear about, and they solve the same problem in different ways.

JaVaFobbpPairings
LanguageJavaC++
Licenceproprietary, free to useopen source
RulesFIDE DutchFIDE Dutch
Interfacefile in, file outfile in, file out
Typical usedesktop tournament softwareservers and self-hosted tools

Because both implement the same published rules, their pairings agree in the overwhelming majority of positions. Where they differ, it is in situations the rules leave open to more than one legal solution - and either answer is correct.

Being open source, bbpPairings is the usual choice for anything self-hosted, which is why it is the engine behind the pairings in our own tools.

Why an organizer should care

You will never install JaVaFo. What is worth taking away is the layer it represents.

  • Pairings are not a feature of a program. They come from a certified engine, which is why two different programs produce the same pairs from the same data.
  • Hand-made pairings are a different thing entirely. The Dutch rules are long, and any simplified version - «pair the top half against the bottom half and avoid rematches» - drifts from them within two rounds - how a Swiss is structured.
  • A disputed pairing can be checked. If a player insists the pairing is wrong, an engine can be run against the same data - the argument has an answer.
  • Tournament data is portable. Because of the shared TRF format, an event can move between tools instead of being locked into one.

The practical consequence for a club: use something that calls a real engine rather than pairing by hand, whatever the size of the event - running an event in the app.

Correct pairings without the setup

The Vibe Chess app pairs rounds with a certified engine, keeps the standings and computes the tie-breaks - with nothing to install.

Frequently asked questions about JaVaFo

What is JaVaFo?

A pairing engine: software that takes the state of a tournament and returns the next round's pairings according to the FIDE Dutch Swiss rules. It has no real interface - data goes in as a file and pairings come out as a file - and it works inside other tournament programs.

Do I need to install JaVaFo to run a tournament?

No. Organizers never interact with it directly; it is a component inside tournament software and online platforms. What matters is that the tool you use calls a certified engine rather than pairing by hand.

What is the difference between JaVaFo and bbpPairings?

They implement the same published FIDE rules in different languages - Java and C++ - and bbpPairings is open source while JaVaFo is proprietary but free to use. Their pairings agree in almost all positions; where the rules allow more than one legal answer, either is correct.

Why can't I just pair the rounds by hand?

Because the Dutch rules are long and precise, and simplified versions drift from them within two rounds, producing rematches and colour imbalances that players notice. A certified engine also gives you an answer when somebody disputes a pairing.

What is the TRF format?

The FIDE standard file format for tournament data. It is what pairing engines read and write, and it is the reason an event can move between different programs instead of being locked into one.

FreeThe tournament app

A tournament without a paper crosstable

Everything people usually keep in a spreadsheet is already in the app: pairings, points, tie-breaks, round order. Free, with no subscriptions and no cap on the number of players.

  1. 1Set up the event: date, venue, time control
  2. 2Send the link - players register themselves
  3. 3Pair each round with one tap and enter the results
  4. 4Standings and the TRF export are produced automatically
  • Swiss. many players, one evening: four or five rounds are enough
  • Round robin. the fairest format for six to ten players
  • Free meetup. not a tournament, just an evening of chess - who is free and who is playing is visible in the app

More than a bot: the app, FIDE rules and a TRF report

  • The app. Besides the bot there is an app - inside Telegram and simply at vibechess.ru/app: what is on in your city, the player list, a live table, the current round, your profile and game history - everything that is awkward to read as chat messages.
  • Pairings by FIDE rules. Pairings are computed by bbpPairings, an open-source engine implementing the Dutch system: score groups, floats on an odd field, colour alternation, no rematches and no two byes in a row.
  • A TRF report. A finished tournament exports as a single file in the FIDE data exchange format - the one arbiter software and federations accept. Your profile stores the FIDE ID, national federation code, title, sex and date of birth for it.
  • Free. All of the above, with no subscriptions, paid plans or limits on the number of tournaments and players.

Full overview

Missing a feature? Message the developers

The bot is constantly improved based on real tournaments. If you need a feature that isn't there yet, message the developers right inside the bot with the /support command. Many features appeared exactly because organizers asked for them, and useful ideas get added quickly.

What to read next

Software - Swiss-Manager, Vega, Chess-Results. Systems - rounds in a Swiss.