Skip to content

Data Format

ElectionGuard expects data to be formatted in a particular way. The expectation is to keep this format versioned alongside the specification. The data format will be defined here to indicate to developers what they should be expecting.

Keep in mind that not all serialized files should be public. The election record includes the list of all data formats that should be public. [Sample data][sample-data] for the election is also available for developers. This will include both what is in the Election Record, but also some private data only available for testing.

Schema Version 0.95.0

Currently, JSON is used as the primary serialization format of the artifacts from an election. These are JSON schema files that can be used to verify the schema of the setup files like the manifest pre-election and the election record files post-election. This represents the full list of items that can be serialized / deserialized, but not all elections will use every file type.

Work in Progress

This is a work in progress. Feel free to contribute.


  • Manifest / Manifest - Election manifest
  • Context / CiphertextElectionContext - Context for encryption for specific election
  • Constants / ElectionConstants- Constants of election
  • Encryption Device / EncryptionDevice - Encryption device information



  • Ballot / PlaintextBallot - Plaintext ballot
  • [Compact Ballot][compact_ballot] / CompactBallot - Compact ballot
  • Encrypted Ballot / CiphertextBallot - Encrypted ballot
  • Submitted Ballot / SubmittedBallot - Submitted cast or spoiled ballot


  • Tally / PlaintextTally - Plaintext tally
  • Encrypted Tally / PublishedCiphertextTally - Encrypted tally