ELECTION CASE · BR-PRES-2026 · OBSERVED TSE DATA
Brazil's 2026 presidential election: what the TSE files support.
Results, turnout, margin, swing and counting, read from the official files of Brazil's Superior Electoral Court (TSE). Every number states whether it is observed, derived or still unknown, and which file it came from.
- Most voted, Round 2, as % of valid votes
- 51.79%
- LULA (PT) · 64,256,232 votes
- Observed Source
tse-6258-br-u· observed at - Margin over second place, Round 2
- 3.57 pp
- 4,430,191 votes · percentage points of valid votes
- Derived formula in section 3
- National swing between rounds
- +2.80 pp
- share of LULA between the two finalists, round 1 to round 2
- Derived formula in section 4
Table CSVs: results · turnout · swing by state
How to read this page
observed, derived and unknown
This case uses no synthetic data and no opinion polls. The chain is always the same: official file, observation, calculation, claim. Never file straight to "truth".
- Observed
- A number read from an official TSE file. The file has its URL, download date and SHA-256 recorded in the manifest, and the hash is checked again every time this page is generated.
- Derived
- A calculation on observed numbers, such as percentages, margin, swing and the cumulative counting share. The formula is shown right below each table.
- Unknown
- What no collected file supports yet: milestones without a source, events cited without a primary document, or metrics that need data not published in the collected files. Each item states the reason in section 10.
No number on this page was typed by hand: the page is generated at publication from the TSE files versioned in the Evidence repository. The text gives no opinion on candidates, parties or institutions, makes no forecast and assigns no aggregate confidence score. Claims go into a ledger with a state (confirmed, disputed, unsupported or unknown) and with the evidence behind them.
To check, download the manifest and compare the SHA-256 of each file with the file the TSE publishes at the same URL. The dossier carries the same chain in Markdown, in Portuguese.
The case in two figures
The national result by round and the change between rounds in each state. The tables with the same numbers come next; the maps page has four more figures. See the case maps
1. Results by round
Round 1 ·
| No. | Candidate | Party | Votes | % of valid votes | Status (TSE) |
|---|---|---|---|---|---|
| 22 | FLAVIO BOLSONARO | PL | 56,104,503 | 47.03% | Runoff |
| 13 | LULA | PT | 53,879,538 | 45.16% | Runoff |
| 70 | ESCRITOR AUGUSTO CURY | AVANTE | 3,448,569 | 2.89% | Not elected |
| 14 | RENAN SANTOS | MISSÃO | 2,675,887 | 2.24% | Not elected |
| 55 | RONALDO CAIADO | PSD | 2,605,148 | 2.18% | Not elected |
| 30 | ZEMA | NOVO | 326,488 | 0.27% | Not elected |
| 80 | SAMARA | UP | 122,911 | 0.10% | Not elected |
| 16 | HERTZ DIAS | PSTU | 43,103 | 0.04% | Not elected |
| 27 | CLARIANA BARAO | DC | 40,043 | 0.03% | Not elected |
| 21 | EDMILSON COSTA | PCB | 22,693 | 0.02% | Not elected |
| 35 | VETERINÁRIO WILSON GRASSI | DEMOCRATA | 16,881 | 0.01% | Not elected |
| 29 | RUI COSTA PIMENTA | PCO | 15,024 | 0.01% | Not elected |
Round 2 ·
| No. | Candidate | Party | Votes | % of valid votes | Status (TSE) |
|---|---|---|---|---|---|
| 13 | LULA | PT | 64,256,232 | 51.79% | Elected |
| 22 | FLAVIO BOLSONARO | PL | 59,826,041 | 48.21% | Not elected |
Observed Source: TSE, tse-6257-br-u, tse-6258-br-u · collected on · manifest SHA-256 890aa5af2220 · Download CSV · See the files
2. Turnout
| Measure | Round 1 | Round 2 | State |
|---|---|---|---|
| Registered voters | 158,745,502 | 158,745,502 | Observed |
| Turnout | 125,275,835 | 128,236,074 | Observed |
| Abstention | 33,469,244 | 30,509,005 | Observed |
| Valid votes | 119,300,788 | 124,082,273 | Observed |
| Blank votes | 2,300,798 | 1,430,496 | Observed |
| Null votes | 3,674,249 | 2,723,305 | Observed |
| Turnout (% of registered voters) | 78.92% | 80.78% | Derived |
| Abstention (% of registered voters) | 21.08% | 19.22% | Derived |
Formula turnout_pct = 100 * turnout / electorate; abstention_pct = 100 * abstention / electorate
Derived Source: TSE, tse-6257-br-u, tse-6258-br-u · collected on · manifest SHA-256 890aa5af2220 · Download CSV · See the files
3. Margin
| Round | Ahead | Margin (votes) Derived | Margin (percentage points of valid votes) Derived |
|---|---|---|---|
| Round 1 | FLAVIO BOLSONARO | 2,224,965 | 1.87 |
| Round 2 | LULA | 4,430,191 | 3.57 |
Formula lead_votes = votes_A - votes_B; lead_pp = 100 * votes_A / valid_votes - 100 * votes_B / valid_votes
4. Change between rounds and national swing
| Measure | Change Derived |
|---|---|
| Abstention (percentage points) | -1.86 |
| Turnout (votes) | +2,960,239 |
| Valid votes (votes) | +4,781,485 |
Formula delta_abstention_pp = abstention_pct_t2 - abstention_pct_t1; delta_turnout = turnout_t2 - turnout_t1; delta_valid = valid_t2 - valid_t1
| Candidate | Round 1 votes Observed | Round 2 votes Observed | Round 1 share, between the two Derived | Round 2 share Derived | Swing (pp) Derived | Vote gain Derived |
|---|---|---|---|---|---|---|
| LULA | 53,879,538 | 64,256,232 | 48.99% | 51.79% | +2.80 | +10,376,694 |
| FLAVIO BOLSONARO | 56,104,503 | 59,826,041 | 51.01% | 48.22% | -2.80 | +3,721,538 |
Formula first_round_two_candidate_normalized_share = v1_A / (v1_A + v1_B); second_round_share = v2_A / valid_t2; swing_pp = 100 * (second - first); absolute_vote_gain = v2_A - v1_A
5. Swing by state
- RJ+4.25
- SP+3.77
- GO+3.65
- AL+3.27
- SC+3.27
- MS+3.22
- RR+3.20
- PR+3.18
- MG+3.12
- DF+3.10
- RS+3.06
- MT+3.00
- AP+2.85
- ES+2.83
- RO+2.65
- AC+2.64
- PB+2.51
- RN+2.51
- TO+2.37
- SE+2.33
- AM+2.28
- PA+2.15
- MA+2.10
- PE+2.04
- CE+2.00
- Abroad (ZZ)+1.62
- BA+1.44
- PI+1.21
Derived Source: TSE, 56 files · collected on · manifest SHA-256 890aa5af2220 · Download CSV · See the files
| Scope | Round 2 registered voters Observed | Swing LULA (pp) Derived | Gain LULA Derived | Swing FLAVIO BOLSONARO (pp) Derived | Gain FLAVIO BOLSONARO Derived |
|---|---|---|---|---|---|
| AC | 613,715 | +2.64 | +9,743 | -2.64 | -15,092 |
| AL | 2,442,081 | +3.27 | +157,162 | -3.27 | +8,422 |
| AM | 2,798,661 | +2.28 | +98,787 | -2.28 | -1,519 |
| AP | 576,910 | +2.85 | +10,465 | -2.85 | -13,604 |
| BA | 11,312,891 | +1.44 | +820,487 | -1.44 | +166,176 |
| CE | 6,996,521 | +2.00 | +480,861 | -2.00 | +62,628 |
| DF | 2,258,995 | +3.10 | +149,597 | -3.10 | +69,926 |
| ES | 2,991,515 | +2.83 | +151,937 | -2.83 | +61,310 |
| GO | 5,080,385 | +3.65 | +396,675 | -3.65 | +293,446 |
| MA | 5,183,049 | +2.10 | +241,930 | -2.10 | -9,069 |
| MG | 16,372,144 | +3.12 | +1,162,163 | -3.12 | +464,238 |
| MS | 2,024,437 | +3.22 | +112,118 | -3.22 | +54,541 |
| MT | 2,637,879 | +3.00 | +112,486 | -3.00 | +52,518 |
| PA | 6,262,063 | +2.15 | +263,212 | -2.15 | +35,983 |
| PB | 3,248,434 | +2.51 | +252,932 | -2.51 | +33,833 |
| PE | 7,223,227 | +2.04 | +563,542 | -2.04 | +94,511 |
| PI | 2,704,695 | +1.21 | +130,279 | -1.21 | +8,831 |
| PR | 8,613,628 | +3.18 | +511,907 | -3.18 | +346,099 |
| RJ | 12,857,526 | +4.25 | +872,372 | -4.25 | +202,189 |
| RN | 2,659,867 | +2.51 | +175,633 | -2.51 | +16,916 |
| RO | 1,265,926 | +2.65 | +43,779 | -2.65 | +21,394 |
| RR | 401,540 | +3.20 | +9,085 | -3.20 | -11,647 |
| RS | 8,522,318 | +3.06 | +529,793 | -3.06 | +300,595 |
| SC | 5,734,687 | +3.27 | +291,146 | -3.27 | +220,051 |
| SE | 1,740,093 | +2.33 | +133,022 | -2.33 | +15,515 |
| SP | 34,123,591 | +3.77 | +2,613,861 | -3.77 | +1,217,155 |
| TO | 1,182,041 | +2.37 | +38,953 | -2.37 | -1,405 |
| Abroad (ZZ) | 916,683 | +1.62 | +42,767 | -1.62 | +27,597 |
Each row uses the round 1 and round 2 snapshots of the scope; each file is listed in the sources table.
Formula first_round_two_candidate_normalized_share = v1_A / (v1_A + v1_B); second_round_share = v2_A / valid_t2; swing_pp = 100 * (second - first); absolute_vote_gain = v2_A - v1_A
6. Counting timeline
Round 1
| Order | Scope | Closed at Observed | Registered voters Observed | Cumulative share of registered voters Derived |
|---|---|---|---|---|
| 1 | AC | 613,742 | 0.39% | |
| 2 | RO | 1,265,893 | 1.18% | |
| 3 | MS | 2,024,430 | 2.46% | |
| 4 | RR | 401,521 | 2.71% | |
| 5 | DF | 2,258,320 | 4.14% | |
| 6 | MT | 2,637,801 | 5.80% | |
| 7 | TO | 1,182,023 | 6.54% | |
| 8 | ES | 2,991,650 | 8.43% | |
| 9 | AP | 576,988 | 8.79% | |
| 10 | RS | 8,522,545 | 14.16% | |
| 11 | SC | 5,734,651 | 17.77% | |
| 12 | SE | 1,740,135 | 18.87% | |
| 13 | RJ | 12,857,648 | 26.97% | |
| 14 | GO | 5,080,590 | 30.17% | |
| 15 | PE | 7,223,450 | 34.72% | |
| 16 | PR | 8,613,657 | 40.14% | |
| 17 | SP | 34,122,892 | 61.64% | |
| 18 | RN | 2,659,825 | 63.31% | |
| 19 | AL | 2,442,126 | 64.85% | |
| 20 | CE | 6,996,545 | 69.26% | |
| 21 | PB | 3,248,531 | 71.31% | |
| 22 | PI | 2,704,758 | 73.01% | |
| 23 | PA | 6,262,397 | 76.96% | |
| 24 | BA | 11,312,752 | 84.08% | |
| 25 | MG | 16,372,372 | 94.40% | |
| 26 | AM | 2,798,611 | 96.16% | |
| 27 | MA | 5,183,115 | 99.42% | |
| 28 | Abroad (ZZ) | 916,534 | 100.00% |
Formula cumulative_electorate_share = sum(electorate dos escopos fechados até t) / sum(electorate)
Formula expected_weight = electorate_i / sum(electorate); observed_weight = turnout_totalized_i / sum(turnout_totalized); bias = observed_weight - expected_weight
- Mathematically decided Unknown no source collected for this milestone
- Totalization complete Observed · Source
tse-6257-br-u - Result announced Unknown no source collected for this milestone
- Result proclaimed Unknown no source collected for this milestone
- Certification (diplomação) Unknown no source collected for this milestone
- Taking office Unknown no source collected for this milestone
Round 2
| Order | Scope | Closed at Observed | Registered voters Observed | Cumulative share of registered voters Derived |
|---|---|---|---|---|
| 1 | AC | 613,715 | 0.39% | |
| 2 | RO | 1,265,926 | 1.18% | |
| 3 | RR | 401,540 | 1.44% | |
| 4 | MS | 2,024,437 | 2.71% | |
| 5 | MT | 2,637,879 | 4.37% | |
| 6 | SC | 5,734,687 | 7.99% | |
| 7 | AM | 2,798,661 | 9.75% | |
| 8 | AP | 576,910 | 10.11% | |
| 9 | RN | 2,659,867 | 11.79% | |
| 10 | PR | 8,613,628 | 17.22% | |
| 11 | DF | 2,258,995 | 18.64% | |
| 12 | PI | 2,704,695 | 20.34% | |
| 13 | AL | 2,442,081 | 21.88% | |
| 14 | TO | 1,182,041 | 22.62% | |
| 15 | ES | 2,991,515 | 24.51% | |
| 16 | RS | 8,522,318 | 29.88% | |
| 17 | SE | 1,740,093 | 30.97% | |
| 18 | GO | 5,080,385 | 34.17% | |
| 19 | CE | 6,996,521 | 38.58% | |
| 20 | SP | 34,123,591 | 60.08% | |
| 21 | PB | 3,248,434 | 62.12% | |
| 22 | PE | 7,223,227 | 66.67% | |
| 23 | RJ | 12,857,526 | 74.77% | |
| 24 | PA | 6,262,063 | 78.72% | |
| 25 | MA | 5,183,049 | 81.98% | |
| 26 | MG | 16,372,144 | 92.30% | |
| 27 | BA | 11,312,891 | 99.42% | |
| 28 | Abroad (ZZ) | 916,683 | 100.00% |
Formula cumulative_electorate_share = sum(electorate dos escopos fechados até t) / sum(electorate)
Formula expected_weight = electorate_i / sum(electorate); observed_weight = turnout_totalized_i / sum(turnout_totalized); bias = observed_weight - expected_weight
- Mathematically decided Unknown no source collected for this milestone
- Totalization complete Observed · Source
tse-6258-br-u - Result announced Unknown no source collected for this milestone
- Result proclaimed Unknown no source collected for this milestone
- Certification (diplomação) Unknown no source collected for this milestone
- Taking office Unknown no source collected for this milestone
Marginal share between counting instants
Unknown só um instante por escopo foi coletado; o painel de evolução da totalização não foi localizado nos arquivos públicos
7. Events
| Date | Type | Institution | Event | Effect | State | Source |
|---|---|---|---|---|---|---|
| Finalization | TSE | Totalização do 1º turno concluída (100% das seções) | Resultado consolidado publicado no app oficial de resultados | Observed | tse-6257-br-u | |
| Judicial decision | STF | Decisão liminar do STF na Rcl 101673 estendendo a votação até as 19h nas seções ainda abertas às 17h | O ministro Cristiano Zanin, do Supremo Tribunal Federal (STF), estendeu o período de votação até as 19h em todos os municípios brasileiros, nos locais onde as urnas não foram fechadas às 17h. | Observed | stf-noticia-prorrogacao-19h | |
| Administrative act | TSE | Totalização e divulgação dos resultados pausadas até as 19h | Sem documento oficial coletado com a pausa da divulgação. | Unknown | none | |
| Finalization | TSE | Totalização do 2º turno concluída (100% das seções) | Resultado consolidado publicado no app oficial de resultados | Observed | tse-6258-br-u |
8. Assurances
| Category | Assurance | Method | Date | State | Source | Limits |
|---|---|---|---|---|---|---|
| Voting machine integrity | Teste de integridade do 2º turno: votos de cédulas de papel conferidos contra o resultado das urnas sorteadas Sem documento oficial coletado. | teste_de_integridade | n/a | Unknown | none |
|
| Chain of custody | Boletins de urna, RDV e logs transmitidos para totalização publicados nos Dados Abertos Conjunto com 56 arquivos (um ZIP por UF e turno). | metadados_portal_dados_abertos | Observed | dadosabertos-resultados-2026-arquivos-transmitidos-para-totalizacao |
| |
| Public verifiability | Resultados por Brasil, UF e exterior publicados em arquivos abertos O índice de pleitos e os arquivos consolidados por escopo estão acessíveis sem autenticação. | download_publico_com_hash | Observed | tse-indice-pleitos |
| |
| Result totalization | Totalização do 2º turno fechada com 100% das seções O arquivo consolidado do Brasil marca a totalização como concluída. | arquivo_consolidado_app_resultados | Observed | tse-6258-br-u |
| |
| Software verification | Verificação pública de assinaturas digitais e hashes dos sistemas de transmissão e totalização na véspera do 2º turno Sem documento oficial coletado. | digital_signature_and_hash_verification | n/a | Unknown | none |
|
An assurance supports what was verified, nothing more. There is no aggregate confidence score.
9. Claims
| Claim | State | Evidence | Rationale |
|---|---|---|---|
| LULA venceu o 2º turno de 2026 | Confirmed |
| Resultado consolidado do Brasil com 100% das seções e candidato marcado como eleito. |
| A abstenção do 2º turno foi menor que a do 1º | Confirmed |
| Derivado de dois snapshots observados: abstenção 21.0836% no 1º turno e 19.2188% no 2º. A variação é DERIVED; a causa não está estabelecida. |
| A prorrogação do horário de votação alterou o vencedor | Unsupported | none | Nenhuma evidência coletada vincula a prorrogação ao resultado. O cálculo contra a margem fica pendente da contagem oficial de votos depois das 17h. |
| Houve votos registrados depois das 17h no 2º turno | Unknown |
| Sem a publicação oficial do TSE com a contagem: documento oficial localizado e não baixado (falha: http 403). A decisão do STF mostra que urnas seguiam abertas às 17h, não quantos votaram depois. |
| Todos os votos registrados depois das 17h foram para o vencedor | Unknown | none | Sem fonte e sem desagregação por horário no resultado consolidado. |
10. What is still unknown
Unknown does not mean false: it means no collected source supports the item. Each row states the reason.
- Unknown Marginal share between counting instantssó um instante por escopo foi coletado; o painel de evolução da totalização não foi localizado nos arquivos públicos
- Unknown Finalization milestones, Round 1Mathematically decided, Result announced, Result proclaimed, Certification (diplomação), Taking office: no source collected for this milestone
- Unknown Finalization milestones, Round 2Mathematically decided, Result announced, Result proclaimed, Certification (diplomação), Taking office: no source collected for this milestone
- Unknown Totalização e divulgação dos resultados pausadas até as 19hSem documento oficial coletado com a pausa da divulgação.
- Unknown Teste de integridade do 2º turno: votos de cédulas de papel conferidos contra o resultado das urnas sorteadasSem fonte: não sustenta nada.
- Unknown Verificação pública de assinaturas digitais e hashes dos sistemas de transmissão e totalização na véspera do 2º turnoSem fonte: não sustenta nada até a notícia ou a ata oficial entrar no manifesto.
- Unknown Houve votos registrados depois das 17h no 2º turnoSem a publicação oficial do TSE com a contagem: documento oficial localizado e não baixado (falha: http 403). A decisão do STF mostra que urnas seguiam abertas às 17h, não quantos votaram depois.
- Unknown Todos os votos registrados depois das 17h foram para o vencedorSem fonte e sem desagregação por horário no resultado consolidado.
11. Sources
| Id | Type | URL | Downloaded at | SHA-256 | Bytes | State |
|---|---|---|---|---|---|---|
tse-6257-br-ab | Coverage by state | https://resultados.tse.jus.br/oficial/ele2026/6257/dados/br/br-e006257-ab.json | 9de639fcd123077cd10697d707d7c939d9a45e56fb5732fce04cea4ca3262a6e | 29,410 | Observed | |
tse-6258-br-ab | Coverage by state | https://resultados.tse.jus.br/oficial/ele2026/6258/dados/br/br-e006258-ab.json | 68f6ae0c8ca6a705591780c94819c45475ffed6d72e44b477d7bfe9a591ceb97 | 29,409 | Observed | |
stf-noticia-prorrogacao-19h | Official document | https://noticias.stf.jus.br/postsnoticias/stf-prorroga-votacao-ate-as-19h-em-locais-onde-urnas-permaneceram-abertas-apos-as-17h/ | 5558ab42b40e870996e3ffa258437b4a86e3ccd9bb17da8b8a65d3fdb300df62 | 64,986 | Observed | |
tse-indice-pleitos | Election index | https://resultados.tse.jus.br/oficial/comum/config/ele-c.json | 91d1c4fe50dbe92067b83677d77a4f1856f5deca69a04b013a679ff690791721 | 26,574 | Observed | |
dadosabertos-resultados-2026-arquivos-transmitidos-para-totalizacao | Open Data metadata | https://dadosabertos.tse.jus.br/api/3/action/package_show?id=resultados-2026-arquivos-transmitidos-para-totalizacao | f5dc5de59fc94ce401d21c8c5973e3027d33fa3dfbae65ac9b66680274401895 | 43,810 | Observed | |
tse-6257-ac-u | Consolidated result | https://resultados.tse.jus.br/oficial/ele2026/6257/dados/ac/ac-c0001-e006257-u.json | c67559bc6e31b503162fcdd74604f00ce877efc4b90d7fdea8b48a0e634b4b0e | 9,293 | Observed | |
tse-6257-al-u | Consolidated result | https://resultados.tse.jus.br/oficial/ele2026/6257/dados/al/al-c0001-e006257-u.json | 96e234bc2a91d872d54a9951fbd60dce9b54ad0dc1fe347e322d89d25be187d4 | 9,324 | Observed | |
tse-6257-am-u | Consolidated result | https://resultados.tse.jus.br/oficial/ele2026/6257/dados/am/am-c0001-e006257-u.json | 8cbbec68324aec9f02df666154d47b2ee00f8c6380a099c7442721adf45214e7 | 9,329 | Observed | |
tse-6257-ap-u | Consolidated result | https://resultados.tse.jus.br/oficial/ele2026/6257/dados/ap/ap-c0001-e006257-u.json | 42c0d70f1abefdc5e5c5f75f4d341a66c373b34863685f22bc31aa742ec6a062 | 9,294 | Observed | |
tse-6257-ba-u | Consolidated result | https://resultados.tse.jus.br/oficial/ele2026/6257/dados/ba/ba-c0001-e006257-u.json | b50778a7cb0f9763994873ea045e95da1ee962577675dfcb99786f2853208415 | 9,365 | Observed | |
tse-6257-br-u | Consolidated result | https://resultados.tse.jus.br/oficial/ele2026/6257/dados/br/br-c0001-e006257-u.json | 2866703eb4fc0ad6f17f0e081a00ab1175490b0786325e700cff1d8b40d25bca | 9,349 | Observed | |
tse-6257-ce-u | Consolidated result | https://resultados.tse.jus.br/oficial/ele2026/6257/dados/ce/ce-c0001-e006257-u.json | ff65f98d1f1462c8230a2856f6c0e46ee7fb2a8f8ac7f1bf60979c6b1eea5f07 | 9,355 | Observed | |
tse-6257-df-u | Consolidated result | https://resultados.tse.jus.br/oficial/ele2026/6257/dados/df/df-c0001-e006257-u.json | 6fa13cd7f0b3024777891dbe94723e7e39ecbba76bdc702e9f81428826a7283a | 9,324 | Observed | |
tse-6257-es-u | Consolidated result | https://resultados.tse.jus.br/oficial/ele2026/6257/dados/es/es-c0001-e006257-u.json | 9e8036ad95dfc1fa119b26164bba9201fa6562c007418c773f13e7f5b6fe319d | 9,328 | Observed | |
tse-6257-go-u | Consolidated result | https://resultados.tse.jus.br/oficial/ele2026/6257/dados/go/go-c0001-e006257-u.json | 0bca25dc783c2b3c711f0cfe7432fe9e10d78d5ef8449c6d1368740bbe2dc1d6 | 9,343 | Observed | |
tse-6257-ma-u | Consolidated result | https://resultados.tse.jus.br/oficial/ele2026/6257/dados/ma/ma-c0001-e006257-u.json | 22daf14542c35a384967da16c71ca02b5292b5703d4ef09357dc1a1a65b9a41d | 9,343 | Observed | |
tse-6257-mg-u | Consolidated result | https://resultados.tse.jus.br/oficial/ele2026/6257/dados/mg/mg-c0001-e006257-u.json | d01c373751e029fdba347cce9f367679707bfb897f3942b3e233a273b87db199 | 9,382 | Observed | |
tse-6257-ms-u | Consolidated result | https://resultados.tse.jus.br/oficial/ele2026/6257/dados/ms/ms-c0001-e006257-u.json | 35a5e50df19afeea34928eb3810f53cbcd122730c27d4d2fb2a52cdbd3ae6b19 | 9,324 | Observed | |
tse-6257-mt-u | Consolidated result | https://resultados.tse.jus.br/oficial/ele2026/6257/dados/mt/mt-c0001-e006257-u.json | 0e7250b701d2889ba864082682e5ff5e14593bbac0a978c7d1ee88e6b42e285e | 9,330 | Observed | |
tse-6257-pa-u | Consolidated result | https://resultados.tse.jus.br/oficial/ele2026/6257/dados/pa/pa-c0001-e006257-u.json | 669dbc9548fb9a1f8ebb47a656234364c4aa18eb69c15f7b80634d16e23c2989 | 9,351 | Observed | |
tse-6257-pb-u | Consolidated result | https://resultados.tse.jus.br/oficial/ele2026/6257/dados/pb/pb-c0001-e006257-u.json | 7da03ae14bac3cf830d723ef04a02d5f830dc696ca9480647e76f1e146648e00 | 9,335 | Observed | |
tse-6257-pe-u | Consolidated result | https://resultados.tse.jus.br/oficial/ele2026/6257/dados/pe/pe-c0001-e006257-u.json | a18f9e0ec8f7073b3a9ff932321ae8592d3a906b875a33e080c2abb2444510bf | 9,349 | Observed | |
tse-6257-pi-u | Consolidated result | https://resultados.tse.jus.br/oficial/ele2026/6257/dados/pi/pi-c0001-e006257-u.json | d6dac2da5cbff871ab4c323beae7df6902ccb6e9c7a6b38e17518b2eac8842a2 | 9,333 | Observed | |
tse-6257-pr-u | Consolidated result | https://resultados.tse.jus.br/oficial/ele2026/6257/dados/pr/pr-c0001-e006257-u.json | d54aff50901472503eece5aabdce59518e67fd57cb7e7337b81132f995d72d02 | 9,364 | Observed | |
tse-6257-rj-u | Consolidated result | https://resultados.tse.jus.br/oficial/ele2026/6257/dados/rj/rj-c0001-e006257-u.json | 8a67b766e614b72140c0f6e026a097e4b20098f0c66cd528bb6a7aed194fda6a | 9,377 | Observed | |
tse-6257-rn-u | Consolidated result | https://resultados.tse.jus.br/oficial/ele2026/6257/dados/rn/rn-c0001-e006257-u.json | 87e559952a7a66a7592b8a9617e53af7e5748ee73d7802807e8e5a05e33df7f4 | 9,329 | Observed | |
tse-6257-ro-u | Consolidated result | https://resultados.tse.jus.br/oficial/ele2026/6257/dados/ro/ro-c0001-e006257-u.json | c696369d5397d28e78c8313e5dd767728e995825bb053f1035b83f2688e68c31 | 9,309 | Observed | |
tse-6257-rr-u | Consolidated result | https://resultados.tse.jus.br/oficial/ele2026/6257/dados/rr/rr-c0001-e006257-u.json | 9bf774caceab5460c906ca3120dfbe72039b92bd852d21fc77e6a728253e0218 | 9,277 | Observed | |
tse-6257-rs-u | Consolidated result | https://resultados.tse.jus.br/oficial/ele2026/6257/dados/rs/rs-c0001-e006257-u.json | 7a56c5d75aa8a0aa75127e72814a7cbbbf9876b96f1d77a0c3154b95fd43371c | 9,367 | Observed | |
tse-6257-sc-u | Consolidated result | https://resultados.tse.jus.br/oficial/ele2026/6257/dados/sc/sc-c0001-e006257-u.json | b51645c4cf68c1fe4761acdafd1214325c259661eb6522b286b97ab1b1d13381 | 9,355 | Observed | |
tse-6257-se-u | Consolidated result | https://resultados.tse.jus.br/oficial/ele2026/6257/dados/se/se-c0001-e006257-u.json | c163da0f27c4b0bbdcc34359c87b88607d5823573c813d5835afff339340be77 | 9,321 | Observed | |
tse-6257-sp-u | Consolidated result | https://resultados.tse.jus.br/oficial/ele2026/6257/dados/sp/sp-c0001-e006257-u.json | 6e417d16de88b97e27abffc58f404e753ee73a34142da0bb266821d903e67c68 | 9,396 | Observed | |
tse-6257-to-u | Consolidated result | https://resultados.tse.jus.br/oficial/ele2026/6257/dados/to/to-c0001-e006257-u.json | 76150bdef9fdbf557decc1d7e073b1fa361849316bb6cce5b8f6208ac48cdbd5 | 9,306 | Observed | |
tse-6257-zz-u | Consolidated result | https://resultados.tse.jus.br/oficial/ele2026/6257/dados/zz/zz-c0001-e006257-u.json | 9e8c762a6fdf924b46836cc246c8a32a41ec7f8f60ba2b1905cc8bd4a33dec03 | 9,341 | Observed | |
tse-6258-ac-u | Consolidated result | https://resultados.tse.jus.br/oficial/ele2026/6258/dados/ac/ac-c0001-e006258-u.json | c70137f47f4003b9af57f6669fac400138563e2cd61410d6d5064aff3ac50225 | 3,147 | Observed | |
tse-6258-al-u | Consolidated result | https://resultados.tse.jus.br/oficial/ele2026/6258/dados/al/al-c0001-e006258-u.json | 17e4f968cf66a2f4676053d635362f0b7762a5baa3074aac2be5f5778deafbec | 3,162 | Observed | |
tse-6258-am-u | Consolidated result | https://resultados.tse.jus.br/oficial/ele2026/6258/dados/am/am-c0001-e006258-u.json | 601a662e37dc60f39bf47b2061d6bccef2b6d936e1225507f30b2c74751f9f8e | 3,162 | Observed | |
tse-6258-ap-u | Consolidated result | https://resultados.tse.jus.br/oficial/ele2026/6258/dados/ap/ap-c0001-e006258-u.json | 135f0658833ebc7cc65170a2d4b245b71e0308fad5488e0e9ba86929260a43cc | 3,145 | Observed | |
tse-6258-ba-u | Consolidated result | https://resultados.tse.jus.br/oficial/ele2026/6258/dados/ba/ba-c0001-e006258-u.json | a4e092360ddc4594f081c81af8af53535fa787bbec34e06a4a9e1ae77b5e7cd4 | 3,176 | Observed | |
tse-6258-br-u | Consolidated result | https://resultados.tse.jus.br/oficial/ele2026/6258/dados/br/br-c0001-e006258-u.json | 67fae708b0c7977fc9847d36100c63313621bff971178c48f2da99969707c263 | 3,233 | Observed | |
tse-6258-ce-u | Consolidated result | https://resultados.tse.jus.br/oficial/ele2026/6258/dados/ce/ce-c0001-e006258-u.json | 189aeb382860facb91d2a1f3da05757f6e78ab196035a06a6afca8588ef4d4f3 | 3,171 | Observed | |
tse-6258-df-u | Consolidated result | https://resultados.tse.jus.br/oficial/ele2026/6258/dados/df/df-c0001-e006258-u.json | b5a29365e59fae8035769cec4b038031885f5da500854abac9fe7a4a30064b03 | 3,157 | Observed | |
tse-6258-es-u | Consolidated result | https://resultados.tse.jus.br/oficial/ele2026/6258/dados/es/es-c0001-e006258-u.json | 6ce18297c3496452a4e65cc7216354b1c31c1fb8fa71eee4429ebaad2f5a0fcb | 3,165 | Observed | |
tse-6258-go-u | Consolidated result | https://resultados.tse.jus.br/oficial/ele2026/6258/dados/go/go-c0001-e006258-u.json | 16d50423643b3c4c58217d6d9a2915b595990efd9f8c9c1b80d3da7c46260542 | 3,170 | Observed | |
tse-6258-ma-u | Consolidated result | https://resultados.tse.jus.br/oficial/ele2026/6258/dados/ma/ma-c0001-e006258-u.json | c53e1dd219b2bc18cf333068b960440680d396b692c293017c432ddac7cad25e | 3,170 | Observed | |
tse-6258-mg-u | Consolidated result | https://resultados.tse.jus.br/oficial/ele2026/6258/dados/mg/mg-c0001-e006258-u.json | b8df2cfeb58fe9cf48881eea5123dc8fcbbbbc2e2fcdec4175955e5e9715f71a | 3,182 | Observed | |
tse-6258-ms-u | Consolidated result | https://resultados.tse.jus.br/oficial/ele2026/6258/dados/ms/ms-c0001-e006258-u.json | 49cf91e54d7ccadd5076215ced7e96d641ee1845f10079f2cd60afb6e6cbedf3 | 3,157 | Observed | |
tse-6258-mt-u | Consolidated result | https://resultados.tse.jus.br/oficial/ele2026/6258/dados/mt/mt-c0001-e006258-u.json | 766479c0061f631d9ba66bb6b2ce9d8a375387ef084dd22c08cdc0ad66e7d33a | 3,160 | Observed | |
tse-6258-pa-u | Consolidated result | https://resultados.tse.jus.br/oficial/ele2026/6258/dados/pa/pa-c0001-e006258-u.json | 36ea55088a8aa102520b062ddf39490f3800406d33fceb301ea138b6fdd0c58a | 3,170 | Observed | |
tse-6258-pb-u | Consolidated result | https://resultados.tse.jus.br/oficial/ele2026/6258/dados/pb/pb-c0001-e006258-u.json | ce76ba0a88754c6ada8c028eb6b0f888b029224fbbd6ceaa557bc80ecdba5ca8 | 3,166 | Observed | |
tse-6258-pe-u | Consolidated result | https://resultados.tse.jus.br/oficial/ele2026/6258/dados/pe/pe-c0001-e006258-u.json | 7206aef498734c4daba187f60c8d7a81eab0aae044619a23a55d9ea3e907b4b4 | 3,172 | Observed | |
tse-6258-pi-u | Consolidated result | https://resultados.tse.jus.br/oficial/ele2026/6258/dados/pi/pi-c0001-e006258-u.json | aa79f6fa2fbb7006348e1016ec4858bc215c3026a038f9c80283c6e534dac1ab | 3,166 | Observed | |
tse-6258-pr-u | Consolidated result | https://resultados.tse.jus.br/oficial/ele2026/6258/dados/pr/pr-c0001-e006258-u.json | d74ef5cd3bc7259ec9745e2a09149c8188dce4c8e06fcc3ba61846ebdfdb9c5d | 3,172 | Observed | |
tse-6258-rj-u | Consolidated result | https://resultados.tse.jus.br/oficial/ele2026/6258/dados/rj/rj-c0001-e006258-u.json | 2e2c956ef0b44002aab643fe52a21efccf1cc40a3ff10dc1aceb8531571b4e74 | 3,179 | Observed | |
tse-6258-rn-u | Consolidated result | https://resultados.tse.jus.br/oficial/ele2026/6258/dados/rn/rn-c0001-e006258-u.json | b1cd9c61283361a3fdea9917c0e8204ab50cd637d1d35c6de927a1cc0d018eb3 | 3,162 | Observed | |
tse-6258-ro-u | Consolidated result | https://resultados.tse.jus.br/oficial/ele2026/6258/dados/ro/ro-c0001-e006258-u.json | 63e07e2b7218c7355acab9bdae18a0cef8dded2148f73485cd490b0fa0c2ec29 | 3,151 | Observed | |
tse-6258-rr-u | Consolidated result | https://resultados.tse.jus.br/oficial/ele2026/6258/dados/rr/rr-c0001-e006258-u.json | 6a5e2e459706db0aebcf7119dbdaa8da9651e846c4aa2b5ab4db26bb3d1af671 | 3,139 | Observed | |
tse-6258-rs-u | Consolidated result | https://resultados.tse.jus.br/oficial/ele2026/6258/dados/rs/rs-c0001-e006258-u.json | dfced6d0feeb5ca67e089c8320cb4c4276f73c17997c99b29f7bc7baf0d99a42 | 3,172 | Observed | |
tse-6258-sc-u | Consolidated result | https://resultados.tse.jus.br/oficial/ele2026/6258/dados/sc/sc-c0001-e006258-u.json | 80135261f80b3b388cb8bd61335a7347163f9385598bb071a7d0841d6fbd8b3d | 3,169 | Observed | |
tse-6258-se-u | Consolidated result | https://resultados.tse.jus.br/oficial/ele2026/6258/dados/se/se-c0001-e006258-u.json | 2cc1e515e781d7898ca66646c89c59ff8abc8247723eea0e657a11120a1c8ece | 3,157 | Observed | |
tse-6258-sp-u | Consolidated result | https://resultados.tse.jus.br/oficial/ele2026/6258/dados/sp/sp-c0001-e006258-u.json | 928950f17f4ef1eb889527aa7b37dd5aaa8cb5128b24fdeb64e1acb724641e20 | 3,194 | Observed | |
tse-6258-to-u | Consolidated result | https://resultados.tse.jus.br/oficial/ele2026/6258/dados/to/to-c0001-e006258-u.json | fb9b8da8cd5fd57ff7172a8a741e35da90c7521e0d37533605db84d39ebd0535 | 3,151 | Observed | |
tse-6258-zz-u | Consolidated result | https://resultados.tse.jus.br/oficial/ele2026/6258/dados/zz/zz-c0001-e006258-u.json | d8f54c294c61473d84d487e48d83fa0824e0e0b9788832f830440eb3a7646d81 | 3,184 | Observed |
12. About this data
- What it measures
- Votes by candidate in each round, turnout (registered voters, turnout, abstention, blank and null votes), margin between the two most voted and swing between rounds, in Brazil, by state and abroad.
- Source
- Brazil's Superior Electoral Court (TSE): 63 official files, listed in the sources table with URL and SHA-256.
- Unit
- Votes (count); share of valid votes or of registered voters; percentage points (pp) for margin and swing.
- Period
- (Round 1) and (Round 2)
- Last collected
- Next scheduled collection
- Daily at 09:30 UTC (06:30 in Brasília), by the
evidence-tseengine, which checks the SHA-256 of every file. This page changes on the next site publication. - Maintained by
- Reveno Evidence ·
evidence-tseengine, owner Thiago Holtz - Evidence state
- Observed Derived
- Version
- Collection manifest, SHA-256
890aa5af22204752879a7d89e3612e93c9a043f857a52a78e060ec6b82c03352 - License
- Source data license: public data from the TSE, under the court's terms. License for the Reveno text and calculations: not declared yet; until then, cite this page.
13. Download the data
What is on screen
The tables on this page as CSV, with unformatted numbers and the evidence state of every row.
The full set, with a manifest
A ZIP with every file behind the page, a README with the citation and license, and a manifest with the SHA-256 of each file.
For machines
A JSON at a stable address, with metadata, citation, tables and sources. The address does not change between publications; the content changes when the collection changes.
- Case data for machines
https://evidence.reveno.com.br/eleicoes/br-pres-2026/dados.json
- Case data for machines
14. How to cite
Short citation for a chart or table caption, or a note
TSE (2026), processed by Reveno Evidence
Full citation with URL and access date
Reveno Evidence (2026). Brazil 2026 presidential election: results and TSE evidence (BR-PRES-2026) [Data set]. Source data: Brazil's Superior Electoral Court (TSE), files collected on 2026-11-02 (UTC). Collection manifest, SHA-256 890aa5af22204752879a7d89e3612e93c9a043f857a52a78e060ec6b82c03352. Retrieved November 2, 2026, from https://evidence.reveno.com.br/en/elections/br-pres-2026/
BibTeX
@misc{reveno_evidence_br_pres_2026,
author = {{Reveno Evidence}},
title = {Brazil 2026 presidential election: results and TSE evidence (BR-PRES-2026)},
year = {2026},
publisher = {Reveno},
url = {https://evidence.reveno.com.br/en/elections/br-pres-2026/},
urldate = {2026-11-02},
note = {Source data: Brazil's Superior Electoral Court (TSE), files collected on 2026-11-02 (UTC). Collection manifest, SHA-256 890aa5af22204752879a7d89e3612e93c9a043f857a52a78e060ec6b82c03352}
}The access date is filled in with the date of this version of the page; replace it with the date you accessed it.
When you use a number, also cite the source file: id, URL and SHA-256 are in the sources table.
Source data license: public data from the TSE, under the court's terms. License for the Reveno text and calculations: not declared yet; until then, cite this page.
Ledger entries (events, assurances, claims and reasons) are recorded in Portuguese, as in the dossier.