Analysis
GE15 across the peninsula: the Malay vote split, and nobody won
All 165 peninsula seats by race and by result. The racial line is sharper than Johor's, and three-cornered fights left half the winners short of a majority.
The Johor piece looked at one state and found the opposition setting itself up to split its own vote. Pull back to the whole peninsula, all 165 parliamentary seats, and the same fault line is there. It is just drawn harder.
I took the GE15 result for every peninsula seat and matched it against the registered-voter roll, 21 million names with race attached, then worked out who each seat is made of and how it voted. Two numbers do most of the talking.
One line runs through all of it
The share of Malay voters in a seat predicts its PH vote with a correlation of −0.96. That is almost a straight line pointing down. The more Malay the seat, the less it votes PH, with barely an exception across 165 of them. Flip the colour and the Chinese share tracks PH at +0.94, nearly as tight. Indian voters lean PH too, more gently. Everyone else sits flat, too spread out and too small to pull a seat either way.
| Electorate | BN | PH | PN |
|---|---|---|---|
| Malay | +0.52 | −0.96 | +0.89 |
| Chinese | −0.56 | +0.94 | −0.84 |
| Indian | −0.40 | +0.70 | −0.65 |
| Other | +0.32 | −0.08 | −0.12 |
So the non-Malay vote did one simple thing in 2022. It lined up behind PH in a single block. The Malay vote did the opposite, but here is the catch: it did not swing to one party. It broke between Barisan Nasional and Perikatan Nasional, with a sliver going to Mahathir's GTA. One side of the electorate was whole. The other was cut in two.
A split on one side only
Add the votes up across the peninsula and the average seat gave PN 36 percent, PH 36 percent and BN 27 percent. They finished almost level. The seat count came out the same way: PH 71, PN 71, BN 23. Barisan, the party that had run the country for over sixty years, came third. Not because people stopped voting for the Malay-based right, but because two parties were now selling it and the vote could only go to one of them at a time.
Sort the seats by who lives in them and the divide is blunt. In the 47 seats where non-Malays are the majority, PH took 45 and PN took none. In the 118 Malay-majority seats, PN took 71 and PH took 26. The map did not really have swing seats. It had two electorates voting past each other.
| Seat type | PH | PN | BN |
|---|---|---|---|
| Malay majority (118) | 26 | 71 | 21 |
| Non-Malay majority (47) | 45 | 0 | 2 |
Half the winners didn't win half the votes
When one side splits, seats fall on minorities. Eighty-one of the 165 winners, almost exactly half, got in with under 50 percent of the vote. Thirty-four of PN's 71 wins were like that. And in 28 of PH's 71 wins, BN and PN between them outpolled PH: a single Malay-based opponent, instead of two, would have taken those seats. The hung parliament that followed was not an accident of mood. It was built into how the vote divided.
The mirror for next time
This is where the Johor argument comes back. A split does not share the prize. It hands the seat to whichever side kept itself together. In 2022 it was the Malay vote that fractured and Barisan that paid for it. The next time round, the roles look set to swap. Since 2022 the Malay vote has drifted towards PN and away from the spread, while the reform and non-Malay vote, the one block that held, is the side about to fracture, between PH, MUDA, BERSAMA and whoever else turns up. The arithmetic does not care which side is doing the splitting. It just punishes it.
The usual cautions hold. A correlation is not a cause, turnout has its own logic, and a voter roll is not a result. But the shape has been stable for two general elections now and a round of state polls on top. The peninsula votes along one line, and the side that splits along it loses seats it could have held.
Johor is the small version of this, playing out in real time. The peninsula is the warning of where it ends. More names on the ballot for the same voters does not widen the win. It narrows it.