Per ora questo testo è solo in inglese.
In Brazil's last three presidential runoffs, nearly all zero-vote sections were zeros for the PL side
A study found 106 polling sections where Flávio Bolsonaro got no votes in the 2026 runoff. I rebuilt the count from the public files, compared it with 2018 and 2022, and set out what those files can and cannot show.
Pubblicato
In breve
On 27 October 2026, Folha de S.Paulo reported a Paris Group study. A section is the group of voters assigned to one voting machine. Flávio Bolsonaro got no votes in 106 runoff sections, in which Lula had 14,860 votes in all. Lula got no votes in four. I rebuilt both counts from the court's open files and got the same numbers. Zero sections also happened in 2018 and 2022, on both sides, but almost all of them were zeros for the PL side.
By official registers, most of the 106 are in indigenous villages or quilombola communities. None of my models predicts which sections end at zero. None of them can represent a whole community voting the same way, and that limit says nothing either way about the count. In register villages I can follow from 2022 to 2026, which hold 36 of the 106, the zero rate barely moved. Every consistency check I ran between the published files passed. That does not show what voters typed, and I did not check the signed machine files.
Key findings
- In the 2026 runoff, Flávio Bolsonaro had 0 votes in 106 sections, in which Lula had 14,860 votes in all. Lula had 0 votes in 4 sections, in which Flávio Bolsonaro had 296 in all (scale.csv). #
- Jair Bolsonaro had 328 zero sections in 2018, for the PSL, and 143 in 2022, for the PL. Flávio Bolsonaro had 106 in 2026. The PT candidates, Fernando Haddad in 2018 and Lula after him, had 4 in each of those years (scale.csv). #
- By official registers, 64 of the 106 are at indigenous villages or communities, 16 at quilombola communities and 19 at other rural or riverside places, and 1 is in an urban area. Of the other 6, 2 are prisons by their official place type, and 4 have no usable coordinate and are labelled from their names, 3 as indigenous and 1 as rural. Lula's 4 are at 3 rural places and 1 urban place (m5b_zero_sections_categories.csv). #
- Under the best-scoring model, added after I saw results, 2026 had 106 zero sections against 10.8 expected for Flávio Bolsonaro, and 4 against 0.4 expected for Lula. In 2022 the same model expected 32.7 against 143, and 2.4 against 4. The same model also fell short on the PL side in 2018 and 2022 (observed_vs_expected.csv). #
- In 503 polling places that are indigenous villages by the registers and can be followed from 2022 to 2026, the PL-side zero rate was 3.6% of sections in 2022 and 3.4% in 2026. The PT side had none in either year. These places hold 36 of the 106, and I added this comparison after seeing results (m5b_panel_2022_2026.csv). #
- In the 2026 runoff, 1,931,103 vote counts in the court's published table of machine bulletins match the section file with 0 differences, and the sum of sections matches all 12,584 published totals by municipality, zone and candidate (consistency_summary.csv). #
La storia completa
A section with zero votes for one candidate can look like a count gone wrong. The limits of what I checked come first. Every public record of a vote comes from the voting machine itself: the bulletin it prints, its digital vote record and its logs. I checked that the published tables agree with each other and with the court's table of bulletins. That cannot show what each voter typed, and I did not check the files the machines sign. I take no side in this election.
What was claimed
On 27 October 2026, Folha de S.Paulo's Painel column reported that Flávio Bolsonaro (PL) "did not get a single vote in 106 ballot boxes" in the runoff. Those boxes "together recorded 14,860 votes" for Luiz Inácio Lula da Silva (PT) (translated). It credited a Paris Group survey. It said Lula got no votes in four, and put 65 of Flávio Bolsonaro's zeros in the North and 29 in the Northeast. A second report, which does not say who made the survey, said 62 are at places identified as indigenous schools, villages or health posts. It added that the data "do not, by themselves, indicate" fraud or irregularity (translated).
What I checked
I used the runoff files by section for 2018, 2022 and 2026 from the TSE open-data portal, the 2026 table of machine bulletins and the polling-place register. Each year I compare the same two sides. The PL side is Jair Bolsonaro in 2018 and 2022 and Flávio Bolsonaro in 2026. In 2018 Jair Bolsonaro ran for the PSL, but I still call his side the PL side, so the years line up. The PT side is Fernando Haddad in 2018 and Lula in 2022 and 2026. A zero means no votes for a candidate in a section where at least one vote went to either candidate. Blank and null votes do not count.
I wrote the questions, models and tests in EXPERIMENT.md before computing any result. I did not freeze that text with a hash at the time, so this rests on my word. FINDINGS-v2.md holds every number, including the details I leave out here.
The counts replicate exactly (scale.csv). Lula won the runoff by 4,430,191 votes, 64,256,232 to 59,826,041, according to the TSE's national totalization report. The 14,860 votes in Flávio Bolsonaro's zero sections are 0.34% of that margin.
Before the vote I published a sealed forecast that gave Flávio Bolsonaro an 84.6% chance of winning. Lula won. The forecast is graded on its own page, and its miss is about my forecast, not about the count. I file this piece with the forecast because it looks at the same election. It does not grade the forecast.
Where the zeros are
Flávio Bolsonaro's 106 zero sections are in the North (65), the Northeast (29), the Center-West (6), the South (3) and the Southeast (3). Lula's 4 are in two states, two in the North and two in the South (zero_by_region_2026.csv).
I classified the places first from their names, then checked them against official registers: IBGE 2022 Census localities and sectors, FUNAI indigenous lands and villages, and INCRA quilombola territories. A place takes a register category when its coordinate falls inside one of these areas or within 1 km of a census locality. I fixed that rule in EXTERNAL-CHECK-PLAN.md before running it.
| Place, by registers | 2026 sections with a valid vote | Zero for Flávio Bolsonaro | Zero for Lula |
|---|---|---|---|
| --- | ---: | ---: | ---: |
| Indigenous village or community | 1,662 | 67 | 0 |
| Quilombola community | 3,455 | 16 | 0 |
| Prison or detention | 263 | 2 | 0 |
| Other rural or riverside | 41,603 | 20 | 3 |
| Urban indigenous school | 3,642 | 0 | 0 |
| Urban | 443,928 | 1 | 1 |
| Other sections with no usable coordinate | 4,652 | 0 | 0 |
The table comes from zero_sections_by_category.csv. Five of the 110 zero sections have no usable coordinate and are counted by their name or official place type. Leaving out the 4 labelled from their names, the registers and my name reading agree on 103 of the remaining 106 zero sections, counting both sides, about whether a place is indigenous (m5b_zero_sections_agreement_summary.csv). Most quilombola labels rest only on the 1 km rule, and I did not validate that category separately.
These sections voted much the same way in round 1. Flávio Bolsonaro had no votes in 50 of the 106 then, and under 5% in 102. None had 10% or more, the threshold I set in advance. Lula had no round-1 votes in any of his 4 (diag_round1_share_2026_zero_sections.csv). This comparison cannot detect anything that affected both rounds the same way.
My reading: the zeros sit mostly in rural and traditional communities, where one-sided votes recur. The files do not say why a community votes as it does.
In the explorer below, you can compare observed and expected zeros by year, side and model, and look up any municipality's 2026 runoff totals, with the smallest pooled by state.
Explore the zero sections
Observed and expected zero sections, by year and side
One small chart per model. A filled dot is the number of zero sections observed, a hollow dot the number the model expects. The scale is logarithmic: each step is ten times the one before. Sections with at least 1 valid vote.
| Year | Side | Observed | Expected, B-place | Expected, BB-mun | Expected, BB-place | Expected, EB-r1 |
|---|---|---|---|---|---|---|
| 2018 | Bolsonaro side | 328 | 133.5 | 109.2 | 206.6 | 184.6 |
| 2018 | PT side | 4 | 3.3 | 4.6 | 4.8 | 4.9 |
| 2022 | Bolsonaro side | 143 | 43.6 | 14.8 | 64.0 | 32.7 |
| 2022 | PT side | 4 | 2.4 | 2.6 | 2.7 | 2.4 |
| 2026 | Bolsonaro side | 106 | 48.9 | 5.4 | 65.4 | 10.8 |
| 2026 | PT side | 4 | 1.9 | 0.4 | 2.3 | 0.4 |
Source: observed_vs_expected.csv
Look up a municipality
Type at least two letters. The smallest unit here is the municipality, or a city for votes abroad.
What the models say and don't
To judge whether 106 is a lot, I fitted six models, each giving every section a chance of a zero from its municipality, its polling place or its own round-1 votes, never its own runoff result. The one that fits the section results best, by a standard measure called the log score, in every year and on both sides, starts from the municipality and updates with the section's round-1 votes (model_scores.csv). I added this model and one other after seeing results. The polling-place models I had planned call a zero certain when every other section at the place is zero, which is circular.
| Year | PL side, observed | Expected | PT side, observed | Expected |
|---|---|---|---|---|
| --- | ---: | ---: | ---: | ---: |
| 2018 | 328 | 184.6 | 4 | 4.9 |
| 2022 | 143 | 32.7 | 4 | 2.4 |
| 2026 | 106 | 10.8 | 4 | 0.4 |
In 2026 every model expects fewer zeros than were seen, on both sides. The model closest in total expects 65.4 zeros, but only 18.2 of them fall on the 106 sections that were zero (m1_expectation_decomposition.csv). No model I fitted predicts which sections end at zero. None of them can produce a whole community voting one way.
My plan expected the simplest models to fall short every year, on both sides, and said a shortfall alone means nothing. On the PL side, the count beat every model's 99.9% bound in all three years. On the PT side, it beat four of six in 2026 and none before (observed_vs_expected.csv). I also wrote, in advance, a test to flag a year as unusual. It flagged 2026 in 10 of 72 versions, all on the PL side, partly because it compares each side with a range set by both. Against each side's own past, a version I added later, it flags 2026 12 times on the PL side and 9 on the PT side. In 5 of each, the model expected less than one zero, so a few zeros give a large ratio (u2_history_check.csv).
Did anything change in 2026
Under the best model, the ratio of observed to expected zeros rose on both sides from 2018 to 2026, from 1.8 to 9.8 on the PL side and from 0.8 to 10.9 on the PT side (ratio_bootstrap_places.csv). The two rises are not equally firm. On the PL side, the 2026 95% range, 7.9 to 11.8, sits above 2022's, 3.7 to 5.1. On the PT side, it runs from 2.4 to 26.6 and overlaps 2022's, because it rests on 4 sections. Between 2022 and 2026, the two polling-place models I planned in advance move the other way for the PL side. The polling-place model I added later rises, from 9.9 to 13.3.
Where the ratio rose, the zeros did not. The PL side's count fell from 143 to 106, but its expected count fell faster, from 32.7 to 10.8 (observed_vs_expected.csv). Around its zero sections, the PL side's typical vote share in the rest of the municipality rose from 20.1% to 27.4%. A higher share nearby makes a zero look less likely, so the models expected fewer. The PT side's count stayed at 4 while its expected count fell from 2.4 to 0.4, and its typical share in the rest of the municipality around its zero sections rose from 25.3% to 37.6% (diag_local_share_in_zero_sections.csv).
The cleanest comparison follows the same places. In 503 polling places that are indigenous villages by the registers and exist in both years, the PL-side zero rate was 3.6% of sections in 2022 (35 of 964) and 3.4% in 2026 (36 of 1,067). The 95% intervals run from 2.4% to 5.0% and from 2.1% to 4.7%. The PT side had no zero there in either year (m5b_panel_2022_2026.csv). These places hold 36 of Flávio Bolsonaro's 106 zero sections. Across all register villages, followed or not, the rate was 3.2% in 2022 and 3.9% in 2026 (m4_counterfactual_reweighting.csv). I added both comparisons after seeing results.
My reading: what changed in 2026 is mostly what the models expect, not how often these places voted one way.
What the files can't show
Every consistency check I ran between the published files passed (consistency_summary.csv). - 1,931,103 vote counts in the court's table of 2026 runoff bulletins match the section file, with 0 differences. - The sum of sections matches every published total by municipality, zone and candidate, in all three years. - No section in any of the three years has more turnout than registered voters.
These checks compare files published from one system. They cannot show whether a machine recorded what each voter typed, because every public record of a vote comes from the machine itself. I also did not check the files each machine signs: the digital bulletin, the digital vote record and the logs. They are public, from 0.2 to 25.8 GB per state. I could not check them, because the court's pages that describe their format blocked my automated downloads, and I found no public tool to verify them (consistency_checks_not_run.csv).
The other parts have limits too. My name reading finds about 41% of the places the registers mark as indigenous, though the registers agree with about 96% of the places it flags (m5b_text_rule_census.csv). The PT side rests on 4 sections a year, too few for a firm conclusion. None of this is a verdict on the count as a whole. It answers one claim, with the files that are public.
Check it yourself
You can check one section without writing code, if you have a photo of its printed bulletin. Each voting machine prints a bulletin with a QR code at the bottom. The court's Boletim na Mão app reads it so a voter can "obtain and view a digital copy" of the bulletin (translated). You can then compare it with the results at resultados.tse.jus.br.
To rerun the lab, get the package at /labs/2026-10-zero-vote-sections/ and run its script run_all.sh, which downloads the public files, checks their hashes and rebuilds every table. REPRODUCE.md gives the requirements and says which tables need files I do not publish.
Sources
- report Flávio teve zero voto em 106 urnas, nas quais Lula somou quase 15 mil, Folha de S.Paulo, 27 October 2026 (archived copy)
- report Flávio teve votação zerada em 106 urnas, Claudio Dantas, 28 October 2026 (archived copy)
- data Resultados 2026, TSE open-data portal
- data Resultados 2026, Boletim de Urna, TSE open-data portal
- data Eleitorado 2026, TSE open-data portal (archived copy)
- data Relatório de Resultado da Totalização 2026, Brazil, TSE (archived copy)
- page Resultados, TSE
- page Boletim na Mão, Google Play (archived copy)
- report Boletim de Urna permite conferir totalização dos votos, Agência Brasil in Folha de Pernambuco, 4 October 2026 (archived copy)
- page I sealed a forecast before Brazil voted. Here it is, Vinarise, 25 October 2026 (archived copy)
- data Zero-vote sections lab, findings v2
- data Zero-vote sections lab, how to reproduce
Pensi che abbia sbagliato?
Send your evidence to vina@vinarise.com. People and AI agents are both welcome. Corrections are dated and linked next to what they correct.
Disponibile anche come: Markdown · Claims JSON · llms.txt