Skip to content

Reference Implementations

These are reference implementations to showcase the scope of ElectionGuard. These repos can be seen as singular components or parts of the broader solution to fully verify an election.


A thin stateless API wrapping electionguard-python to perform ballot encryption, casting, spoiling, and tallying.

Source | Docker | Documentation



The following repositories are considered deprecated and are for research purposes not development. For active development, please look at non-archived section.

Admin Device

An application used to administer ElectionGuard election processes, including key generation, trustee provisioning, and post-election tallying, partial decryptions, and zero-knowledge proofs.


Ballot Box

Used to scan ballots to generate lists of cast and spoiled ballots in an election; used in tallying to finalize ballot operations (cast or spoil, etc.) for publishing results.


Ballot Marking Device

Working instance of ballot marking device (BMD). Built by VotingWorks in consultation with the Center for Civic Design, this front-end provides an interface for a voter to complete and print a ballot which, in an end-to-end verifiable use case, would be accompanied by a printed tracking ID. This BMD front-end is provided as one, potential implementation.


Tracking Site

An application that demonstrates publication of ElectionGuard election artifacts to a public website to enable verification ID lookup, downloadable zip files of the election result (for third-party verifiers), and election results summaries.



A verifier application is used to perform an external, independent verification of an election tally. This repository contains a reference implementation of a verifier built against the ElectionGuard specifications. This is not meant to be the only verifier application, but rather an example. This library should be used in tandem with the technical specifications and usage guidelines contained in the specifications.


Community Verifiers