Advanced online election counting

Count instant runoff and single transferable vote elections for free, no downloads or sign-up required

Screenshot of OpenTally

Key features

Runs in your browser

No downloads or sign-ups are required. OpenTally counts are computed entirely inside your browser, and no data ever leaves your computer.

Wide range of STV systems

OpenTally supports Gregory (inclusive and exclusive, weighted and unweighted), Meek and Wright variants of the single transferable vote.

Support for arbitrary constraints

OpenTally is the only publicly available election counting software to support arbitrary combinations of constraints, such as gender quotas and other affirmative action requirements.

Free and open source

Source code for OpenTally is publicly available under the GNU AGPLv3.

From our blog

Latest news and posts from the OpenTally blog

Dev Log
Parcels? Subparcels? Not just for STV hand counts!

Single transferable vote rules designed for hand-counting often contain references to ‘parcels’ (or ‘bundles’ or ‘batches’), ‘further parcels’ and sometimes even ‘subparcels’.

For example, consider the 4th stage of the ERS97 model election. 107 of Glazier's and Wright's ballot papers are aggregated according to…

Dev Log
Implementing a BLT parser by hand in Rust (vs pest and combine)

OpenTally is open-source software which can count single transferable vote elections specified using the BLT file format.

Earlier this month, I replaced OpenTally's previous naive string-manipulation-based BLT parser with one using pest. A new parser was necessary to support extensions to the BLT

Dev Log
Asyncify with vanilla JS/WebAssembly (wasm-bindgen compatible)

WebAssembly is a technology for executing compiled programs in the web browser at near-native speeds. However, it has a number of current limitations, including that it does not support coroutines/asynchronicity.

In OpenTally, WebAssembly is used to run code for counting an election. This…