Contents
Overview
Past Results
Individual Ward Results:
Carse of Gowrie (Ward 1)
Strathmore (Ward 2)
Blairgowrie and Glens (Ward 3)
Highland (Ward 4)
Strathtay (Ward 5)
Strathearn (Ward 6)
Strathallan (Ward 7)
Kinross-shire (Ward 8)
Almond and Earn (Ward 9)
Perth City South (Ward 10)
Perth City North (Ward 11)
Perth City Centre (Ward 12)
Data Notes
Changes in Affiliation
By-Elections:
Perth City North (Ward 11) - 26th of September 2024
Strathallan (Ward 7) - 26th of September 2024
Council-Wide Results
The loss of this historic stronghold in 2017 had been a blow to the SNP, but this time around they’ve bounced back. Their increase in votes outstrips their change in seats however, with just one more councillor bumping them up to 16. A substantial loss of votes for the Conservatives has knocked 3 off their tally to leave them with 14, whilst the Lib Dems maintain their position as third party without any real change.
The two other net Conservative losses therefore went to Independents, who’ve gone up one to 4, and to Labour, who’ve now got a second councillor. Though the Greens did increase their share (and remember they are absent in two wards), it was far from repeating their Holyrood result of placing third here, and didn’t elect any councillors.
Administration
After the election, the SNP announced their intention to form a minority administration, with the consent of the Independent councillors. They will not form part of the administration.
Interactive Map
Perth and Kinross is what it says the tin – a merger of the historic counties of Perthshire and Kinross-shire, though Perthshire was shorn of a large chunk of its southeast when this district was created in the 1970’s. Perth, the Fair City, is the urban anchor for what is otherwise a massive rural stretch at the very centre of the country, encompassing both lowland and highland areas. Perthshire was historically such a big chunk of Scotland that it’s known as “the Big County”, contrasting with the neighbouring “Wee County” of Clackmannanshire.
In common with largely rural, farming-heavy counties across Scotland, for much of the 20th century this area was heavily Conservative leaning. Over time they were increasingly challenged by the SNP, who held a seat here for 5 years after the October 1974 election, before they more firmly established themselves via a 1995 by-election. SNP representation has been the norm in both parliaments since, though the southern portion was part of a Labour seat at Westminster from 2005 to 2015, then in Conservative hands briefly from 2017 to 2019. The north came close to flipping in 2017 as well, having been a bawhair thin majority of 21 votes for the SNP.
Throughout the district council era, the Conservatives were the largest party, though without a majority in 1984 and 1988. The SNP won a majority at the first unitary election here, then held a plurality at the following two, when the Conservatives began to bounce back from their nadir.
Individual Ward Results
Councillors and Key Stats
3 Councillors, in order elected:
đź”´Labour: Alasdair Bailey
🔵Conservative: Angus Forbes
🟡SNP: Ken Harvey
Change vs 2017: No change
Turnout: 56.6%
Electorate: 8157
Valid: 4547 (98.4%)
Spoiled: 72 (1.6%)
Quota: 1137
Candidates
đź”´Labour: Alasdair Bailey
đźź Lib Dem: Lindsay Easton
🔵Conservative: Angus Forbes
🟡SNP: Ken Harvey
🟢Green: Roger Humphry
🟡SNP: John Kellas
🟣Family: Don Marshall
🔵Conservative: Mac Roberts
Carse of Gowrie: First Preferences
Carse of Gowrie: Transfers
Carse of Gowrie: Results by Polling District
Carse of Gowrie: Second Preferences
Carse of Gowrie: Two-Candidate Preferred
Councillors and Key Stats
4 Councillors, in order elected:
🟡SNP: Grant Stewart
⚪Independent: Colin Stewart
🔵Conservative: Hugh Anderson
🟡SNP: Jack Welch
Change vs 2017: +1 SNP, +1 Independent, -1 Lib Dem, -1 Conservative (Colin Stewart elected as a Conservative in 2017)
Turnout: 54.7%
Electorate: 12583
Valid: 6764 (98.3%)
Spoiled: 117 (1.7%)
Quota: 1353
Candidates
🔵Conservative: Hugh Anderson
🟢Green: Jill Belch
đźź Lib Dem: Violet Iwanio
🔵Conservative: Dennis Melloy
⚪Independent: Colin Stewart
🟡SNP: Grant Stewart
🟡SNP: Jack Welch
Strathmore: First Preferences
Strathmore: Transfers
Strathmore: Results by Polling District
Strathmore: Second Preferences
Strathmore: Two-Candidate Preferred
Councillors and Key Stats
3 Councillors, in order elected:
🔵Conservative: Caroline Shiers
🟡SNP: Tom McEwan
🔵Conservative: Bob Brawn
Change vs 2017: No change
Turnout: 52.2%
Electorate: 9188
Valid: 4662 (97.3%)
Spoiled: 131 (2.7%)
Quota: 1166
Candidates
🔵Conservative: Bob Brawn
đźź Lib Dem: Gordon Clark
đź”´Labour: Pauline Hunter
🟡SNP: Harry MacFadyen
🟡SNP: Tom McEwan
🟣Family: Jack Murphy
⚪Independent: Bernard Noonan
🟢Green: Louise Ramsay
🔵Conservative: Caroline Shiers
Blairgowrie and Glens: First Preferences
Blairgowrie and Glens: Transfers
Blairgowrie and Glens: Results by Polling District
Blairgowrie and Glens: Second Preferences
Blairgowrie and Glens: Two-Candidate Preferred
Councillors and Key Stats
3 Councillors, in order elected:
🔵Conservative: John Duff
⚪Independent: Xander McDade
🟡SNP: Michael Williamson
Change vs 2017: No change
Electorate: 7674
Turnout: 58.8%
Valid: 4455 (98.7%)
Spoiled: 57 (1.3%)
Quota: 1114
Candidates
🔵Conservative: John Duff
đź”´Labour: Paula Hunter
⚪Independent: Xander McDade
🟢Green: Mary McDougall
đźź Lib Dem: Barry McMahon
🔵Conservative: Rhona Metcalfe
🟡SNP: Sally Murray
🟡SNP: Michael Williamson
Highland: First Preferences
Highland: Transfers
Highland: Results by Polling District
Highland: Second Preferences
Highland: Two-Candidate Preferred
Councillors and Key Stats
3 Councillors, in order elected:
🟡SNP: Grant Laing
🔵Conservative: Ian James
đźź Lib Dem: Claire McLaren
Change vs 2017: +1 Lib Dem, -1 Conservative
Turnout: 53.3%
Electorate: 9890
Valid: 5159 (97.8%)
Spoiled: 115 (2.2%)
Quota: 1290
Candidates
🔵Conservative: Ian James
🔵Conservative: Anne Jarvis
🟡SNP: Malenie Kinney
🟡SNP: Grant Laing
đźź Lib Dem: Claire McLaren
Strathtay: First Preferences
Strathtay: Transfers
Strathtay: Results by Polling District
Strathtay: Second Preferences
Strathtay: Two-Candidate Preferred
Councillors and Key Stats
3 Councillors, in order elected:
⚪Independent: Rhona Brock
🟡SNP: Stewart Donaldson
🔵Conservative: Noah Khogali
Change vs 2017: No change
Turnout: 52.4%
Electorate: 8672
Valid: 4466 (98.2%)
Spoiled: 82 (1.8%)
Quota: 1117
Candidates
⚪Independent: Rhona Brock
đźź Lib Dem: Julia Brown
⚪Independent: Roger Cartwright
🟡SNP: Stewart Donaldson
🔵Conservative: Noah Khogali
🟡SNP: David West
Strathearn: First Preferences
Strathearn: Transfers
Strathearn: Results by Polling District
Strathearn: Second Preferences
Strathearn: Two-Candidate Preferred
Strathearn: Two-Party Preferred
Councillors and Key Stats
3 Councillors, in order elected:
🔵Conservative: Keith Allan
🔵Conservative: Crawford Reid
🟡SNP: Steven Carr
Change vs 2017: No change
Turnout: 51.5%
Electorate: 9543
Valid: 4785 (97.3%)
Spoiled: 131 (2.7%)
Quota: 1197
Candidates
🔵Conservative: Keith Allan
🟡SNP: Steven Carr
đźź Lib Dem: Neil Gaunt
🟢Green: Andrew Lear
🔵Conservative: Crawford Reid
🟡SNP: Catherine Scott
Strathallan: First Preferences
Strathallan: Transfers
Strathallan: Results by Polling District
Strathallan: Second Preferences
Strathallan: Two-Candidate Preferred
Councillors and Key Stats
4 Councillors, in order elected:
🟡SNP: Richard Watters
đźź Lib Dem: Willie Robertson
🔵Conservative: Neil Freshwater
⚪Independent: Dave Cuthbert
Change vs 2017: No partisan change (Dave Cuthbert replaces retiring Mike Barnacle)
Turnout: 55.1%
Electorate: 11806
Valid: 6432 (99.0%)
Spoiled: 68 (1.0%)
Quota: 1287
Candidates
đź”´Labour: Graham Cox
⚪Independent: Dave Cuthbert
🟢Green: Pat Doran
🔵Conservative: Neil Freshwater
🟣Family: Gerald O’Connell
đźź Lib Dem: Willie Robertson
🔵Conservative: George Stirling
🟡SNP: Richard Watters
Kinross-shire: First Preferences
Kinross-shire: Transfers
Kinross-shire: Results by Polling District
Kinross-shire: Second Preferences
Kinross-shire: Two-Candidate Preferred
Councillors and Key Stats
3 Councillors, in order elected:
🟡SNP: Michelle Frampton
🔵Conservative: David Illingworth
🔵Conservative: Frank Smith
Change vs 2017: No change
Turnout: 50.2%
Electorate: 7985
Valid: 3960 (98.9%)
Spoiled: 45 (1.1%)
Quota: 991
Candidates
🟤UKIP: Lynda Davis
🟡SNP: Michelle Frampton
🔵Conservative: David Illingworth
đźź Lib Dem: Tina Ng-A-Mann
🔵Conservative: Frank Smith
🟢Green: Paul Vallot
Almond and Earn: First Preferences
Almond and Earn: Transfers
Almond and Earn: Results by Polling District
Almond and Earn: Second Preferences
Almond and Earn: Two-Candidate Preferred
Councillors and Key Stats
4 Councillors, in order elected:
đźź Lib Dem: Liz Barrett
🟡SNP: Iain MacPherson
🔵Conservative: Andy Chan
🟡SNP: Sheila McCole
Change vs 2017: No change
Turnout: 51.6%
Electorate: 13427
Valid: 6833 (98.7%)
Spoiled: 92 (1.3%)
Quota: 1367
Candidates
đźź Lib Dem: Liz Barrett
🔵Conservative: Andy Chan
🟢Green: Elspeth MacLachlan
🟡SNP: Iain MacPherson
🟡SNP: Sheila McCole
🔵Conservative: Calum Milne
đź”´Labour: Kirsten Roper
Perth City South: First Preferences
Perth City South: Transfers
Perth City South: Results by Polling District
Perth City South: Second Preferences
Perth City South: Two-Candidate Preferred
Councillors and Key Stats
3 Councillors, in order elected:
🟡SNP: Ian Massie
🟡SNP: John Rebbeck
đź”´Labour: Brian Leishman
Change vs 2017: +1 Labour, -1 Conservative
Electorate: 9041
Turnout: 39.3%
Valid: 3457 (97.3%)
Spoiled: 95 (2.7%)
Quota: 865
Candidates
⚫Alba: Alan Black
đźź Lib Dem: James Graham
đź”´Labour: Brian Leishman
🟡SNP: Ian Massie
🟢Green: Ronnie McNeil
🟡SNP: John Rebbeck
🔵Conservative: Aziz Rehman
Perth City North: First Preferences
Perth City North: Transfers
Perth City North: Results by Polling District
Perth City North: Second Preferences
Perth City North: Two-Candidate Preferred
Councillors and Key Stats
4 Councillors, in order elected:
🟡SNP: Eric Drysdale
đźź Lib Dem: Peter Barrett
🟡SNP: Andrew Parrott
🔵Conservative: Chris Ahern
Change vs 2017: No change
Electorate: 12856
Turnout: 41.8%
Valid: 5257 (97.8%)
Spoiled: 116 (2.2%)
Quota: 1052
Candidates
🔵Conservative: Chris Ahern
đźź Lib Dem: Peter Barrett
🟡SNP: Eric Drysdale
đź”´Labour: Scott Forsyth
⚫Alba: Sandy Miller
🟡SNP: Andrew Parrott
🟢Green: Susannah Rae
⚪Independent: Ian Thomson
🔵Conservative: Nick Tulloch
Perth City Centre: First Preferences
Perth City Centre: Transfers
Perth City Centre: Results by Polling District
Perth City Centre: Second Preferences
Perth City Centre: Two-Candidate Preferred
If you’re unsure about what any of this data means, a quick explanation is given in this piece.
Andy Chan (Perth City South), from 🔵Conservative to ⚪Independent; left the party after a non-specified criminal investigation began in around June 2025.
Grant Laing (Strathtay), from 🟡SNP to ⚪Independent; left the party and resigned as council leader in September 2025 after being charged with embezzlement.
By-Elections
Councillors and Key Stats
1 Councillor Elected:SNP: Carol Mair
Change vs 2022 (notional): SNP Hold
Change vs vacating: SNP Gain from Labour
Turnout: 22.7% (-16.6)
Electorate: 9128
Valid: 2050 (99.0%)
Spoiled: 21 (1.0%)
Quota: 1026
2 Continuing Councillors:SNP: Ian Massie
SNP: John Rebbeck
Candidates
Reform UK: Sonia Davidson
SNP: Carol Mair
Lib Dem: Tina Ng-a-Mann
Labour: Kirsten Nkwocha-Dyer
Conservative: Aziz Rehman
Alba: Robert Reid
Green: Caitlin Ripley
Perth City North By-Election: Context
Labour councillor Brian Leishman was elected as MP for Alloa and Grangemouth in the 2024 UK General Election.
Read the BBS pre-election preview here.
Read the BBS results analysis here.
Perth City North By-Election: First Preferences
Perth City North By-Election: Transfers
Perth City North By-Election: Results by Polling District
Perth City North By-Election: Second Preferences
Perth City North By-Election: Two-Candidate Preferred
Councillors and Key Stats
1 Councillor Elected:
đźź Lib Dem: Alan Watt
Change vs 2022 (notional): Lib Dem Gain from Conservative
Change vs vacating: Lib Dem Gain from Conservative
Turnout: 34.0% (-17.5)
Electorate: 9657
Valid: 3258 (99.3%)
Spoiled: 22 (0.7%)
Quota: 1630
2 Continuing Councillors:
🔵Conservative: Keith Allan
🟡SNP: Steven Carr
Candidates
đź”´Labour: Ken McCracken
🔵Conservative: Amanda Runciman
🟡SNP: Catherine Scott
🟢Green: Nettie Sutherland
🟣Reform UK: Ian Thomas
đźź Lib Dem: Alan Watt
Strathallan By-Election: Context
Conservative councillor Crawford Reid resigned, citing the difficulties of balancing his elected duties with his job in the NHS.
Read the BBS pre-election preview here.
Read the BBS results analysis here.
