Average of all polls fielded in the last 60 days. Whiskers show min–max range across institutes. Bars are colour-coded by political bloc.
Predicted R2 share = matrix · current R1 distribution. Polled = latest published head-to-head from the 2027 polls archive.
Each ribbon's width is the share of registered voters flowing from a R1 candidate to a R2 outcome (CENT-leader, EXD-leader, or abstention/blanc/nul).
One bar per source bloc. Each segment = P(target | source). Drag the boundary between two segments to redistribute mass; the rest of the row stays put. The forecast and Sankey update live.
For 2017 and 2022, apply our R1→R2 matrix to the actual R1 vote totals and compare to the actual R2 result. The matrix is consistently several points Macron-favourable — see the Δ column.
This forecast uses commune-level results from the 2017 and 2022 French presidential elections (data.gouv.fr) to estimate a constrained least-squares transition matrix at the political-bloc level (EXG / GAU / DIV / CENT / DTE / EXD plus abstention/blanc/nul). The current R1 polling distribution is multiplied by the matrix to predict R2 outcomes for each plausible scenario.
Polling sources: Wikipedia (English + French) and NSPPolls. Transition matrices fit on ~35,000 communes.
v2 matrices (May 2026): each row is now regularised toward published Ifop / Elabe / Ipsos reports de voix with strength tuned per scenario, and the per-département slice spread is used to flag rows that are weakly identified. This pulled the 2022 R1 DTE→Le Pen flow up from 3% to 25% (matches polls), and EXG→Le Pen from 0% to 9%. You can drag any segment in the matrix above to test alternative scenarios — the cards and Sankey update live.