Screenshot: Nomination form
Screenshot: Voting form

The Election module enables you to run elections easily, securely, and effectively on a Drupal website.

It provides a framework for developers to integrate different types of election. Three types are included: 'referendums', 'STV elections', and 'first-past-the-post elections'. Other types can be provided by other modules.


  • A very flexible system of elections, posts, and candidates, which are all fieldable entities.
  • A candidate nominations system. Administrators can approve or reject nominations, and define customizable fields and display settings for candidates.
  • In STV elections, a ranked-choice voting form designed for clarity and usability.
  • Voter eligibility conditions. You can easily limit eligibility (voting access) by the users' roles, or you can define Rules to deny voting access. Additionally, more complex conditions can be defined in code, with the help of the Election Condition submodule.
  • The option to export and download ballot files containing the votes cast in an STV election, packaged in a ZIP file. You can also export ballot files on the command line using Drush.
  • A statistics page.
  • Extensive integration with the powerful Views and Rules modules.
  • Automated tests.
  • and more...

Vote counting options

The following modules integrate third-party counting tools with Election, to provide STV and other ranked-choice counting methods:

Alternatively, you can use the Election Export module (bundled with Election) to export ballot files (.blt), which you can then run through OpenSTV, Droop, or other counting tools on your desktop.

Similar modules

The Advanced Poll (D7) module can also be used to run elections. Voting API also handles votes.


Election was developed by Patrick Dawkins at UCLU, the students' union for University College London. This module powers UCLU's elections and referendums.

Supporting organizations: 
Initial development
Development, testing, and maintenance

Project information