New South Wales electoral pendulum
Source: NSW Parliament 2023 preview pendulum; Antony Green 2023 pendulum.
Election: 25 March 2023 — Labor 47 seats, Coalition 36, crossbench 10.
Next election: March 2027.
Last updated: 2026-05-30 (Phase 4)
Labor under Chris Minns.
Coalition-held — Labor targets (2PP margin)
| Rank | District | Party | Margin % | Watch |
|---|---|---|---|---|
| 1 | East Hills | LIB | +0.1 LIB | Yes |
| 2 | Upper Hunter | NAT | +0.5 NAT | Yes |
| 3 | Penrith | LIB | +0.6 LIB | Yes |
| 4 | Goulburn | LIB | +3.1 LIB | Yes |
| 5 | Willoughby | LIB | +3.3 LIB | Yes |
| 6 | Tweed | NAT | +5.0 NAT | Yes |
| 7 | Winston Hills | LIB | +5.7 LIB | Yes |
| 8 | Holsworthy | LIB | +6.0 LIB | Yes |
| 9 | Riverstone | LIB | +6.2 LIB | Yes |
| 10 | Parramatta | LIB | +6.5 LIB | Yes |
| 11 | Oatley | LIB | +6.8 LIB | Yes |
| 12 | Camden | LIB | +7.3 LIB | Yes |
| 13 | Ryde | LIB | +8.9 LIB | Yes |
| 14 | Myall Lakes | NAT | +9.3 NAT | Yes |
| 15 | Badgerys Creek | LIB | +9.7 LIB | Yes |
| 16 | South Coast | LIB | +10.6 LIB | Yes |
| 17 | Terrigal | LIB | +12.3 LIB | Yes |
| 18 | Miranda | LIB | +14.4 LIB | Yes |
| 19 | Kellyville | LIB | +23.1 LIB | Yes |
Labor-held — Coalition targets (2PP margin)
| Rank | District | Party | Margin % | Watch |
|---|---|---|---|---|
| 1 | Kogarah | ALP | +0.1 ALP | Yes |
| 2 | Leppington | ALP | +1.5 ALP | Yes |
| 3 | Heathcote | ALP | +1.7 ALP | Yes |
| 4 | Lismore | ALP | +2.0 ALP | Yes |
| 5 | Coogee | ALP | +2.3 ALP | Yes |
| 6 | Londonderry | ALP | +3.0 ALP | Yes |
| 7 | Bega | ALP | +5.1 ALP | Yes |
| 8 | Strathfield | ALP | +5.2 ALP | Yes |
| 9 | The Entrance | ALP | +5.3 ALP | Yes |
| 10 | Port Stephens | ALP | +5.8 ALP | Yes |
| 11 | Gosford | ALP | +7.1 ALP | Yes |
| 12 | Maroubra | ALP | +8.3 ALP | Yes |
| 13 | Prospect | ALP | +8.6 ALP | Yes |
| 14 | Granville | ALP | +9.4 ALP | Yes |
| 15 | Rockdale | ALP | +10.0 ALP | Yes |
Crossbench & non-classic (selected)
| District | Party | Margin % | Notes |
|---|---|---|---|
| Murray | IND | +2.8 IND | Non-classic contest |
| Ballina | GRN | +4.9 GRN | Non-classic contest |
| Barwon | IND | +6.6 IND | Non-classic contest |
| Balmain | GRN | +10.0 GRN | Non-classic contest |
| Newtown | GRN | +11.4 GRN | Non-classic contest |
| Sydney | IND | +11.8 IND | Non-classic contest |
Many Sydney seats are now IND/GRN contests — uniform swing models understate volatility.
Regenerate: python scripts/build_state_pendulum.py