Open-source election counting
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
RunasSudo 414a1482c3
Implement dynamic dispatch for different number types
1 year ago
docs Update terminology and remove "stratify (floor)" support 2 years ago
html Update terminology and remove "stratify (floor)" support 2 years ago
src Implement dynamic dispatch for different number types 1 year ago
tests Update terminology and remove "stratify (floor)" support 2 years ago
.gitignore Use Asyncify to process ties in web UI 2 years ago
COPYING Initial commit 2 years ago
Cargo.lock Return Result from CSP parse_reader, better error messages 1 year ago
Cargo.toml Allow opting out of building default wasm bindings 1 year ago Implement support for equal rankings 2 years ago Implement constraint matrix logic and test case 2 years ago Don't reapply wasm-bindgen/wasm-opt if no changes 2 years ago More work on unit/integration tests 2 years ago Add code coverage calculation 2 years ago
test.csp Add subcommand for BLT/CSP file conversion 2 years ago


OpenTally is an application for counting various preferential voting elections, with an academic focus, and emphasis on configurability.

OpenTally may be used in a number of different ways:

  • as an online web application, no installation or special software required
  • as a standalone command line application
  • as a Rust library within another application


OpenTally accepts data in the BLT file format, and can count votes using:

OpenTally is highly customisable, including options for:

  • different quotas and quota rules (e.g. exact Droop, Hare)
  • calculations using fixed-point arithmetic, guarded fixed-point (quasi-exact) or exact rational numbers
  • different tie breaking rules (backwards, random, manual) with auditable deterministic random number generation
  • multiple constraints (e.g. affirmative action rules)
  • equal rankings

Online usage

After preparing the BLT file, open the web UI. Select the BLT file, and click Count. OpenTally will count the election and display the results in a count sheet.

By clicking Show advanced options, you can customise the options used for the count. A detailed explanation of the various options can be found here.

Once the count is complete, you can click Print result to generate a printable result report.

Command line usage

OpenTally may also be invoked as a command line application. Run ./opentally --help to view help.

For example, run ./opentally stv path/to/blt_file.blt --ties backwards random --random-seed foobar.