Metodologia e fontes
Como calculamos
Só arquivos oficiais do TSE: eleições 6257 (1º turno, 04/10/2026) e 6258 (2º turno, 25/10/2026), cargo Presidente. Dados gerados em 26/10/2026; nada é consultado no TSE enquanto você navega.
Quem fez e como falar com a gente
Responsável: Pedro Laterza.
Contato: DM no Instagram @soupedrolaterza.
Log de validação desta geração: validacao.md (legível) e validacao.json (completo).
Arquivos usados
Só arquivos oficiais do TSE. Nenhuma outra fonte de votos.
- votacao_secao_2026_BR.zip, gerado em 26/10/2026, 241.891.087 bytes
- eleitorado_local_votacao_2026.zip, 167.493.511 bytes (só latitude e longitude dos locais, para o mapa)
- bweb_1t_AC_051020261403.zip, 16.959.055 bytes, SHA-512 c095164588a0ad4f… (conferido com o arquivo .sha512 do TSE)
- bweb_1t_AL_051020261403.zip, 48.253.491 bytes, SHA-512 dc4340c5d6ff227b… (conferido com o arquivo .sha512 do TSE)
- bweb_1t_AM_051020261403.zip, 77.017.934 bytes, SHA-512 143619aaf27787f2… (conferido com o arquivo .sha512 do TSE)
- bweb_1t_AP_051020261403.zip, 16.659.046 bytes, SHA-512 bd40faf189a3ba04… (conferido com o arquivo .sha512 do TSE)
- bweb_1t_BA_051020261403.zip, 324.997.821 bytes, SHA-512 8fc0b0c6e926af2c… (conferido com o arquivo .sha512 do TSE)
- bweb_1t_CE_051020261403.zip, 203.005.857 bytes, SHA-512 0ac4f8dbcd6eb06e… (conferido com o arquivo .sha512 do TSE)
- bweb_1t_DF_051020261403.zip, 77.026.962 bytes, SHA-512 10916bdfc73018da… (conferido com o arquivo .sha512 do TSE)
- bweb_1t_ES_051020261403.zip, 81.978.606 bytes, SHA-512 fb3dc71fccd1528f… (conferido com o arquivo .sha512 do TSE)
- bweb_1t_GO_051020261403.zip, 157.210.218 bytes, SHA-512 995aa51719659a4f… (conferido com o arquivo .sha512 do TSE)
- bweb_1t_MA_051020261403.zip, 142.453.462 bytes, SHA-512 28eda5cc72f2d7f2… (conferido com o arquivo .sha512 do TSE)
- bweb_1t_MG_051020261403.zip, 489.306.781 bytes, SHA-512 c0d4a82adb1fa1c8… (conferido com o arquivo .sha512 do TSE)
- bweb_1t_MS_051020261403.zip, 51.978.602 bytes, SHA-512 e62c150f16fff1a4… (conferido com o arquivo .sha512 do TSE)
- bweb_1t_MT_051020261403.zip, 63.492.478 bytes, SHA-512 0b97fc665251f8a8… (conferido com o arquivo .sha512 do TSE)
- bweb_1t_PA_051020261403.zip, 172.050.487 bytes, SHA-512 7ec84395ef9ce10f… (conferido com o arquivo .sha512 do TSE)
- bweb_1t_PB_051020261403.zip, 77.916.707 bytes, SHA-512 22784224b1e752b1… (conferido com o arquivo .sha512 do TSE)
- bweb_1t_PE_051020261403.zip, 204.972.135 bytes, SHA-512 8d01dd88ba42adf6… (conferido com o arquivo .sha512 do TSE)
- bweb_1t_PI_051020261403.zip, 66.216.824 bytes, SHA-512 c77cafd731174321… (conferido com o arquivo .sha512 do TSE)
- bweb_1t_PR_051020261403.zip, 270.246.858 bytes, SHA-512 762372bbafff5967… (conferido com o arquivo .sha512 do TSE)
- bweb_1t_RJ_051020261403.zip, 536.375.038 bytes, SHA-512 15fec8c7104496cb… (conferido com o arquivo .sha512 do TSE)
- bweb_1t_RN_051020261403.zip, 54.412.606 bytes, SHA-512 8c306c4501a9c5f9… (conferido com o arquivo .sha512 do TSE)
- bweb_1t_RO_051020261403.zip, 36.216.443 bytes, SHA-512 883b0c3cdf8047d9… (conferido com o arquivo .sha512 do TSE)
- bweb_1t_RR_051020261403.zip, 11.931.936 bytes, SHA-512 4cde1919c20ba094… (conferido com o arquivo .sha512 do TSE)
- bweb_1t_RS_051020261403.zip, 270.859.776 bytes, SHA-512 b6dd056af20ce876… (conferido com o arquivo .sha512 do TSE)
- bweb_1t_SC_051020261403.zip, 153.178.332 bytes, SHA-512 618c1cacf80bc296… (conferido com o arquivo .sha512 do TSE)
- bweb_1t_SE_051020261403.zip, 46.931.962 bytes, SHA-512 dd1afedc6867ca78… (conferido com o arquivo .sha512 do TSE)
- bweb_1t_SP_051020261403.zip, 1.395.007.777 bytes, SHA-512 00c8b12de9077c82… (conferido com o arquivo .sha512 do TSE)
- bweb_1t_TO_051020261403.zip, 29.667.347 bytes, SHA-512 b936b450693c0074… (conferido com o arquivo .sha512 do TSE)
- bweb_1t_ZZ_051020261403.zip, 1.039.125 bytes, SHA-512 001ae12d79a7d5f9… (conferido com o arquivo .sha512 do TSE)
- bweb_2t_AC_261020260742.zip, 1.254.611 bytes, SHA-512 95f19aad9534d21e… (conferido com o arquivo .sha512 do TSE)
- bweb_2t_AL_261020260742.zip, 1.945.168 bytes, SHA-512 392ebb110ac066be… (conferido com o arquivo .sha512 do TSE)
- bweb_2t_AM_261020260742.zip, 4.276.454 bytes, SHA-512 c87f558d88f478af… (conferido com o arquivo .sha512 do TSE)
- bweb_2t_AP_261020260742.zip, 596.704 bytes, SHA-512 66f56ba91e90cd71… (conferido com o arquivo .sha512 do TSE)
- bweb_2t_BA_261020260742.zip, 9.513.048 bytes, SHA-512 15db0c47b3b445cc… (conferido com o arquivo .sha512 do TSE)
- bweb_2t_CE_261020260742.zip, 6.151.144 bytes, SHA-512 4d0abf43322e3530… (conferido com o arquivo .sha512 do TSE)
- bweb_2t_DF_261020260742.zip, 3.846.786 bytes, SHA-512 204e65d5d3eff30f… (conferido com o arquivo .sha512 do TSE)
- bweb_2t_ES_261020260742.zip, 5.275.706 bytes, SHA-512 e8805337ab66ffa5… (conferido com o arquivo .sha512 do TSE)
- bweb_2t_GO_261020260742.zip, 4.248.869 bytes, SHA-512 e5b6635dc3a05b7f… (conferido com o arquivo .sha512 do TSE)
- bweb_2t_MA_261020260742.zip, 4.609.442 bytes, SHA-512 90c1c9d2d1d0635c… (conferido com o arquivo .sha512 do TSE)
- bweb_2t_MG_261020260742.zip, 14.071.007 bytes, SHA-512 b2123700c7a520cc… (conferido com o arquivo .sha512 do TSE)
- bweb_2t_MS_261020260742.zip, 1.863.398 bytes, SHA-512 c16d211246f35c9d… (conferido com o arquivo .sha512 do TSE)
- bweb_2t_MT_261020260742.zip, 2.204.666 bytes, SHA-512 cf0e1bf1c0af0af4… (conferido com o arquivo .sha512 do TSE)
- bweb_2t_PA_261020260742.zip, 5.158.441 bytes, SHA-512 5908978e998fc61b… (conferido com o arquivo .sha512 do TSE)
- bweb_2t_PB_261020260742.zip, 2.871.353 bytes, SHA-512 79ec2b52387a8a1a… (conferido com o arquivo .sha512 do TSE)
- bweb_2t_PE_261020260742.zip, 5.761.723 bytes, SHA-512 5002c264cf9fff1b… (conferido com o arquivo .sha512 do TSE)
- bweb_2t_PI_261020260742.zip, 2.648.710 bytes, SHA-512 d864c6f671daf94d… (conferido com o arquivo .sha512 do TSE)
- bweb_2t_PR_261020260742.zip, 7.189.112 bytes, SHA-512 949659949df46057… (conferido com o arquivo .sha512 do TSE)
- bweb_2t_RJ_261020260742.zip, 10.004.912 bytes, SHA-512 dcb3131b618b9c39… (conferido com o arquivo .sha512 do TSE)
- bweb_2t_RN_261020260742.zip, 4.424.654 bytes, SHA-512 3da1a65ad338f6ef… (conferido com o arquivo .sha512 do TSE)
- bweb_2t_RO_261020260742.zip, 1.250.142 bytes, SHA-512 4e25932384114f73… (conferido com o arquivo .sha512 do TSE)
- bweb_2t_RR_261020260742.zip, 500.520 bytes, SHA-512 3986628e101b7a9f… (conferido com o arquivo .sha512 do TSE)
- bweb_2t_RS_261020260742.zip, 7.410.270 bytes, SHA-512 39f0c7e216972216… (conferido com o arquivo .sha512 do TSE)
- bweb_2t_SC_261020260742.zip, 4.487.185 bytes, SHA-512 01b1e9638654fa69… (conferido com o arquivo .sha512 do TSE)
- bweb_2t_SE_261020260742.zip, 1.645.477 bytes, SHA-512 ea1460385ab222e8… (conferido com o arquivo .sha512 do TSE)
- bweb_2t_SP_261020260742.zip, 28.188.300 bytes, SHA-512 3078f38754ced924… (conferido com o arquivo .sha512 do TSE)
- bweb_2t_TO_261020260742.zip, 2.383.586 bytes, SHA-512 e667f9b68bb71065… (conferido com o arquivo .sha512 do TSE)
- bweb_2t_ZZ_261020260742.zip, 502.322 bytes, SHA-512 e024547f7d2c6e21… (conferido com o arquivo .sha512 do TSE)
- portal 6257: br, 28 UFs e 5.757 municípios (JSON), gerado em 05/10/2026
- portal 6258: br, 28 UFs e 5.757 municípios (JSON), gerado em 25/10/2026
Os boletins de urna dos dois turnos (arquivos bweb) trazem aptos, comparecimento, abertura, encerramento, habilitados sem a biometria e junta apuradora, todos com campo confirmado no leiame do próprio arquivo.
Validação: só publicamos se bater
Para cada município, a soma das seções (aptos, comparecimento, votos válidos, Flávio, Lula, outros, branco e nulo) é comparada ao JSON oficial do portal do TSE da cidade, nos dois turnos. Se a diferença passar de 0,1% do comparecimento, a build falha e nada é publicado. Nesta geração, 5.716 cidades foram conferidas e 5.715 ficaram idênticas em todos os campos.
A exceção registrada é Trípoli (exterior), no 2º turno: sua única seção não teve nenhum votante, e por isso não aparece nos arquivos abertos. Aptos e comparecimento dessa cidade no 2º turno aparecem como “sem dado publicado”.
No total do Brasil, os aptos somados dos boletins ficam 495 (1º turno) e 525 (2º turno) abaixo do portal. A diferença está toda no exterior: 41 cidades sem seção instalada, sem boletim, e a seção de Trípoli no 2º turno.
Nulos técnicos: o arquivo aberto traz votos de uma candidatura (número 28) que o portal não conta como válida. Como o portal, somamos esses votos ao nulo. A diferença por município está no log de validação.
Testes obrigatórios conferidos a cada build, com os números do portal: Campos dos Goytacazes/RJ, Silva Jardim/RJ e Brasil, além dos testes de borda (candidato sem voto no 1º turno, nome de cidade repetido, seção agregada única, cidade com menos de 20 seções).
Fórmulas
Voto válido é o voto em candidato. Branco e nulo não entram em voto válido e não vão para nenhum candidato.
percentual do candidato = votos do candidato ÷ votos válidos abstenção = aptos − comparecimento outros (1º turno) = votos válidos − Flávio − Lula crescimento absoluto = votos no 2º turno − votos no 1º turno crescimento percentual = crescimento absoluto ÷ votos no 1º turno (só se votos no 1º > 0; senão "sem voto no 1º turno") variação em pontos = percentual nos válidos no 2º − percentual no 1º
Frase de destaque e cores do cartão. O cartão da tela inicial mostra a primeira situação que se aplica: virada (quem estava atrás no 1º turno terminou na frente); um candidato perdeu votos enquanto o outro ganhou; um ganhou menos de 10% do que o outro ganhou (com o outro ganhando ao menos 50 votos); quem venceu cresceu menos, em percentual, do que quem perdeu; e, se nada disso acontece, como mudou a diferença entre os dois. Verde marca o maior crescimento percentual e vermelho o menor. É uma comparação de saldos: não diz por que os números mudaram.
Votos livres é um termo nosso, de explicação, não do TSE. Votos livres = votos válidos de candidatos que saíram da disputa + crescimento dos votos válidos.
votos livres = outros (1º turno) + (votos válidos no 2º − votos válidos no 1º) se votos livres > 0: fatia do Lula = crescimento do Lula ÷ votos livres fatia do Flávio = crescimento do Flávio ÷ votos livres se votos livres ≤ 0: "não houve voto livre no saldo"
As duas fatias somam 100%. Uma delas pode ser negativa quando um candidato perde votos no saldo. Isto é saldo: o total não diz quem trocou de voto, quem faltou ou quem voltou.
Horário das urnas. Para cada seção, duração = encerramento − abertura. Por cidade e por turno mostramos medianas (nunca médias) de abertura, encerramento e duração, e o primeiro e o terceiro quartil da duração (método inclusivo).
horário de Brasília = horário da urna + ajuste do fuso da UF Acre: +2h · Amazonas, Mato Grosso, Mato Grosso do Sul, Rondônia, Roraima: +1h · demais: 0h exterior: sem conversão nesta versão (horário do país)
Comparação com vizinhos. Grupo = UF + município + zona + local de votação (o mesmo número de local se repete em zonas diferentes). Usa o 2º turno.
p = mediana do percentual do Flávio nas outras seções do grupo (sem a própria seção) n = votos válidos da seção; x = votos do Flávio na seção desvio em votos = n × p − x (votos esperados pela mediana menos observados) desvio padronizado z = (x − n × p) ÷ √(n × p × (1 − p)) (aproximação binomial) limite = Φ⁻¹(1 − 0,05 ÷ (2 × N)), N = seções testadas (correção de Bonferroni) Nesta geração: N = 477.010, limite = 5,32
Selo “Acima” quando |z| passa do limite; “Dentro” quando não passa; “Medido” quando p é 0% ou 100% (sem variância para comparar). Seção sozinha no local fica “sem vizinhos no mesmo local para comparar” e não entra no ranking. Seção com menos de 30 votos válidos leva o aviso “seção pequena, poucos votos mudam muito o percentual”.
Benchmark. Cada cidade vale um ponto. A mediana do estado e a do Brasil são as medianas, entre as cidades, do crescimento percentual do Lula, do crescimento percentual do Flávio e da fatia do Lula nos votos livres. Cidades sem valor definido ficam de fora daquela mediana. Exterior é comparado só com o exterior.
Limites de cada verificação
- Soma das seções x portal: confere números publicados pelo próprio TSE em dois arquivos; não confere a urna.
- Votos iguais ao comparecimento e comparecimento até os aptos: contas internas de cada boletim.
- Boletim igual ao arquivo de seções: os dois vêm do TSE; não é conferência com o boletim impresso.
- Vizinhos: a aproximação binomial ignora diferenças reais entre seções do mesmo local (por exemplo, perfil de eleitores por ordem de inscrição), então marca mais seções do que o acaso explicaria. Diferente dos vizinhos não prova irregularidade.
- Horário: relógio da urna, no fuso local. Encerramento é o fim do fechamento, não a hora do último voto. Fernando de Noronha e as cidades do oeste do Amazonas têm fuso diferente do da UF e não são tratadas à parte nesta versão.
- Habilitados sem a biometria: o boletim não diz o motivo nem em quem a pessoa votou.
- Mapa: posição pela mediana das coordenadas dos locais de votação do arquivo de locais do TSE; é ilustrativo.
- Sugestões da busca: entre nomes parecidos, as cidades com mais eleitores aparecem primeiro, porque não medimos o que é mais buscado (não há rastreamento).
O que a plataforma não verifica
- Assinatura digital, cadeia e soma criptográfica dos boletins: não verificado nesta versão.
- Registros (logs) das urnas e a hora de cada voto.
- Boletim impresso comparado com o digital.
- O programa dentro da urna e o voto individual, que é secreto.
- Comparação com 2022 e 2018 (fica para a versão 2, com arquivos históricos validados).
- Ocorrências sem campo no leiame do boletim: prorrogação, urna de contingência (o arquivo só traz a urna efetivada) e dados recuperados. Também não há campo de modelo da urna nem de tipo de apuração. Por isso não aparecem.
Registro de alterações
- Versão 1.0, 29/10/2026 23:46: primeira geração, com votacao_secao_2026_BR (gerado em 26/10/2026), boletins de urna dos dois turnos e JSON do portal de 5.757 municípios.
Qualquer atualização é uma nova geração estática, com nova data e nova linha aqui.