Skip to content

Cunningham: preference flows

NSW · how preferences were distributed at the 2025, 2022, 2019 Federal elections

202520222019
Results by election
ElectionElectedRunner-upFinal marginCountsWon
2025Alison BYRNESLaborAmanda IVANEZALiberal40,4664Majority at count 4
2022Alison BYRNESLaborMarcus URENLiberal29,8955Majority at count 5
2019Sharon BIRDLaborChris ATLEELiberal26,9954Majority at count 4

2025 Federal election

Alison BYRNES (Labor) won Cunningham in 2025 with 77,970 of the 115,474 votes in the final count, beating Amanda IVANEZA (Liberal) by 40,466 votes (67.5% to 32.5%). Byrnes led on first preferences with 44.7% of 115,474 formal votes and passed the 57,738-vote majority at count 4.

115,474 formal votes6 candidates4 counts40,466-vote final margin

Cunningham 2025: preference flowsSankey diagram of the distribution of preferences in Cunningham at the 2025 Federal election. Alison BYRNES was elected after 4 counts, 77,970 votes to 37,504 for Amanda IVANEZA. The table below gives every figure.First prefsCount 1Count 2Count 3Count 4Alison BYRNES: 51,607 votes stay with themAmanda IVANEZA: 26,813 votes stay with themJess WHITTAKER: 23,584 votes stay with themJohn FULLER: 8,765 votes stay with themTim LAVERS: 3,048 votes stay with them555 votes from Alexis GARNAUT-MILLER (excluded) go to John FULLER361 votes from Alexis GARNAUT-MILLER (excluded) go to Tim LAVERS316 votes from Alexis GARNAUT-MILLER (excluded) go to Alison BYRNES235 votes from Alexis GARNAUT-MILLER (excluded) go to Amanda IVANEZA190 votes from Alexis GARNAUT-MILLER (excluded) go to Jess WHITTAKERAlison BYRNES: 51,923 votes stay with themAmanda IVANEZA: 27,048 votes stay with themJess WHITTAKER: 23,774 votes stay with themJohn FULLER: 9,320 votes stay with them1,663 votes from Tim LAVERS (excluded) go to Jess WHITTAKER770 votes from Tim LAVERS (excluded) go to John FULLER628 votes from Tim LAVERS (excluded) go to Alison BYRNES348 votes from Tim LAVERS (excluded) go to Amanda IVANEZAAlison BYRNES: 52,551 votes stay with themAmanda IVANEZA: 27,396 votes stay with themJess WHITTAKER: 25,437 votes stay with them6,046 votes from John FULLER (excluded) go to Amanda IVANEZA2,027 votes from John FULLER (excluded) go to Jess WHITTAKER2,017 votes from John FULLER (excluded) go to Alison BYRNESAlison BYRNES: 54,568 votes stay with themAmanda IVANEZA: 33,442 votes stay with them23,402 votes from Jess WHITTAKER (excluded) go to Alison BYRNES4,062 votes from Jess WHITTAKER (excluded) go to Amanda IVANEZAAlison BYRNES (ALP): 51,607 votes at first preferencesBYRNESAmanda IVANEZA (LP): 26,813 votes at first preferencesIVANEZAJess WHITTAKER (GRN): 23,584 votes at first preferencesWHITTAKERJohn FULLER (ON): 8,765 votes at first preferencesFULLERTim LAVERS (AJP): 3,048 votes at first preferencesAlexis GARNAUT-MILLER (CEC): 1,657 votes at first preferencesAlison BYRNES (ALP): 51,923 votes at count 1BYRNESAmanda IVANEZA (LP): 27,048 votes at count 1IVANEZAJess WHITTAKER (GRN): 23,774 votes at count 1WHITTAKERJohn FULLER (ON): 9,320 votes at count 1FULLERTim LAVERS (AJP): 3,409 votes at count 1Alison BYRNES (ALP): 52,551 votes at count 2BYRNESAmanda IVANEZA (LP): 27,396 votes at count 2IVANEZAJess WHITTAKER (GRN): 25,437 votes at count 2WHITTAKERJohn FULLER (ON): 10,090 votes at count 2FULLERAlison BYRNES (ALP): 54,568 votes at count 3BYRNESAmanda IVANEZA (LP): 33,442 votes at count 3IVANEZAJess WHITTAKER (GRN): 27,464 votes at count 3WHITTAKERAlison BYRNES (ALP): 77,970 votes at count 4BYRNES · electedAmanda IVANEZA (LP): 37,504 votes at count 4IVANEZA · runner-up
Each column is a count. Bar height = votes held; the candidate with the fewest votes is excluded and their votes flow to the others. Hover or tap a candidate to highlight their flows.

What happened, count by count

Where the preferences went

Cunningham 2025: where each excluded candidate’s votes went
CountExcludedVotes distributedPassed to
1Alexis GARNAUT-MILLERCitizens Party1,657
  • John FULLER (ON): 555 (33.5%)
  • Tim LAVERS (AJP): 361 (21.8%)
  • Alison BYRNES (ALP): 316 (19.1%)
  • Amanda IVANEZA (LP): 235 (14.2%)
  • Jess WHITTAKER (GRN): 190 (11.5%)
2Tim LAVERSAnimal Justice Party3,409
  • Jess WHITTAKER (GRN): 1,663 (48.8%)
  • John FULLER (ON): 770 (22.6%)
  • Alison BYRNES (ALP): 628 (18.4%)
  • Amanda IVANEZA (LP): 348 (10.2%)
3John FULLERPauline Hanson's One Nation10,090
  • Amanda IVANEZA (LP): 6,046 (59.9%)
  • Jess WHITTAKER (GRN): 2,027 (20.1%)
  • Alison BYRNES (ALP): 2,017 (20.0%)
4Jess WHITTAKERThe Greens27,464
  • Alison BYRNES (ALP): 23,402 (85.2%)
  • Amanda IVANEZA (LP): 4,062 (14.8%)

Votes after every count

Cunningham 2025: votes held by each candidate after every count (– = excluded)
CandidateFirst prefsCount 1Count 2Count 3Count 4
Alison BYRNESLabor · elected51,60751,92352,55154,56877,970
Amanda IVANEZALiberal26,81327,04827,39633,44237,504
Jess WHITTAKERThe Greens23,58423,77425,43727,464–
John FULLERPauline Hanson's One Nation8,7659,32010,090––
Tim LAVERSAnimal Justice Party3,0483,409–––
Alexis GARNAUT-MILLERCitizens Party1,657––––

2022 Federal election

Alison BYRNES (Labor) won Cunningham in 2022 with 65,783 of the 101,671 votes in the final count, beating Marcus UREN (Liberal) by 29,895 votes (64.7% to 35.3%). Byrnes led on first preferences with 40.1% of 101,671 formal votes and passed the 50,836-vote majority at count 5.

101,671 formal votes7 candidates5 counts29,895-vote final margin

Cunningham 2022: preference flowsSankey diagram of the distribution of preferences in Cunningham at the 2022 Federal election. Alison BYRNES was elected after 5 counts, 65,783 votes to 35,888 for Marcus UREN. The table below gives every figure.First prefsCount 1Count 2Count 3Count 4Count 5Alison BYRNES: 40,783 votes stay with themMarcus UREN: 25,418 votes stay with themDylan GREEN: 22,011 votes stay with themThomas GROGAN: 5,218 votes stay with themBen BRITTON: 4,936 votes stay with themMichael GLOVER: 2,207 votes stay with them292 votes from Alexis GARNAUT-MILLER (excluded) go to Dylan GREEN242 votes from Alexis GARNAUT-MILLER (excluded) go to Ben BRITTON183 votes from Alexis GARNAUT-MILLER (excluded) go to Alison BYRNES173 votes from Alexis GARNAUT-MILLER (excluded) go to Thomas GROGAN116 votes from Alexis GARNAUT-MILLER (excluded) go to Michael GLOVER92 votes from Alexis GARNAUT-MILLER (excluded) go to Marcus URENAlison BYRNES: 40,966 votes stay with themMarcus UREN: 25,510 votes stay with themDylan GREEN: 22,303 votes stay with themThomas GROGAN: 5,391 votes stay with themBen BRITTON: 5,178 votes stay with them928 votes from Michael GLOVER (excluded) go to Marcus UREN460 votes from Michael GLOVER (excluded) go to Ben BRITTON419 votes from Michael GLOVER (excluded) go to Thomas GROGAN264 votes from Michael GLOVER (excluded) go to Alison BYRNES252 votes from Michael GLOVER (excluded) go to Dylan GREENAlison BYRNES: 41,230 votes stay with themMarcus UREN: 26,438 votes stay with themDylan GREEN: 22,555 votes stay with themThomas GROGAN: 5,810 votes stay with them3,235 votes from Ben BRITTON (excluded) go to Thomas GROGAN969 votes from Ben BRITTON (excluded) go to Marcus UREN838 votes from Ben BRITTON (excluded) go to Alison BYRNES596 votes from Ben BRITTON (excluded) go to Dylan GREENAlison BYRNES: 42,068 votes stay with themMarcus UREN: 27,407 votes stay with themDylan GREEN: 23,151 votes stay with them4,841 votes from Thomas GROGAN (excluded) go to Marcus UREN2,279 votes from Thomas GROGAN (excluded) go to Dylan GREEN1,925 votes from Thomas GROGAN (excluded) go to Alison BYRNESAlison BYRNES: 43,993 votes stay with themMarcus UREN: 32,248 votes stay with them21,790 votes from Dylan GREEN (excluded) go to Alison BYRNES3,640 votes from Dylan GREEN (excluded) go to Marcus URENAlison BYRNES (ALP): 40,783 votes at first preferencesBYRNESMarcus UREN (LP): 25,418 votes at first preferencesURENDylan GREEN (GRN): 22,011 votes at first preferencesGREENThomas GROGAN (ON): 5,218 votes at first preferencesGROGANBen BRITTON (UAPP): 4,936 votes at first preferencesBRITTONMichael GLOVER (LDP): 2,207 votes at first preferencesAlexis GARNAUT-MILLER (CEC): 1,098 votes at first preferencesAlison BYRNES (ALP): 40,966 votes at count 1BYRNESMarcus UREN (LP): 25,510 votes at count 1URENDylan GREEN (GRN): 22,303 votes at count 1GREENThomas GROGAN (ON): 5,391 votes at count 1GROGANBen BRITTON (UAPP): 5,178 votes at count 1BRITTONMichael GLOVER (LDP): 2,323 votes at count 1Alison BYRNES (ALP): 41,230 votes at count 2BYRNESMarcus UREN (LP): 26,438 votes at count 2URENDylan GREEN (GRN): 22,555 votes at count 2GREENThomas GROGAN (ON): 5,810 votes at count 2GROGANBen BRITTON (UAPP): 5,638 votes at count 2BRITTONAlison BYRNES (ALP): 42,068 votes at count 3BYRNESMarcus UREN (LP): 27,407 votes at count 3URENDylan GREEN (GRN): 23,151 votes at count 3GREENThomas GROGAN (ON): 9,045 votes at count 3GROGANAlison BYRNES (ALP): 43,993 votes at count 4BYRNESMarcus UREN (LP): 32,248 votes at count 4URENDylan GREEN (GRN): 25,430 votes at count 4GREENAlison BYRNES (ALP): 65,783 votes at count 5BYRNES · electedMarcus UREN (LP): 35,888 votes at count 5UREN · runner-up
Each column is a count. Bar height = votes held; the candidate with the fewest votes is excluded and their votes flow to the others. Hover or tap a candidate to highlight their flows.

What happened, count by count

Where the preferences went

Cunningham 2022: where each excluded candidate’s votes went
CountExcludedVotes distributedPassed to
1Alexis GARNAUT-MILLERCitizens Party1,098
  • Dylan GREEN (GRN): 292 (26.6%)
  • Ben BRITTON (UAPP): 242 (22.0%)
  • Alison BYRNES (ALP): 183 (16.7%)
  • Thomas GROGAN (ON): 173 (15.8%)
  • Michael GLOVER (LDP): 116 (10.6%)
  • Marcus UREN (LP): 92 (8.4%)
2Michael GLOVERLiberal Democrats2,323
  • Marcus UREN (LP): 928 (39.9%)
  • Ben BRITTON (UAPP): 460 (19.8%)
  • Thomas GROGAN (ON): 419 (18.0%)
  • Alison BYRNES (ALP): 264 (11.4%)
  • Dylan GREEN (GRN): 252 (10.8%)
3Ben BRITTONUnited Australia Party5,638
  • Thomas GROGAN (ON): 3,235 (57.4%)
  • Marcus UREN (LP): 969 (17.2%)
  • Alison BYRNES (ALP): 838 (14.9%)
  • Dylan GREEN (GRN): 596 (10.6%)
4Thomas GROGANPauline Hanson's One Nation9,045
  • Marcus UREN (LP): 4,841 (53.5%)
  • Dylan GREEN (GRN): 2,279 (25.2%)
  • Alison BYRNES (ALP): 1,925 (21.3%)
5Dylan GREENThe Greens25,430
  • Alison BYRNES (ALP): 21,790 (85.7%)
  • Marcus UREN (LP): 3,640 (14.3%)

Votes after every count

Cunningham 2022: votes held by each candidate after every count (– = excluded)
CandidateFirst prefsCount 1Count 2Count 3Count 4Count 5
Alison BYRNESLabor · elected40,78340,96641,23042,06843,99365,783
Marcus URENLiberal25,41825,51026,43827,40732,24835,888
Dylan GREENThe Greens22,01122,30322,55523,15125,430–
Thomas GROGANPauline Hanson's One Nation5,2185,3915,8109,045––
Ben BRITTONUnited Australia Party4,9365,1785,638–––
Michael GLOVERLiberal Democrats2,2072,323––––
Alexis GARNAUT-MILLERCitizens Party1,098–––––

2019 Federal election

Sharon BIRD (Labor) won Cunningham in 2019 with 63,836 of the 100,677 votes in the final count, beating Chris ATLEE (Liberal) by 26,995 votes (63.4% to 36.6%). Bird led on first preferences with 46.6% of 100,677 formal votes and passed the 50,339-vote majority at count 4.

100,677 formal votes6 candidates4 counts26,995-vote final margin

Cunningham 2019: preference flowsSankey diagram of the distribution of preferences in Cunningham at the 2019 Federal election. Sharon BIRD was elected after 4 counts, 63,836 votes to 36,841 for Chris ATLEE. The table below gives every figure.First prefsCount 1Count 2Count 3Count 4Sharon BIRD: 46,923 votes stay with themChris ATLEE: 31,177 votes stay with themRowan HUXTABLE: 15,196 votes stay with themGrace Louise YOUNGER: 3,828 votes stay with themJohn GILL: 2,340 votes stay with them420 votes from John FLANAGAN (excluded) go to John GILL262 votes from John FLANAGAN (excluded) go to Chris ATLEE221 votes from John FLANAGAN (excluded) go to Sharon BIRD192 votes from John FLANAGAN (excluded) go to Grace Louise YOUNGER118 votes from John FLANAGAN (excluded) go to Rowan HUXTABLESharon BIRD: 47,144 votes stay with themChris ATLEE: 31,439 votes stay with themRowan HUXTABLE: 15,314 votes stay with themGrace Louise YOUNGER: 4,020 votes stay with them910 votes from John GILL (excluded) go to Rowan HUXTABLE737 votes from John GILL (excluded) go to Grace Louise YOUNGER643 votes from John GILL (excluded) go to Sharon BIRD470 votes from John GILL (excluded) go to Chris ATLEESharon BIRD: 47,787 votes stay with themChris ATLEE: 31,909 votes stay with themRowan HUXTABLE: 16,224 votes stay with them2,247 votes from Grace Louise YOUNGER (excluded) go to Chris ATLEE1,535 votes from Grace Louise YOUNGER (excluded) go to Sharon BIRD975 votes from Grace Louise YOUNGER (excluded) go to Rowan HUXTABLESharon BIRD: 49,322 votes stay with themChris ATLEE: 34,156 votes stay with them14,514 votes from Rowan HUXTABLE (excluded) go to Sharon BIRD2,685 votes from Rowan HUXTABLE (excluded) go to Chris ATLEESharon BIRD (ALP): 46,923 votes at first preferencesBIRDChris ATLEE (LP): 31,177 votes at first preferencesATLEERowan HUXTABLE (GRN): 15,196 votes at first preferencesHUXTABLEGrace Louise YOUNGER (UAPP): 3,828 votes at first preferencesYOUNGERJohn GILL (SPP): 2,340 votes at first preferencesJohn FLANAGAN (NCP): 1,213 votes at first preferencesSharon BIRD (ALP): 47,144 votes at count 1BIRDChris ATLEE (LP): 31,439 votes at count 1ATLEERowan HUXTABLE (GRN): 15,314 votes at count 1HUXTABLEGrace Louise YOUNGER (UAPP): 4,020 votes at count 1YOUNGERJohn GILL (SPP): 2,760 votes at count 1Sharon BIRD (ALP): 47,787 votes at count 2BIRDChris ATLEE (LP): 31,909 votes at count 2ATLEERowan HUXTABLE (GRN): 16,224 votes at count 2HUXTABLEGrace Louise YOUNGER (UAPP): 4,757 votes at count 2YOUNGERSharon BIRD (ALP): 49,322 votes at count 3BIRDChris ATLEE (LP): 34,156 votes at count 3ATLEERowan HUXTABLE (GRN): 17,199 votes at count 3HUXTABLESharon BIRD (ALP): 63,836 votes at count 4BIRD · electedChris ATLEE (LP): 36,841 votes at count 4ATLEE · runner-up
Each column is a count. Bar height = votes held; the candidate with the fewest votes is excluded and their votes flow to the others. Hover or tap a candidate to highlight their flows.

What happened, count by count

Where the preferences went

Cunningham 2019: where each excluded candidate’s votes went
CountExcludedVotes distributedPassed to
1John FLANAGANNon-Custodial Parents Party (Equal Parenting)1,213
  • John GILL (SPP): 420 (34.6%)
  • Chris ATLEE (LP): 262 (21.6%)
  • Sharon BIRD (ALP): 221 (18.2%)
  • Grace Louise YOUNGER (UAPP): 192 (15.8%)
  • Rowan HUXTABLE (GRN): 118 (9.7%)
2John GILLSustainable Australia2,760
  • Rowan HUXTABLE (GRN): 910 (33.0%)
  • Grace Louise YOUNGER (UAPP): 737 (26.7%)
  • Sharon BIRD (ALP): 643 (23.3%)
  • Chris ATLEE (LP): 470 (17.0%)
3Grace Louise YOUNGERUnited Australia Party4,757
  • Chris ATLEE (LP): 2,247 (47.2%)
  • Sharon BIRD (ALP): 1,535 (32.3%)
  • Rowan HUXTABLE (GRN): 975 (20.5%)
4Rowan HUXTABLEThe Greens17,199
  • Sharon BIRD (ALP): 14,514 (84.4%)
  • Chris ATLEE (LP): 2,685 (15.6%)

Votes after every count

Cunningham 2019: votes held by each candidate after every count (– = excluded)
CandidateFirst prefsCount 1Count 2Count 3Count 4
Sharon BIRDLabor · elected46,92347,14447,78749,32263,836
Chris ATLEELiberal31,17731,43931,90934,15636,841
Rowan HUXTABLEThe Greens15,19615,31416,22417,199–
Grace Louise YOUNGERUnited Australia Party3,8284,0204,757––
John GILLSustainable Australia2,3402,760–––
John FLANAGANNon-Custodial Parents Party (Equal Parenting)1,213––––

About this page

Australian House of Representatives elections use full-preferential voting: voters number every box. If no candidate has more than half the first-preference votes, the candidate with the fewest is excluded and their ballots pass to each voter’s next preference, repeating until someone has more than half. Practical lesson: rank the candidate you most want to win first and the one you most want to lose last.

Source: Australian Electoral Commission, House of Representatives distribution of preferences by division (© Commonwealth of Australia, CC BY 4.0), 2019, 2022 and 2025 Federal elections. Division boundaries change between elections, so results under the same name are not like-for-like. Built 2 November 2026. Spotted an error? Tell us.

Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.