Methodology
Everything the site computes, explained — and the data behind every number.
Blocs and taxonomy
Every presidential candidate since 1989 is assigned to one of two blocs: left (the PT camp and allies) or right (the camp now organized around PL). There is no center bloc: in a system decided by 50% + 1 every candidacy ends up adding to one of the two sides, and two blocs keep every election comparable on the same scale.
Strength (1–3) says how clearly the candidate or party belongs to the bloc in that era: 3 = core of the bloc; 2 = usual ally or intermediate position; 1 = classified by elimination, lowest confidence.
Parties are classified by era (valid_from–valid_to) because they change sides over time. The classification is editorial, versioned and open to review: every row carries its rationale and source.
Party taxonomy 1 · candidates 1 · updated 10/19/2026 · 27 rows flagged “under review”
Parties
| Code | Name | Era | Bloc | Strength | Rationale | Source |
|---|---|---|---|---|---|---|
| AGIRunder review | Agir PTC → Agir (2019) | 2019–now | Right | Continuação do PTC; esteve na coligação de Lula em 2022 e na de Augusto Cury em 2026. Marcação leve, a revisar. | source | |
| AVANTEunder review | Avante PT do B → Avante (2017) | 2017–now | Left | Continuação do PT do B; na chapa de Ciro em 2018 e de Lula em 2022; candidato próprio em 2026 (Augusto Cury). Marcação leve, a revisar. | source | |
| CIDADANIAunder review | Cidadania PPS → Cidadania (2019) | 2019–now | Left | Continuação do PPS; federado com o PSDB em 2022 (chapa Tebet). Marcação leve, herdada do PPS. | source | |
| DC | Democracia Cristã PSDC (1995) → DC (2017) | 1995–now | Right | Democracia cristã conservadora; candidato próprio (Eymael) em 1998, 2006, 2010, 2014, 2018 e 2022, e Clariana Barão em 2026. | source | |
| DEM | Democratas PFL (1985) → DEM (2007) → União Brasil (2022) | 2007–2022 | Right | Continuação do PFL; nas chapas de Serra (2010), Aécio (2014) e Alckmin (2018). | source | |
| DEMOCRATA | Democrata PMB — Partido da Mulher Brasileira (2008/2015) → Democrata (dez. 2025) | 2026–now | Right | Antigo Partido da Mulher Brasileira, renomeado Democrata em dezembro de 2025; candidato próprio em 2026 (Wilson Grassi, 0,01%). Nanico de perfil conservador. Marcação leve, provisória, a confirmar pelo dono do site. Confirmado pelo dono do site em 2026-10-19. | source | |
| MDBunder review | Movimento Democrático Brasileiro PMDB → MDB (2017) | 2017–now | Right | Candidatos próprios em 2018 (Meirelles) e 2022 (Tebet). Centro com inclinação liberal-conservadora. Marcação leve. | source | |
| MISSÃO | Missão | 2025–now | Right | Partido criado pelo Movimento Brasil Livre (MBL); candidato próprio em 2026 (Renan Santos). Direita liberal-conservadora. Partido novo — a revisar. Confirmado pelo dono do site em 2026-10-19. | source | |
| NOVO | Partido Novo | 2015–now | Right | Liberalismo econômico e conservadorismo fiscal; candidatos próprios em 2018, 2022 e 2026 (Zema). | source | |
| PATRIOTA | Patriota PEN (2012) → Patriota (2018) → PRD (2023) | 2018–2023 | Right | Direita nacionalista; candidato próprio em 2018 (Cabo Daciolo); abrigou a pré-candidatura de Bolsonaro em 2018. | source | |
| PCB | Partido Comunista Brasileiro | 1985–now | Left | Partido comunista histórico (Roberto Freire em 1989; a maioria virou PPS em 1992 e uma ala refundou o PCB, que lançou candidatos em 2010, 2014, 2022 e 2026). | source | |
| PCdoB | Partido Comunista do Brasil | 1985–now | Left | Partido comunista; aliado do PT em todas as chapas presidenciais desde 1989 e federado com o PT desde 2022. | source | |
| PCNunder review | Partido Comunitário Nacional | 1989–1993 | Right | Nanico de 1989 (Zamir Teixeira). Marcação leve, provisória. | source | |
| PCO | Partido da Causa Operária | 1995–now | Left | Partido trotskista; candidato próprio (Rui Costa Pimenta) em 2002, 2010, 2014 e 2026. | source | |
| PDCdoBunder review | Partido Democrata Cristão do Brasil | 1989–1993 | Right | Nanico de 1989 (Manoel Horta). Marcação leve, provisória. | source | |
| PDS | Partido Democrático Social ARENA → PDS (1980) → PPR (1993) → PPB (1995) → PP (2003) | 1980–1993 | Right | Herdeiro da ARENA (partido de sustentação do regime militar); candidato próprio em 1989 (Maluf). | source | |
| PDT | Partido Democrático Trabalhista | 1979–now | Left | Trabalhismo brizolista; candidato próprio em 1989, 1994, 2006 e 2018; aliado do PT em 2002 (via Ciro no 2º turno), 2010, 2014 e 2026. | source | |
| PEN | Partido Ecológico Nacional PEN (2012) → Patriota (2018) → PRD (2023) | 2012–2018 | Right | Conservador apesar do nome; na coligação de Aécio em 2014. Virou Patriota em 2018. | source | |
| PFL | Partido da Frente Liberal PFL (1985) → DEM (2007) → União Brasil (2022) | 1985–2007 | Right | Dissidência do PDS que apoiou Tancredo; candidato próprio em 1989 (Aureliano Chaves); parceiro do PSDB em 1994, 1998, 2002 e 2006. | source | |
| PHSunder review | Partido Humanista da Solidariedade PSN (1995) → PHS (1997) → incorporado ao Podemos (2019) | 1995–2019 | Right | Democracia cristã; candidato próprio em 1998 como PSN (Vasco Neto); nas chapas de Marina (2014) e Meirelles (2018). Marcação leve. | source | |
| PL | Partido Liberal PL (1985) → PR (2006) → PL (2019) | 1985–2006 | Right | Liberalismo econômico; candidato próprio em 1989 (Afif). Em 2002 integrou a chapa de Lula (vice José Alencar), por isso strength 2 e não 3 nesta era. | source | |
| PL | Partido Liberal PL (1985) → PR (2006) → PL (2019) | 2019–now | Right | Partido de Jair Bolsonaro (2022) e Flávio Bolsonaro (2026); principal partido da direita desde 2021. | source | |
| PLPunder review | Partido Liberal Progressista | 1989–1993 | Right | Nanico de 1989 (Eudes Mattar). Marcação leve, provisória. | source | |
| PMBunder review | Partido Municipalista Brasileiro | 1989–1993 | Right | Nanico de 1989 (Armando Corrêa). Marcação leve, provisória. | source | |
| PMDBunder review | Partido do Movimento Democrático Brasileiro MDB (1966) → PMDB (1980) → MDB (2017) | 1980–2017 | Right | Grande partido de centro; candidatos próprios em 1989 (Ulysses) e 1994 (Quércia); aliado do PSDB (2002) e do PT (2010, 2014). Marcação leve. | source | |
| PMNunder review | Partido da Mobilização Nacional PMN → Mobiliza (2022) | 1984–2022 | Left | Nacionalismo; candidatos próprios em 1989 (Celso Brant) e 1998 (Ivan Frota); na coligação de Lula em 2002 e de Serra em 2010. Marcação leve. | source | |
| PNunder review | Partido Nacionalista | 1989–1993 | Right | Nanico de 1989 (Lívia Maria). Marcação leve, provisória. | source | |
| PODEunder review | Podemos PTN → Podemos (2016) | 2016–now | Right | Candidato próprio em 2018 (Alvaro Dias); incorporou o PSC em 2023. Centro-direita. Marcação leve. | source | |
| PPunder review | Partido do Povo | 1989–1989 | Right | Nanico de 1989 (Paulo Gontijo). Não é o PP/Progressistas de 2003. Marcação leve, provisória. | source | |
| PP | Progressistas PPB → PP (2003) | 2003–now | Right | Centro-direita fisiológica; nas chapas de Dilma (2010, 2014), Alckmin (2018) e Bolsonaro (2022). Não confundir com o PP de 1989 (Partido do Povo). | source | |
| PPBunder review | Partido do Povo Brasileiro | 1989–1989 | Right | Nanico de 1989 (Antônio Pedreira). Não é o PPB de 1995–2003. Marcação leve, provisória. | source | |
| PPB | Partido Progressista Brasileiro PPR → PPB (1995) → PP (2003) | 1995–2003 | Right | Continuação do PPR; na coligação de FHC em 1998. Não confundir com o PPB de 1989 (Partido do Povo Brasileiro), lançado abaixo com era própria. | source | |
| PPL | Partido Pátria Livre | 2011–2019 | Left | Origem no MR-8; nacionalismo de esquerda. Candidato próprio em 2018 (João Goulart Filho); incorporado ao PCdoB em 2019. | source | |
| PPR | Partido Progressista Reformador PDS + PDC → PPR (1993) → PPB (1995) → PP (2003) | 1993–1995 | Right | Fusão do PDS com o PDC; candidato próprio em 1994 (Esperidião Amin). | source | |
| PPSunder review | Partido Popular Socialista PCB (1989) → PPS (1992) → Cidadania (2019) | 1992–2019 | Left | Herdeiro do PCB de 1989 que migrou para a social-democracia; candidato próprio em 1998 e 2002 (Ciro), mas aliado do PSDB em 2010, 2014 e 2018. Marcação leve. | source | |
| PRunder review | Partido da República PL (1985) → PR (2006) → PL (2019) | 2006–2019 | Right | Fusão PL + PRONA (2006). Partido de centro-direita fisiológico; nas coligações de Dilma (2010, 2014) e de Alckmin (2018). Marcação leve. | source | |
| PRB | Partido Republicano Brasileiro PRB (2005) → Republicanos (2019) | 2005–2019 | Right | Ligado à Igreja Universal; integrou as chapas de Lula (2006, vice Alencar) e Dilma (2010, 2014), mas conservador nos costumes. Strength 2 nesta era. | source | |
| PRD | Partido Renovação Democrática Patriota + PTB → PRD (2023) | 2023–now | Right | Fusão de Patriota e PTB, ambos marcados como direita. | source | |
| PRN | Partido da Reconstrução Nacional PRN (1989) → PTC (2000) → Agir (2019) | 1989–2000 | Right | Partido de Collor em 1989; candidato próprio também em 1994. Liberal-conservador. | source | |
| PRONA | Partido de Reedificação da Ordem Nacional PRONA + PL → PR (2006) | 1989–2006 | Right | Nacionalismo de direita de Enéas Carneiro; candidato próprio em 1989, 1994 e 1998. | source | |
| PRPunder review | Partido Republicano Progressista PRP → incorporado ao Patriota (2019) | 1989–2019 | Right | Candidata própria em 2006 (Ana Maria Rangel); nas chapas de Marina (2014) e Alvaro Dias (2018). Marcação leve. | source | |
| PRTB | Partido Renovador Trabalhista Brasileiro PRTB + Patriota → PRD (2023) | 1995–2023 | Right | Candidato próprio em 2010 e 2014 (Levy Fidelix); vice de Bolsonaro em 2018 (Mourão). Direita conservadora. | source | |
| PSB | Partido Socialista Brasileiro | 1985–now | Left | Socialismo democrático; candidatos próprios em 2002 (Garotinho) e 2014 (Marina); aliado do PT em 2006, 2010, 2022 e 2026. | source | |
| PSC | Partido Social Cristão PSC → incorporado ao Podemos (2023) | 1985–2023 | Right | Conservadorismo cristão; candidatos próprios em 1994, 1998 e 2014 (Pastor Everaldo); partido de Bolsonaro em 2016–2018. | source | |
| PSDunder review | Partido Social Democrático | 1987–2003 | Right | PSD antigo (refundado em 1987); candidato próprio em 1989 (Ronaldo Caiado). Incorporado ao PTB em 2003. Não confundir com o PSD de 2011. | source | |
| PSDunder review | Partido Social Democrático | 2011–now | Right | Fundado por Gilberto Kassab em 2011; "nem de esquerda, nem de direita, nem de centro" segundo o fundador; governista com Dilma, Temer, Bolsonaro e Lula. Candidato próprio em 2026 (Ronaldo Caiado). Marcação leve. | source | |
| PSDB | Partido da Social Democracia Brasileira PSDB (1988, centro-esquerda) → PSDB (1994–, centro-direita com PFL) | 1988–1993 | Left | Na fundação (1988) e em 1989 (Mario Covas, 4º lugar) o PSDB era uma dissidência de centro-esquerda do PMDB e apoiou formalmente Lula no 2º turno de 1989. Marcação leve, só para 1989; a partir da aliança com o PFL em 1994 o partido é marcado como direita. Confirmado pelo dono do site em 2026-10-19. | source | |
| PSDB | Partido da Social Democracia Brasileira PSDB (1988, centro-esquerda) → PSDB (1994–, centro-direita com PFL) | 1994–now | Right | Centro-direita; principal adversário do PT em todos os segundos turnos de 1994 a 2014 (FHC, Serra, Alckmin, Aécio). Marcado como direita para fins de bloco; o rótulo histórico é "centro". | source | |
| PSLunder review | Partido Social Liberal PSL (1994) → PSL bolsonarista (2018) → União Brasil (2022) | 1994–2017 | Right | Nanico liberal antes de 2018; candidato próprio em 2006 (Luciano Bivar). Marcação leve nesta era. | source | |
| PSL | Partido Social Liberal PSL (1994) → PSL bolsonarista (2018) → União Brasil (2022) | 2018–2022 | Right | Partido pelo qual Jair Bolsonaro foi eleito em 2018; maior bancada da direita em 2018–2021. | source | |
| PSOL | Partido Socialismo e Liberdade | 2005–now | Left | Dissidência à esquerda do PT (2004); candidatos próprios em 2006, 2010, 2014 e 2018; federado com a Rede desde 2022. | source | |
| PSPunder review | Partido Social Progressista | 1989–1993 | Left | Candidato próprio em 1989 (Marronzinho), populismo de base popular. Partido extinto. Marcação leve. | source | |
| PSTU | Partido Socialista dos Trabalhadores Unificado | 1994–now | Left | Partido trotskista; candidatos próprios em 1998, 2002, 2010, 2014, 2018, 2022 e 2026. | source | |
| PT | Partido dos Trabalhadores | 1980–now | Left | Principal partido da esquerda brasileira; candidato próprio ou cabeça de chapa em todas as eleições desde 1989. | source | |
| PTB | Partido Trabalhista Brasileiro PTB → PRD (2023, com o Patriota) | 1980–2023 | Right | Apesar do nome trabalhista, alinhado à direita desde os anos 1990 (FHC 1998, Serra 2010, Aécio 2014, Alckmin 2018); candidato próprio em 1989 e 2022 (Padre Kelmon). | source | |
| PTCunder review | Partido Trabalhista Cristão PRN → PTC (2000) → Agir (2019) | 2000–2019 | Right | Continuação do PRN; nanico fisiológico, nas coligações de Garotinho (2002), Dilma (2010) e Alvaro Dias (2018). Marcação leve. | source | |
| PTdoBunder review | Partido Trabalhista do Brasil PT do B → Avante (2017) | 1989–2017 | Left | Dissidência do PTB; candidato próprio em 1998. Rótulo trabalhista com alinhamentos variados. Marcação leve. | source | |
| PTNunder review | Partido Trabalhista Nacional PTN → Podemos (2016) | 1995–2016 | Right | Candidata própria em 1998 (Thereza Ruiz); nanico fisiológico. Marcação leve. | source | |
| PVunder review | Partido Verde | 1986–now | Left | Ambientalismo; candidatos próprios em 1989 (Gabeira), 1998 (Sirkis), 2010 (Marina) e 2014 (Eduardo Jorge). Oscila entre alianças; federado com o PT desde 2022. | source | |
| REDE | Rede Sustentabilidade | 2015–now | Left | Partido de Marina Silva; candidata própria em 2018; federado com o PSOL desde 2022 e na chapa de Lula em 2022 e 2026. | source | |
| REPUBLICANOS | Republicanos PRB (2005) → Republicanos (2019) | 2019–now | Right | Conservadorismo religioso; na coligação de Bolsonaro em 2022. | source | |
| SOLIDARIEDADEunder review | Solidariedade | 2013–now | Left | Origem sindical (Força Sindical). Na chapa de Aécio em 2014 e Alckmin em 2018, mas na de Lula em 2022. Marcação leve. | source | |
| UNIÃO | União Brasil DEM + PSL → União Brasil (2022) | 2022–now | Right | Fusão de DEM e PSL; candidata própria em 2022 (Soraya Thronicke). | source | |
| UP | Unidade Popular | 2019–now | Left | Partido de esquerda socialista; candidatos próprios em 2022 e 2026. | source |
Candidates
| Year | No. | Name | Party | Bloc | Strength | Rationale |
|---|---|---|---|---|---|---|
| 2026 | 13 | Lulafinalist | PT | Left | Candidato do PT (federação com PCdoB e PV; PSB, PDT, PSOL, Rede); 2º colocado no 1º turno (45,16%), finalista. | |
| 2026 | 22 | Flávio Bolsonarofinalist | PL | Right | Candidato do PL; 1º colocado no 1º turno (47,03% dos válidos), finalista. | |
| 2026 | 70 | Augusto Cury | AVANTE | Left | 3º colocado (2,89%) pelo Avante (com Agir). Marcação herdada do partido (leve). Candidatura nova; confirmada pelo dono do site em 2026-10-19. | |
| 2022 | 13 | Lulafinalist | PT | Left | Candidato do PT (federação com PCdoB e PV; PSB, PSOL, Rede, Solidariedade, Avante, Agir, PROS); eleito no 2º turno. | |
| 2022 | 15 | Simone Tebet | MDB | Right | 3ª colocada pelo MDB (com PSDB, Cidadania e Podemos); centro liberal; declarou voto em Lula no 2º turno. Marcação leve. | |
| 2022 | 22 | Jair Bolsonarofinalist | PL | Right | Direita conservadora (PL, PP, Republicanos); finalista. | |
| 2018 | 12 | Ciro Gomes | PDT | Left | 3º colocado pelo PDT; trabalhismo/centro-esquerda; apoio "crítico" a Haddad no 2º turno. | |
| 2018 | 13 | Fernando Haddadfinalist | PT | Left | Candidato do PT (com PCdoB e PROS); finalista. | |
| 2018 | 17 | Jair Bolsonarofinalist | PSL | Right | Direita conservadora (PSL-PRTB); eleito no 2º turno. | |
| 2014 | 13 | Dilma Roussefffinalist | PT | Left | Candidata do PT; reeleita no 2º turno. | |
| 2014 | 40 | Marina Silva | PSB | Left | 3ª colocada pelo PSB (assumiu a chapa após a morte de Eduardo Campos); apoiou Aécio no 2º turno. Marcação leve — sobrepõe o PSB (2). | |
| 2014 | 45 | Aécio Nevesfinalist | PSDB | Right | Centro-direita (PSDB, DEM, PTB, SD); finalista. | |
| 2010 | 13 | Dilma Roussefffinalist | PT | Left | Candidata do PT; eleita no 2º turno. | |
| 2010 | 43 | Marina Silva | PV | Left | 3ª colocada pelo PV; ex-PT, ambientalista; não declarou voto no 2º turno. Marcação leve. | |
| 2010 | 45 | José Serrafinalist | PSDB | Right | Centro-direita (PSDB, DEM, PTB, PPS); finalista. | |
| 2006 | 13 | Lulafinalist | PT | Left | Candidato do PT; reeleito no 2º turno. | |
| 2006 | 45 | Geraldo Alckminfinalist | PSDB | Right | Centro-direita (PSDB-PFL); finalista. | |
| 2006 | 50 | Heloísa Helena | PSOL | Left | 3ª colocada; esquerda socialista (PSOL, PSTU, PCB). | |
| 2002 | 13 | Lulafinalist | PT | Left | Candidato do PT; eleito no 2º turno. | |
| 2002 | 40 | Anthony Garotinho | PSB | Left | 3º colocado pelo PSB; perfil populista-evangélico, à direita do partido em costumes. Marcação leve. | |
| 2002 | 45 | José Serrafinalist | PSDB | Right | Centro-direita (PSDB-PMDB); finalista. | |
| 1998 | 13 | Lula | PT | Left | Candidato do PT (com PDT, PSB, PCdoB, PCB); 2º colocado. | |
| 1998 | 23 | Ciro Gomes | PPS | Left | Centro-esquerda (PPS com PL e PAN); 3º colocado. Ex-PSDB, posição à época mais ao centro que nas disputas seguintes. | |
| 1998 | 45 | Fernando Henrique Cardoso | PSDB | Right | Centro-direita (PSDB, PFL, PPB, PTB, PSD); reeleito no 1º turno. Marcado como direita para fins de bloco. | |
| 1994 | 13 | Lula | PT | Left | Candidato do PT; 2º colocado. | |
| 1994 | 45 | Fernando Henrique Cardoso | PSDB | Right | Centro-direita (PSDB com PFL e PTB). Marcado como direita para fins de bloco; eleito no 1º turno. | |
| 1994 | 56 | Enéas Carneiro | PRONA | Right | Nacionalismo de direita; 3º colocado em 1994. | |
| 1989 | 12 | Leonel Brizola | PDT | Left | Trabalhismo histórico; 3º colocado em 1989, apoiou Lula no 2º turno. | |
| 1989 | 13 | Lulafinalist | PT | Left | Candidato do PT em todas as suas disputas; Frente Brasil Popular (PT, PSB, PCdoB) em 1989. | |
| 1989 | 20 | Fernando Collorfinalist | PRN | Right | Liberal-conservador; eleito no 2º turno contra Lula com apoio das forças de centro-direita (PFL, PDS). |
Lean index
A state’s lean index is the weighted average, over the 2026, 2022, 2018, 2014 runoffs, of the gap between the state margin (right − left) and the national margin, with weights 0.4 / 0.3 / 0.2 / 0.1 from most recent to oldest. Positive = the state votes further right than Brazil; negative = further left.
lean(UF) = Σi wi · (margemUF,i − margemBR,i)
Rating by the absolute value of the index: ≥ 15 pts solid; 8–15 likely; 3–8 lean; < 3 toss-up.
| State | Index | Rating | Electorate | Swing |
|---|---|---|---|---|
| PI Piauí | −53.05 | Solid left | 1.76% | no |
| BA Bahia | −43.19 | Solid left | 7.33% | no |
| MA Maranhão | −43.13 | Solid left | 3.25% | no |
| CE Ceará | −40.67 | Solid left | 4.72% | no |
| SE Sergipe | −36.12 | Solid left | 1.15% | no |
| PE Pernambuco | −35.92 | Solid left | 4.80% | no |
| PB Paraíba | −32.55 | Solid left | 2.14% | no |
| RN Rio Grande do Norte | −30.75 | Solid left | 1.73% | no |
| AL Alagoas | −19.97 | Solid left | 1.53% | no |
| PA Pará | −10.02 | Likely left | 3.94% | no |
| AM Amazonas | −6.52 | Lean left | 1.71% | yes |
| AP Amapá | −3.46 | Lean left | 0.34% | yes |
| TO Tocantins | −1.78 | Toss-up | 0.73% | yes |
| MG Minas Gerais | +2.60 | Toss-up | 10.13% | yes |
| RJ Rio de Janeiro | +12.83 | Likely right | 7.85% | yes |
| ES Espírito Santo | +16.16 | Solid right | 1.85% | no |
| RS Rio Grande do Sul | +16.32 | Solid right | 5.40% | yes |
| SP São Paulo | +16.51 | Solid right | 21.17% | no |
| DF Distrito Federal | +19.32 | Solid right | 1.46% | yes |
| GO Goiás | +20.83 | Solid right | 3.17% | yes |
| MS Mato Grosso do Sul | +20.97 | Solid right | 1.26% | no |
| PR Paraná | +27.31 | Solid right | 5.53% | no |
| MT Mato Grosso | +29.64 | Solid right | 1.65% | no |
| RO Rondônia | +38.17 | Solid right | 0.78% | yes |
| AC Acre | +39.30 | Solid right | 0.35% | yes |
| SC Santa Catarina | +40.63 | Solid right | 3.74% | no |
| RR Roraima | +44.26 | Solid right | 0.24% | no |
Swing states
A state is a swing state (shown in yellow across the site) when it meets at least one of three criteria: (1) it changed bloc at least 3 times across the 10 elections from 1989 to 2026, using round 2 where there was a runoff and round 1 in the years without one (1994 and 1998); (2) it changed bloc at least 4 times over every round — counting round 1 by the bloc of the state’s most-voted candidate and round 2 by the winner, so a turn between the two rounds of the same year counts (Minas Gerais in 2026: right ahead in round 1, left in round 2); summing each bloc’s votes in round 1 would manufacture turns in three-way races, hence the most-voted rule; or (3) its lean index is below 8 pts in absolute value (“lean” or “toss-up” rating). Yellow is reserved for this classification and used for nothing else. The Swing states page shows the full series, each state’s index and how much every state moved between round 1 and round 2 in runoff years.
Forecast model
The headline comes solely from the transfer model: a state-by-state emulation of how round-1 votes redistribute between the two finalists in the runoff, weighted by electorate and expected abstention. Uncertainty is propagated by Monte Carlo simulation. Polls and the incumbency prior are computed and shown for comparison only.
Editorial decision: the headline number does not use polls; they appear only as a comparison.
Statistical forecast based on official TSE results and on polls registered with the TSE; it is not an opinion poll (TSE Resolution 23.600/2019).
Transfer
The transfer estimate starts from the proportional split of round 1 between the two finalists (baseline) and adjusts for the weight of each bloc’s eliminated candidates (β); the national swing between rounds (α) is treated as uncertainty, not as a prediction. Calibrated on the 2002–2022 runoffs, by state.
- β Left
- -0.085
- β Right
- 0.218
- α (σ)
- 4.77 pts
- σ resid.
- 3.07 pts
- n
- 168 · 2002, 2006, 2010, 2014, 2018, 2022
Polls
Average of runoff polls registered with the TSE, in valid votes, weighted down by age (half-life in days) and by institute reliability, and corrected by the house effect estimated in previous elections.
- Polls (effective n)
- 8 · nef 5.91
- Half-life
- 5 d
Prior
Historical result of previous runoffs with an incumbent-bloc adjustment and a wide standard deviation: it only anchors the estimate when the other sources are scarce.
- n
- 5
- σ
- 8.31 pts
National uncertainty: 4.77 pts standard deviation, estimated from the historical swing of the national result between round 1 and round 2, floored at 2.50 pts. (sd of year effects α_y (between-round national swing) floored at 2.5 pp)
Simulation: 20,000 scenarios with a national error of 4.77 pts standard deviation, a 3.00 pts error per state and 0.60 regional correlation. The win probability is the share of simulations in which each bloc exceeds 50% of valid votes.
Scenarios
- Base — the model as described above.
- High abstention in the Northeast — lower turnout in the Northeast region, reducing those states’ weight in the national total.
- Strong transfer from eliminated candidates — votes of eliminated candidates migrate to the finalist of the same bloc above the historical pattern.
Comparison: polls and prior (not part of the number)
Average of the selected polls: 48.89% for the left (raw), 47.18% after the house-effect correction. Incumbency prior: 51.27% for the left. Both appear next to the projection for the reader to compare, without changing the headline.
Institute house effects
For each institute we compare the margin (left − right) of its final polls before the 2022 rounds and the 2026 round 1 with the official result. The mean signed error is subtracted from the 2026 polls; reliability (0–1) weights each institute in the average.
| Institute | Obs. | Mean signed error (pts) | MAE (pts) | Reliability |
|---|---|---|---|---|
| AtlasIntel | 3 | +3.41 | 4.54 | 0.52 |
| Datafolha | 3 | +3.96 | 5.28 | 0.49 |
| MDA/CNT | 3 | +2.83 | 3.78 | 0.57 |
| Quaest | 3 | +3.26 | 4.34 | 0.54 |
| Futura | 2 | −0.89 | 1.33 | 0.79 |
| Ipsos-Ipec | 2 | +4.99 | 7.48 | 0.40 |
| Paraná Pesquisas | 2 | +0.29 | 1.44 | 0.78 |
| BTG/Nexus | 1 | +3.43 | 6.87 | 0.42 |
| Ipespe/Abrapel | 1 | +3.88 | 7.77 | 0.39 |
| PoderData/Aya | 1 | +1.93 | 3.87 | 0.56 |
| Real Time Big Data | 1 | +3.43 | 6.87 | 0.42 |
In the elections used for calibration, polls on average overstated the left-bloc candidate by 2.81 pts. The correction therefore moves the poll average from 48.89% to 47.18% of valid votes for the left — toward the right-bloc finalist.
Backtest
Leave-one-year-out validation using transfer + prior only — there are no historical polls in the repository — so the error is wider than the full ensemble’s.
| Year | Predicted (median) | 80% interval | Actual | Error | P(left) | In interval |
|---|---|---|---|---|---|---|
| 2002 | 66.89% | 60.29–73.39% | 61.27% | +5.62 | 100% | ✓ |
| 2006 | 53.07% | 48.27–57.71% | 60.83% | −7.76 | 79% | ✗ |
| 2010 | 57.29% | 50.28–64.22% | 56.05% | +1.24 | 91% | ✓ |
| 2014 | 54.85% | 47.63–61.95% | 51.64% | +3.21 | 80% | ✓ |
| 2018 | 36.48% | 30.74–42.08% | 44.87% | −8.39 | 0% | ✗ |
| 2022 | 53.96% | 47.11–60.73% | 50.90% | +3.06 | 77% | ✓ |
4 of 6 years inside the 80% interval.
Sources
Official TSE results by municipality and zone (1989 by state only, since the TSE did not publish that year by municipality). Each downloaded file is identified by its SHA-256 hash.
| Year | File | Granularity | SHA-256 | Downloaded |
|---|---|---|---|---|
| 1989 | votacao_candidato_uf_1989.zip | State · 1º, 2º | 10197cf6f047… | 10/19/2026, 02:38 PM GMT-3 |
| 1989 | detalhe_votacao_uf_1989.zip | State · 1º, 2º | 872b3788c780… | 10/19/2026, 02:38 PM GMT-3 |
| 1994 | votacao_candidato_munzona_1994.zip | Municipality · 1º | 67e6525a84ae… | 10/19/2026, 02:38 PM GMT-3 |
| 1994 | detalhe_votacao_munzona_1994.zip | Municipality · 1º | a540bebfe130… | 10/19/2026, 02:38 PM GMT-3 |
| 1998 | votacao_candidato_munzona_1998.zip | Municipality · 1º | 8cb16d1c4901… | 10/19/2026, 02:38 PM GMT-3 |
| 1998 | detalhe_votacao_munzona_1998.zip | Municipality · 1º | 15ef1975b291… | 10/19/2026, 02:38 PM GMT-3 |
| 2002 | votacao_candidato_munzona_2002.zip | Municipality · 1º, 2º | c1b7eabc9415… | 10/19/2026, 02:39 PM GMT-3 |
| 2002 | detalhe_votacao_munzona_2002.zip | Municipality · 1º, 2º | 2b4d6a6f5af4… | 10/19/2026, 02:38 PM GMT-3 |
| 2006 | votacao_candidato_munzona_2006.zip | Municipality · 1º, 2º | 9bd23c339924… | 10/19/2026, 02:39 PM GMT-3 |
| 2006 | detalhe_votacao_munzona_2006.zip | Municipality · 1º, 2º | 9cc8d3a710f3… | 10/19/2026, 02:38 PM GMT-3 |
| 2010 | votacao_candidato_munzona_2010.zip | Municipality · 1º, 2º | fc7052974632… | 10/19/2026, 02:39 PM GMT-3 |
| 2010 | detalhe_votacao_munzona_2010.zip | Municipality · 1º, 2º | 5f0ea64db232… | 10/19/2026, 02:38 PM GMT-3 |
| 2014 | votacao_candidato_munzona_2014.zip | Municipality · 1º, 2º | f41bceb42782… | 10/19/2026, 02:39 PM GMT-3 |
| 2014 | detalhe_votacao_munzona_2014.zip | Municipality · 1º, 2º | f9195f8988ed… | 10/19/2026, 02:38 PM GMT-3 |
| 2018 | votacao_candidato_munzona_2018.zip | Municipality · 1º, 2º | f880848ef4ba… | 10/19/2026, 02:39 PM GMT-3 |
| 2018 | detalhe_votacao_munzona_2018.zip | Municipality · 1º, 2º | df68c258a226… | 10/19/2026, 02:38 PM GMT-3 |
| 2022 | votacao_candidato_munzona_2022.zip | Municipality · 1º, 2º | bf030dc46440… | 10/19/2026, 02:39 PM GMT-3 |
| 2022 | detalhe_votacao_munzona_2022.zip | Municipality · 1º, 2º | 402c9983670e… | 10/19/2026, 02:38 PM GMT-3 |
| 2026 | votacao_candidato_munzona_2026.zip | Municipality · 1º, 2º | 197222cff9df… | 10/19/2026, 02:39 PM GMT-3 |
| 2026 | detalhe_votacao_munzona_2026.zip | Municipality · 1º, 2º | dfd131aaaf18… | 10/19/2026, 02:38 PM GMT-3 |
Ingestion notes by year
- 1989: UF-level source files (TSE did not publish 1989 by municipality); votacao: 672 rows; detalhe: 56 rows; electorate: valid = QTD_VOTOS_NOMINAIS; null = QTD_VOTOS_NULOS; check: sum of candidate votes ≠ detalhe valid in 7 (round, unit) rows (max |diff| 1294); UF:AL r2 +1294, UF:RJ r2 -429, UF:PR r2 -423, UF:CE r2 -297, UF:PA r2 -82, UF:MA r2 -64, UF:RS r2 +1
- 1994: votacao: votacao_candidato_munzona_1994_BR.csv; votes column: QT_VOTOS_NOMINAIS_VALIDOS; detalhe: detalhe_votacao_munzona_1994_BR.csv; electorate: valid = QT_VOTOS_NOMINAIS_VALIDOS; null = QT_VOTOS_NULOS + QT_VOTOS_NULOS_TECNICOS; electorate: QT_TOTAL_VOTOS_VALIDOS sums to 0 vs QT_VOTOS_NOMINAIS_VALIDOS 63,285,633 (component column used); electorate: QT_TOTAL_VOTOS_NULOS sums to 0 vs QT_VOTOS_NULOS+TECNICOS 7,443,144 (component columns used); check: no ZZ (abroad) rows in the source file; check: sum of candidate votes equals detalhe valid votes in every unit
- 1998: votacao: streamed votacao_candidato_munzona_1998_BRASIL.csv and kept 73,284 presidential rows (no _BR member in this zip); votes: QT_VOTOS_NOMINAIS sums to 0 but QT_VOTOS_NOMINAIS_VALIDOS to 67,722,303; using QT_VOTOS_NOMINAIS_VALIDOS; votes column: QT_VOTOS_NOMINAIS_VALIDOS; detalhe: detalhe_votacao_munzona_1998_BR.csv; electorate: valid = QT_VOTOS_NOMINAIS_VALIDOS; null = QT_VOTOS_NULOS + QT_VOTOS_NULOS_TECNICOS; check: sum of candidate votes equals detalhe valid votes in every unit
- 2002: votacao: votacao_candidato_munzona_2002_BR.csv; votes column: QT_VOTOS_NOMINAIS; detalhe: detalhe_votacao_munzona_2002_BR.csv; electorate: valid = QT_VOTOS_NOMINAIS_VALIDOS; null = QT_VOTOS_NULOS + QT_VOTOS_NULOS_TECNICOS; electorate: 2,891 votes 'anulados em apuração separada' are in turnout but not in valid/blank/null; check: sum of candidate votes equals detalhe valid votes in every unit
- 2006: votacao: votacao_candidato_munzona_2006_BR.csv; votes column: QT_VOTOS_NOMINAIS; detalhe: detalhe_votacao_munzona_2006_BR.csv; electorate: valid = QT_VOTOS_NOMINAIS_VALIDOS; null = QT_VOTOS_NULOS + QT_VOTOS_NULOS_TECNICOS; electorate: QT_TOTAL_VOTOS_NULOS sums to 10,728,493 vs QT_VOTOS_NULOS+TECNICOS 10,766,074 (component columns used); check: sum of candidate votes equals detalhe valid votes in every unit
- 2010: votacao: votacao_candidato_munzona_2010_BR.csv; votes column: QT_VOTOS_NOMINAIS; 364 rows flagged ST_VOTO_EM_TRANSITO='S' (summed into their UF/municipality); detalhe: detalhe_votacao_munzona_2010_BR.csv; electorate: valid = QT_VOTOS_NOMINAIS_VALIDOS; null = QT_VOTOS_NULOS + QT_VOTOS_NULOS_TECNICOS; electorate: 272 votes 'anulados em apuração separada' are in turnout but not in valid/blank/null; VT (voto em trânsito) folded into BR only — round 1: 64,698, round 2: 53,035; check: 56 (round, unit) rows in detalhe without any candidate votes; check: sum of candidate votes equals detalhe valid votes in every unit
- 2014: votacao: votacao_candidato_munzona_2014_BR.csv; votes column: QT_VOTOS_NOMINAIS; 1,090 rows flagged ST_VOTO_EM_TRANSITO='S' (summed into their UF/municipality); detalhe: detalhe_votacao_munzona_2014_BR.csv; electorate: valid = QT_VOTOS_NOMINAIS_VALIDOS; null = QT_VOTOS_NULOS + QT_VOTOS_NULOS_TECNICOS; check: 74 (round, unit) rows in detalhe without any candidate votes; check: sum of candidate votes equals detalhe valid votes in every unit
- 2018: votacao: votacao_candidato_munzona_2018_BR.csv; votes column: QT_VOTOS_NOMINAIS_VALIDOS; detalhe: detalhe_votacao_munzona_2018_BR.csv; electorate: valid = QT_VOTOS_NOMINAIS_VALIDOS; null = QT_VOTOS_NULOS + QT_VOTOS_NULOS_TECNICOS; electorate: 746 votes 'anulados em apuração separada' are in turnout but not in valid/blank/null; check: 66 (round, unit) rows in detalhe without any candidate votes; check: sum of candidate votes equals detalhe valid votes in every unit
- 2022: votacao: votacao_candidato_munzona_2022_BR.csv; votes column: QT_VOTOS_NOMINAIS_VALIDOS; detalhe: detalhe_votacao_munzona_2022_BR.csv; electorate: valid = QT_VOTOS_NOMINAIS_VALIDOS; null = QT_VOTOS_NULOS + QT_VOTOS_NULOS_TECNICOS; check: sum of candidate votes equals detalhe valid votes in every unit
- 2026: votacao: votacao_candidato_munzona_2026_BR.csv; votes column: QT_VOTOS_NOMINAIS_VALIDOS; detalhe: detalhe_votacao_munzona_2026_BR.csv; electorate: valid = QT_VOTOS_NOMINAIS_VALIDOS; null = QT_VOTOS_NULOS + QT_VOTOS_NULOS_TECNICOS; check: sum of candidate votes equals detalhe valid votes in every unit; round 2: UF-level totals from the TSE live JSON (resultados.tse.jus.br) captured on election night; national file at 99,96% of sections, generated 25/10/2026 21:52:05; valid votes 124,035,553
- TSE — Repositório de Dados Eleitorais — votacao_candidato_munzona and detalhe_votacao_munzona files per year.
- TSE — Divulgação de resultados — official per-state JSON used by the Live page.
- IBGE — Malhas — state and municipality boundaries, simplified.
- Polls: only institutes registered with the TSE; the registration number and release URL accompany every row of polls.json.
Privacy (LGPD)
The site uses only public, aggregated data from the TSE (totals by municipality, zone and state) and from IBGE. There is no personal voter data at any stage. The site sets no cookies and uses no personal identifiers; audience metrics are aggregate and anonymous.
License
Exported data and taxonomy: CC-BY 4.0, with attribution to the TSE and IBGE. Site code: closed.