Observatório
do Voto
INDEPENDENT RESEARCH · PUBLIC DATA

More context.
Better questions.
Open data.

A look at how Brazilian elections work. Explore operational indicators, compare results and see the limits of each analysis.

Your contribution helps improve the hardware and expand data processing. Voluntary support, no minimum amount.

EDITION OF 2026-10-242022 — 2026

Charts and PDF documents are in Portuguese; this page explains them in English.

SUPPORT THE RESEARCH · PIX

Help expand
the next study.

Voluntary contribution, no minimum amount, used to improve the hardware and data-processing capacity. Goal for improvements: R$ 5.000. Pix is Brazil's instant payment system.

PIX KEY (RANDOM)4cc4708e-e291-4012-ab41-3c67eab901c9

Pix shows the account holder: Leandro de Almeida Miguel. Check the recipient in your banking app before confirming. Contributing is optional; access to data and documents is free.

Pix QR code provided by the project lead. Recipient: Leandro de Almeida Miguel.
Point your banking app's camera at the QR code
i

Transparency from the start. Results are from the edition of 2026-10-24, revised after an external review (see the change log in the technical document, in Portuguese). Indicators do not prove irregularities and do not reveal how late or manually enabled voters voted.

See limitations ↗
11 statesCovered by the study
3 years2022, 2024 and 2026 · five rounds
385 thousandPolling sections in the 2026 first round
29,032Polling places with flagged behaviour analysed
01 / EXPLORE

Numbers need
context.

Pick an election round and examine the indicators of the current edition. Operational categories may overlap.

OPERATIONAL INDICATORS

—

EDITION 2026-10-24
Eligible sections
With some flag
Share flagged
Late voting or late closing
Manual voter enablement above the defined thresholds
0Scale relative to the largest indicator of the round
MAIN RESULT · SAME BUILDING (3 OR MORE NEIGHBOURING SECTIONS WITHOUT FLAGS)
Flagged sections comparable within the building
Above the thresholdunflagged:
Of those, in favour of side Aunflagged:

Side A = PT (president) or the leading mayoral candidate in the municipality. "Above the threshold" = an absolute difference of 5 percentage points or more that also exceeds the normal variation between rooms of the same building (|z| ≥ 2). Another flagged sections have no comparable neighbour and are compared with their municipality, separately (see the technical document).

A flag means the section reached one of the operational thresholds defined in the study. It does not reveal the choice of anyone who voted late or was enabled manually.
01b / LOOK UP POLLING PLACES

Find a polling
building.

Choose a state and type part of the municipality name, the polling-place name or the electoral zone number. The list shows polling places with flagged behaviour in at least one election, with observation priority, points and sections to check. Codes and names are the official ones from the TSE (Brazil's electoral court); places without a registered name are shown as such.

Choose a state to start.

MunicipalityZonePlacePlace namePriorityPointsResult signalFlagged sectionsRec. 2+Pres. dif.DirectionSections to checkManual enablements 2026 R1 (unassoc.)Field kit

Manual enablements 2026 R1: voters enabled without biometrics in the 2026 first round, summed over all sections of the building; in brackets, how many and what share were authorised by a fingerprint that the voting machine does not associate with a registered poll worker. Reference: 39% in a random sample of 5,000 sections. Values above that usually mean a poll worker whose fingerprint was not registered at opening: a traceability gap, not an improper vote. Computed for high-priority polling places; the field kit (PDF, in Portuguese) lists the sections to check and the observation steps for election day.

02 / CHARTS

Twelve charts,
each with "how to read".

The same charts as in the chart notebook (labels in Portuguese). Click to enlarge. The numbers come from the files in the Open data section.

03 / HOW TO READ

An observation.
Not an accusation.

The study combines operational records with aggregated results per polling section. The aim is to raise verifiable questions and support further observation. The score of each polling place is an order of priority for observation, not a probability of irregularity.

Read the technical document (Portuguese) ↗
01

Public sources

Urn tally reports (BU), voting-machine logs, machine replacement records and voter-profile data, from the TSE Open Data Portal.

02

Explicit references

The main result compares each section with its neighbours in the same building. Sections without a comparable neighbour are compared with their municipality and kept separate, because the base rate there is different.

03

Limits in plain sight

Queues, biometrics, infrastructure and the make-up of the electorate can explain the differences. Association does not establish cause. How late voters voted is unknown.

04 / LIBRARY

Read. Check. Question.

Documents to follow the reasoning and assess the results, in Portuguese. Edition of 2026-10-24.

05 / OPEN DATA

The analysis doesn't
have to end here.

Organised datasets to query, reproduce and propose improvements without repeating the whole collection. CSV files use a semicolon separator and a comma as the decimal mark; column names are in Portuguese and a field dictionary is included. Everything derives from public TSE data and is licensed CC BY 4.0: use, adapt and redistribute citing the source and keeping the notice that a flag is not an accusation.

Download summary by election ↧

Code and reproduction: https://github.com/Leandro-VPN/observatorio-do-voto. The raw data (urn tally reports, voting-machine logs, machine records and voter profile) are public at the TSE and are downloaded by the repository scripts.

CSV

Summary by election and round

Aggregated indicators by comparison level

2 KB↧
CSV

Comparison by level

Flagged × unflagged, by election and level (place / few pairs / municipality)

2 KB↧
CSV

Mayor × president, same sections

Rates with denominators; see also pres-x-pref-mesmas-secoes.csv (McNemar)

1 KB↧
CSV

Mayor × president, strict comparison

Same sections flagged for both offices; McNemar test

0 KB↧
CSV

Conditional recurrence

Probability of repeating the behaviour across elections, among sections present in both

0 KB↧
CSV

Direction tests by permutation

Two shuffling schemes, null quantiles, p and q

6 KB↧
CSV

Coverage and indicators by election

Sections, logs, votes after 5 p.m., manual sequences, counts per indicator

1 KB↧
CSV

Field dictionary

By file and column: type, % missing, example and description (in Portuguese)

78 KB↧
CSV

Methodological glossary

Definitions of behaviour, comparison, threshold, scoring and priority (in Portuguese)

8 KB↧
MD

How to use the data

File format and sample DuckDB queries, including joins that do not double-count turnout (in Portuguese)

2 KB↧
CSV

Field kit: sections of high-priority polling places

One row per section: last vote and closing history, manual enablements by type (2026 R1), what to observe and blank columns for notes on the day

1,0 MB↧
ZIP

Scan by polling place

Places with score and reasons, 2026 R2 priority, history by section, sections by election · GitHub Release dados-2026-10-24-r2

16,1 MB↧
ZIP

Observation map 2026 R2

Places, checklist per section, zones; general and per-state PDF and Excel · GitHub Release dados-2026-10-24-r2

6,1 MB↧
ZIP

Scan spreadsheets

VARREDURA_LOCAIS.xlsx and LOCAIS_<UF>.xlsx · GitHub Release dados-2026-10-24-r2

83,1 MB↧
PARQUET

Indicators per section · Presidential · 2026 · 1st round

One row per section: BU, log, profile, indicators, side A/B · GitHub Release dados-2026-10-24-r2

28,3 MB↧
PARQUET

Indicators per section · Presidential · 2022 · 1st round

One row per section: BU, log, profile, indicators, side A/B · GitHub Release dados-2026-10-24-r2

27,8 MB↧
PARQUET

Indicators per section · Presidential · 2022 · 2nd round

One row per section: BU, log, profile, indicators, side A/B · GitHub Release dados-2026-10-24-r2

25,2 MB↧
PARQUET

Indicators per section · Municipal · 2024 · 1st round

One row per section: BU, log, profile, indicators, side A/B · GitHub Release dados-2026-10-24-r2

26,7 MB↧
PARQUET

Indicators per section · Municipal · 2024 · 2nd round

One row per section: BU, log, profile, indicators, side A/B · GitHub Release dados-2026-10-24-r2

5,6 MB↧
ZIP

Editorial package of the edition

Everything the site generator reads (CSVs, PDFs, charts); restore with scripts/restore_edicao.py · GitHub Release dados-2026-10-24-r2

18,6 MB↧
JSON

Release manifest

SHA-256 of each package, parameters, inputs and producer code of the edition

6 KB↧
REL

All packages of the edition

Release page on GitHub, with checksums and notes

↗
INDEPENDENT RESEARCH

Help expand
the next study.

Voluntary support to improve the hardware and processing capacity. Goal for improvements: R$ 5.000. No minimum amount.

VOLUNTARY SUPPORT

More capacity.
More possibilities.

Contributions go to hardware improvements to process and expand the studies. Goal for improvements: R$ 5.000.

Show QR code and Pix key

Pix shows the account holder. Check the recipient in your banking app before confirming any payment.

Pix QR code provided by the project lead. Recipient: Leandro de Almeida Miguel.

Contributing is optional. Access to documents and data is free.