Explore elections across the income distribution

Elections
Census
Income
Distribution
Interactive vote-share curves across Census 2022 tract-income percentiles, with downloadable aggregates and explicit spatial coverage.
Published

October 15, 2026

Português

Which candidates receive more support in poorer and richer areas? Explore the curves below. The horizontal axis ranks census tracts by the mean income of household heads with income in Census 2022, from the poorest 1% of eligible tracts to the richest 1%. These are groups of tracts, rather than population or voter percentiles.

WarningIncome describes the census tract, not the voter

A higher vote share associated with higher-income census tracts does not establish that higher-income voters voted for that candidate. Income is the mean for household heads in the tract in Census 2022; we do not know the income of the person who cast each vote.

Vote share is a territorial estimate: each tract receives the share from the nearest eligible polling place in the same municipality, within 5 km. Proximity does not establish where residents vote. The curve averages these shares across observed tracts in each percentile, without weighting by the number of residents or voters.

Coverage can differ substantially across income groups. A curve segment may represent very few tracts even when overall coverage is high. Check the included/total tracts in the hover; low-coverage points require caution. Reconciliation with TSE totals checks the input votes, but does not validate the spatial assignment or identify individual voting behavior. This analysis does not certify an exact replication of Folha’s method.

Note

This is an independent spatial reconstruction of the approach illustrated by Daniel Mariani’s analysis in Folha de S.Paulo. The selectors show only processed series. Their availability varies by election, round, office and territory; absent combinations are unavailable. The coverage and vote-reconciliation panels describe the selected series. This page does not claim an exact replication of the newspaper’s estimator.

Candidates

Loading aggregate data…

Read the chart

Hover over a curve to inspect vote share, mean income in 2022 minimum wages, and the number of tracts. Toggle candidates to compare curves. The chart’s camera button exports a PNG. Candidate search accepts names, ballot numbers and parties; the initial selection shows the six highest mean tract shares when more than six candidates are available. Search results do not clear the selected curves. This ordering is not a ranking of total votes. Download links provide the displayed aggregate series and the complete availability manifest.

Each tract receives the vote shares of its nearest eligible polling place, within the same municipality and at most 5 km away. The displayed share is the unweighted mean across tracts in each percentile. The denominator includes all legally valid nominal and party-list votes applicable to that office, including candidates whose curves are hidden. Blank and invalid votes are excluded. Senate vote percentages use valid votes, rather than unique voters; the number of senatorial choices varies by election. A polling place may supply estimates for multiple tracts.

The reconciliation panel concerns electoral input totals: it compares the processed votes with official TSE aggregates for the selected contest. A successful check does not validate the geocoding, the proximity estimator, the vote attribution to tracts or the newspaper reproduction. Unreconciled or unaudited data must not be described as reconciled.

Territorial association does not establish how individual income groups voted. Historical comparisons must keep the 2022 income reference fixed and document changes in coverage and polling-place locations. Expanded historical series rank all tracts with eligible Census 2022 income before electoral exclusions. In Income reference, “Within state” ranks only that state’s tracts: the richest end represents the richest tracts within the state. This is the default for state offices. “Brazil” retains their position in the national income distribution, supporting comparisons of income levels across territories. A tract can be rich within its state and occupy a middle position nationally. Switching references changes the groups, while keeping each tract’s assigned vote shares; these curves do not count votes by income group. Keep the same reference when comparing elections. A percentile’s mean income describes its complete income-eligible group in the selected territory; its covered tract count can be smaller. No local estimate is shown as a zero vote share merely because the spatial match is missing.

Income is measured in 2022 for every election. The historical curves therefore describe earlier voting patterns across areas ranked by their 2022 income; they do not measure income at the time of each election. Source and method records must document the geography used and any polling-place proxies. When only a first-round register is available, second-round votes use that same year’s register, with a notice in the coverage panel. Address changes under an unchanged place key cannot be detected in that case.

Reproduce and expand

The original reconstruction documents the upstream pipeline, exclusions, proximity sensitivity and numerical checks. This explorer reads small static JSON files and requires no application server. Its data contract defines how validated series for additional elections, rounds, offices and states enter the same interface. The source is app.js; all downloaded files contain aggregate values.

For state elections, candidates and their denominators must be compared within the relevant state and office. A national curve for a state-level candidate would require a separate, explicitly justified aggregation rule. Missing series are unavailable, rather than zero votes.