Please rotate your device

This app is best viewed in landscape mode.

2027 French Presidential — Polling & Forecast

Live tracker of opinion polls and a transition-matrix-based R2 forecast, estimated from commune-level results of the 2017 and 2022 elections.

Round 1 polling

Average of all polls fielded in the last 60 days. Whiskers show min–max range across institutes. Bars are colour-coded by political bloc.

Source : Wikipedia — Opinion polling for the 2027 French presidential election
Running candidate per party:
Sources : Wikipedia (en) · BVA · Ifop · Ipsos · Elabe · OpinionWay · Harris Interactive · Cluster17

2027 second-round forecast

Predicted R2 share = matrix · current R1 distribution. Polled = latest published head-to-head from the 2027 polls archive.

Voter flow Sankey — R1 → R2

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).

Transition matrix

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.

Backtest — predicted vs. actual R2 results

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.

About this model

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.