valid votes counted · % of uploaded forms passed checks
Reached 25% here · header shows LGAs cleared of 11 needed (two-thirds)
Tap an LGA to drill into its wards, then a ward to see polling units.
Each LGA lead versus the votes still outstanding (forms not uploaded + forms held). A lead smaller than what's still to come is not yet safe.
Only forms passing every blocking check feed the totals. Held forms are excluded until verified — see the Integrity tab.
Tap any reason to list the affected polling units. Blocking checks remove a form from totals; warnings are noted but may still pass.
Turnout (accredited ÷ registered) per uploaded PU. Clean counts cluster at one peak; a second cluster near 100% is the inflation signature.
OpenTally does not count votes. It reads the result forms (EC8A) that INEC itself publishes on its public IReV portal, extracts the numbers, checks them against each other, and adds up only the forms that pass. Every figure traces back to a form you can find on IReV yourself (see verify it yourself below).
We poll IReV on a fixed interval through election night. As each polling unit's EC8A is uploaded, we download the image, record its file size and a SHA-256 fingerprint, and read the vote figures from it using automated vision OCR. We never originate a number — we only re-read what INEC has already made public.
From every EC8A summary box: registered voters, accredited voters, rejected ballots, and total valid votes. From the party rows: each party's votes in figures and in words. Reading both the figure and the written-out words lets us cross-check the two against each other.
sum_mismatch) means the figures don't reconcile — the form is held.figures_words_mismatch). This catches both OCR misreads and altered forms.accredited_mismatch) means ballots are unaccounted for.extraction_failed).A form is auto-pass only if it has zero blocking errors. Blocking errors are: vote-sum mismatch, over-voting, over-accreditation, and unreadable/wrong document. Non-blocking warnings (such as a small file size, later corrected) are noted but do not by themselves remove a form. Only auto-pass forms feed the public totals. Held forms wait for human review before they could ever be included.
Note: tolerance thresholds (e.g. whether a 1–2 ballot accreditation gap is allowed) and the human-review step are operational settings — confirm the exact values against your pipeline before publishing.
Party vote counts match official figures to roughly 97–99% in calibration; registered-voter and rejected-ballot fields are read less reliably. Machine reading can err, which is exactly why every figure links to its source form. We do not publish per-PU numbers as final without review, and we never declare a winner — only INEC does that.
We can't deep-link into IReV, but anyone can confirm a figure independently:
OpenTally is an independent, non-partisan transparency project. We welcome corrections, data queries, and media inquiries. Or email info@mundx.com.
We aim to respond within 24 hours.