ElectionAudits software

The ElectionAudits software project provides open source software and documentation in support of the Principles and Best Practices for Post-Election Audits and the other work of ElectionAudits.org, the nation's clearinghouse for election audit information.

It was used for the first risk-limiting audit in Colorado, as part of the Boulder County 2010 General Election Audit. It was also used for the Boulder County 2008 General Election Audit one of the first risk-sensitive audits. An overview, the audit procedure, and detailed reports and results can be found there. This effort also helped lead to a law to require risk-limiting audits in Colorado by 2014, and the Colorado Risk-Limiting Audit Project (CORLA).

See an example of a Kaplan-Markov audit via the ElectionAudits audit results report at kaplan-example-extra.html. This is based off of Mark Lindeman's nicely worked example at kaplan-example-12x.pdf. The full precinct tabulation report it is based on is at kaplan-example-tabulation.html. I added two significant discrepancies which illustrate situations calling for extra auditing. These show up clearly on the graph at the bottom of the report. I also threw in two small ones at the end to illustrate how Kaplan-Markov handles discrepancies for a distant 3rd-place candidate.

Get more background on the need for auditing, and the rollout of this software at ElectionAudits software - help audit the election!. The "ToDo" file in the latest development version also gives the latest insights into how you can contribute.


ElectionAudits helps with several facets of the task of auditing elections:

The software is written in Python and uses the Django web framework to display results either locally or globally. It is licensed as open source under the "MIT" license.


Major news is published at News and Announcements, which has an Atom/RSS feed.

You can follow development more closely at the project's GitHub site:


That is the place to follow announcements, download releases, file bugs, get the latest revisions of the source code, make contributions, etc.


You can see real election data at the Boulder County 2008 Audit site. That site is a copy of the dynamic pages generated by ElectionAudits.

See also an example of EML 510 output from ElectionAudits. In a browser it will appear in formatted form via an xsl stylesheet. It is a work-in-progress patterned after the California election night data feed (pdf)

What you need

The README file talks about what you need to install and run the software.

The first focus of development was to deal with the "batching" problem for central-count systems. So the software program can parse a series of detailed "cumulative" election reports from the Hart system, one per batch of ballots. It then subtracts one from another and generates the results for each batch in an auditable report.

Here is an example of the "crystalreports" xml format that Hart's Tally software generates, which is one of the input formats ElectionAudits parses. It is a "cumulative" report with totals for each race, and is about a megabyte long.


Here is an example of the comma-separated-values (csv) format that San Mateo county uses, which ElectionAudits can also parse. There is one line per precinct per candidate, with columns for total votes, absentee votes, early votes, and election (in-precinct) votes, among others.


Related work