Malaysia · Hypothetical BN–PN coordination · Research cut-off: 5 August 2026
This report begins with the two questions readers most urgently want answered: how many seats PH won because BN and PN split the vote in GE15, and whether a BN–PN alliance could cross the 112-seat threshold without relying on East Malaysian allies.
The headline numbers
In GE15, PH won 71 seats in three-cornered contests against both BN and PN. If BN and PN's GE15 votes are combined at 100%, 28 seats would be led by the BN–PN alliance on arithmetic; however, another 43 seats would still leave PH ahead even after mechanical combination. After incorporating nominee allocation, directional transfer, grassroots execution risk and the recent Johor–Negeri Sembilan calibration, the central scenario places 32 seats within the alliance's realistic capture range.
The 112-seat question
The answer is not simply “yes” or “no”:The narrow core is not secure; with broader seat inheritance and a 32-seat capture scenario, 112 is reachable—but only at the conditional upper edge.
| Scenario | Base seats (excl. East Malaysian allies) | Additional PH seats | Losses from inherited seats and nominees | Approximate total | Assessment |
|---|---|---|---|---|---|
| Narrow core | BN 30 + PAS 43 + clearly identified Wawasan 6 = 79 | 32 | −0 to −4 | 107—111 | Below or near the threshold |
| Executable coordination | The core above plus some former PN/Wawasan seats: approximately 88–92 | 32 | −4 to −8 | 112—120 | Can cross it, but only if inherited seats are retained |
| Strong mobilisation | High retention of inherited seats with smooth nominee allocation | 39 | −2 to −5 | 126—129 | Reaches the upper range |
GE15 constituency-level results
Gap = PH votes − (BN votes + PN votes). Negative (green) = BN + PN exceed PH on full-transfer arithmetic (potential flip); Positive (red) = PH remains ahead even after all votes are combined.
| Seat | State | PH votes | BN votes | PN votes | BN + PN | Gap | GE15 arithmetic | Central scenario |
|---|---|---|---|---|---|---|---|---|
| P.107 Sungai Buloh | Selangor | 50,943 | 48,250 | 29,060 | 77,310 | -26,367 | Arithmetic flip | Central capture |
| P.015 Sungai Petani | Kedah | 50,580 | 27,391 | 49,465 | 76,856 | -26,276 | Arithmetic flip | Central capture |
| P.063 Tambun | Perak | 49,655 | 28,111 | 45,939 | 74,050 | -24,395 | Arithmetic flip | Central capture |
| P.096 Kuala Selangor | Selangor | 31,033 | 30,031 | 23,639 | 53,670 | -22,637 | Arithmetic flip | Central capture |
| P.113 Sepang | Selangor | 56,264 | 31,097 | 47,315 | 78,412 | -22,148 | Arithmetic flip | Central capture |
| P.098 Gombak | Selangor | 72,267 | 30,723 | 59,538 | 90,261 | -17,994 | Arithmetic flip | Central capture |
| P.101 Hulu Langat | Selangor | 58,380 | 32,564 | 43,492 | 76,056 | -17,676 | Arithmetic flip | Central capture |
| P.077 Tanjong Malim | Perak | 25,140 | 20,963 | 21,599 | 42,562 | -17,422 | Arithmetic flip | Central capture |
| P.135 Alor Gajah | Melaka | 28,178 | 27,288 | 17,211 | 44,499 | -16,321 | Arithmetic flip | Central capture |
| P.089 Bentong | Pahang | 25,075 | 24,383 | 16,233 | 40,616 | -15,541 | Arithmetic flip | Central capture |
| P.137 Hang Tuah Jaya | Melaka | 39,418 | 30,780 | 23,549 | 54,329 | -14,911 | Arithmetic flip | Central capture |
| P.149 Sri Gading | Johor | 23,242 | 19,242 | 18,475 | 37,717 | -14,475 | Arithmetic flip | Central capture |
| P.053 Balik Pulau | Penang | 24,564 | 15,478 | 22,982 | 38,460 | -13,896 | Arithmetic flip | Central capture |
| P.146 Muar | Johor | 19,961 | 14,581 | 18,616 | 33,197 | -13,236 | Arithmetic flip | Central capture |
| P.080 Raub | Pahang | 21,613 | 16,939 | 17,256 | 34,195 | -12,582 | Arithmetic flip | Central capture |
| P.144 Ledang | Johor | 33,650 | 23,881 | 22,292 | 46,173 | -12,523 | Arithmetic flip | Central capture |
| P.108 Shah Alam | Selangor | 61,409 | 28,266 | 43,314 | 71,580 | -10,171 | Arithmetic flip | Central capture |
| P.141 Sekijang | Johor | 18,941 | 17,207 | 11,612 | 28,819 | -9,878 | Arithmetic flip | Central capture |
| P.150 Batu Pahat | Johor | 45,242 | 24,309 | 29,270 | 53,579 | -8,337 | Arithmetic flip | Central capture |
| P.062 Sungai Siput | Perak | 21,637 | 19,791 | 8,190 | 27,981 | -6,344 | Arithmetic flip | Central capture |
| P.124 Bandar Tun Razak | Kuala Lumpur | 43,476 | 15,886 | 33,659 | 49,545 | -6,069 | Arithmetic flip | Central capture |
| P.160 Johor Bahru | Johor | 43,252 | 27,211 | 22,075 | 49,286 | -6,034 | Arithmetic flip | Central capture |
| P.159 Pasir Gudang | Johor | 71,233 | 37,369 | 39,675 | 77,044 | -5,811 | Arithmetic flip | Central capture |
| P.121 Lembah Pantai | Kuala Lumpur | 35,359 | 21,447 | 19,098 | 40,545 | -5,186 | Arithmetic flip | Central capture |
| P.118 Setiawangsa | Kuala Lumpur | 34,434 | 16,333 | 22,270 | 38,603 | -4,169 | Arithmetic flip | Central capture |
| P.140 Segamat | Johor | 23,437 | 17,768 | 8,385 | 26,153 | -2,716 | Arithmetic flip | Central capture |
| P.142 Labis | Johor | 16,133 | 13,300 | 5,312 | 18,612 | -2,479 | Arithmetic flip | Central capture |
| P.158 Tebrau | Johor | 83,959 | 30,767 | 53,239 | 84,006 | -47 | Arithmetic flip | Central capture |
| P.116 Wangsa Maju | Kuala Lumpur | 46,031 | 19,595 | 25,335 | 44,930 | 1,101 | PH still ahead | Central hold |
| P.145 Bakri | Johor | 36,636 | 17,382 | 17,222 | 34,604 | 2,032 | PH still ahead | Central hold |
| P.070 Kampar | Perak | 30,467 | 16,137 | 12,127 | 28,264 | 2,203 | PH still ahead | Central hold |
| P.076 Teluk Intan | Perak | 33,133 | 12,304 | 17,964 | 30,268 | 2,865 | PH still ahead | Central hold |
| P.097 Selayang | Selangor | 72,773 | 19,425 | 49,154 | 68,579 | 4,194 | PH still ahead | Central hold |
| P.152 Kluang | Johor | 49,801 | 23,395 | 22,021 | 45,416 | 4,385 | PH still ahead | Central capture |
| P.047 Nibong Tebal | Penang | 42,188 | 10,660 | 25,895 | 36,555 | 5,633 | PH still ahead | Central hold |
| P.132 Port Dickson | Negeri Sembilan | 42,349 | 18,412 | 18,235 | 36,647 | 5,702 | PH still ahead | Central capture |
| P.128 Seremban | Negeri Sembilan | 63,920 | 24,584 | 33,076 | 57,660 | 6,260 | PH still ahead | Central capture |
| P.071 Gopeng | Perak | 55,880 | 18,393 | 28,732 | 47,125 | 8,755 | PH still ahead | Central hold |
| P.060 Taiping | Perak | 47,098 | 14,599 | 21,569 | 36,168 | 10,930 | PH still ahead | Central hold |
| P.115 Batu | Kuala Lumpur | 45,716 | 10,398 | 23,475 | 33,873 | 11,843 | PH still ahead | Central hold |
| P.161 Pulai | Johor | 64,900 | 31,726 | 20,677 | 52,403 | 12,497 | PH still ahead | Central capture |
| P.163 Kulai | Johor | 65,529 | 29,506 | 20,218 | 49,724 | 15,805 | PH still ahead | Central hold |
| P.099 Ampang | Selangor | 56,754 | 11,509 | 27,073 | 38,582 | 18,172 | PH still ahead | Central hold |
| P.068 Beruas | Perak | 46,710 | 12,724 | 12,739 | 25,463 | 21,247 | PH still ahead | Central hold |
| P.052 Bayan Baru | Penang | 55,209 | 13,377 | 20,307 | 33,684 | 21,525 | PH still ahead | Central hold |
| P.138 Kota Melaka | Melaka | 73,995 | 20,686 | 27,575 | 48,261 | 25,734 | PH still ahead | Central hold |
| P.049 Tanjong | Penang | 31,968 | 3,214 | 2,501 | 5,715 | 26,253 | PH still ahead | Central hold |
| P.105 Petaling Jaya | Selangor | 83,311 | 23,253 | 32,736 | 55,989 | 27,322 | PH still ahead | Central hold |
| P.162 Iskandar Puteri | Johor | 96,819 | 36,783 | 30,078 | 66,861 | 29,958 | PH still ahead | Central hold |
| P.050 Jelutong | Penang | 50,369 | 7,387 | 11,765 | 19,152 | 31,217 | PH still ahead | Central hold |
| P.046 Batu Kawan | Penang | 50,744 | 7,145 | 10,344 | 17,489 | 33,255 | PH still ahead | Central hold |
| P.120 Bukit Bintang | Kuala Lumpur | 43,827 | 4,850 | 4,259 | 9,109 | 34,718 | PH still ahead | Central hold |
| P.064 Ipoh Timor | Perak | 57,549 | 8,570 | 13,661 | 22,231 | 35,318 | PH still ahead | Central hold |
| P.100 Pandan | Selangor | 74,002 | 11,664 | 25,706 | 37,370 | 36,632 | PH still ahead | Central hold |
| P.048 Bukit Bendera | Penang | 49,353 | 5,417 | 6,743 | 12,160 | 37,193 | PH still ahead | Central hold |
| P.103 Puchong | Selangor | 79,425 | 21,468 | 18,263 | 39,731 | 39,694 | PH still ahead | Central hold |
| P.130 Rasah | Negeri Sembilan | 81,434 | 19,447 | 18,810 | 38,257 | 43,177 | PH still ahead | Central hold |
| P.102 Bangi | Selangor | 141,568 | 25,685 | 71,867 | 97,552 | 44,016 | PH still ahead | Central hold |
| P.043 Bagan | Penang | 55,797 | 5,385 | 6,149 | 11,534 | 44,263 | PH still ahead | Central hold |
| P.066 Batu Gajah | Perak | 60,999 | 6,793 | 7,163 | 13,956 | 47,043 | PH still ahead | Central hold |
| P.123 Cheras | Kuala Lumpur | 60,294 | 5,606 | 5,846 | 11,452 | 48,842 | PH still ahead | Central hold |
| P.065 Ipoh Barat | Perak | 63,915 | 7,248 | 6,815 | 14,063 | 49,852 | PH still ahead | Central hold |
| P.045 Bukit Mertajam | Penang | 71,722 | 6,986 | 14,037 | 21,023 | 50,699 | PH still ahead | Central hold |
| P.117 Segambut | Kuala Lumpur | 68,438 | 8,304 | 8,754 | 17,058 | 51,380 | PH still ahead | Central hold |
| P.111 Kota Raja | Selangor | 123,306 | 22,225 | 49,308 | 71,533 | 51,773 | PH still ahead | Central hold |
| P.051 Bukit Gelugor | Penang | 71,204 | 6,777 | 8,092 | 14,869 | 56,335 | PH still ahead | Central hold |
| P.114 Kepong | Kuala Lumpur | 64,308 | 3,227 | 2,795 | 6,022 | 58,286 | PH still ahead | Central hold |
| P.122 Seputeh | Kuala Lumpur | 73,234 | 6,032 | 6,047 | 12,079 | 61,155 | PH still ahead | Central hold |
| P.110 Klang | Selangor | 115,539 | 19,762 | 23,738 | 43,500 | 72,039 | PH still ahead | Central hold |
| P.104 Subang | Selangor | 138,259 | 16,539 | 23,185 | 39,724 | 98,535 | PH still ahead | Central hold |
| P.106 Damansara | Selangor | 142,875 | 13,806 | 18,256 | 32,062 | 110,813 | PH still ahead | Central hold |
National state-by-state analysis
Every state retains its GE15 baseline. “Central capture” comes from the nominee-allocation and transfer model. Recent state elections are used only where directly relevant; they are not mechanically extrapolated nationwide.
| State | Seats | PH | BN/PN | 3-cornered | Arith. flips | Central capture | Strong | Assessment |
|---|---|---|---|---|---|---|---|---|
| 26 | 15 | 11 | 15 | 10 | 12 | 15 | 2026 state election: BN 48/56, PH 8/56, PN 0/56. This is the strongest local evidence, but it cannot be mechanically extrapolated nationwide | |
| 15 | 1 | 14 | 1 | 1 | 1 | 1 | PN has a deep base; PH has only a limited number of cross-ethnic or urban-edge seats to contest. Removing three-cornered contests would amplify the alliance advantage | |
| 14 | 0 | 14 | 0 | 0 | 0 | 0 | PAS already holds a strong heartland. The national question is not capturing PH seats, but which partner controls nominees and seat allocation | |
| 6 | 3 | 3 | 3 | 2 | 2 | 2 | BN's state-level base contrasts with the PH–PN vote split in GE15. Alor Gajah and Hang Tuah Jaya are classic full-combination battlegrounds | |
| 8 | 3 | 5 | 3 | 0 | 2 | 2 | The 2026 state election is direct calibration evidence. Seremban and Port Dickson enter the flip line, while urban seats such as Rasah still lean clearly toward PH | |
| 14 | 2 | 12 | 2 | 2 | 2 | 2 | BN, PAS and mixed urban constituencies overlap. Bentong and Raub depend more on nominee allocation than the East Coast safe seats | |
| 24 | 11 | 13 | 11 | 3 | 3 | 5 | Malay heartland and mixed cities coexist. Tambun, Sungai Siput and Tanjong Malim show the direct value of removing vote splitting | |
| 3 | 0 | 3 | 0 | 0 | 0 | 0 | PN already has a strong advantage. The alliance's main test is the PAS–Wawasan power arrangement, not capturing PH seats | |
| 13 | 10 | 3 | 10 | 1 | 1 | 1 | Some mixed mainland seats are contestable, but core DAP seats on Penang Island remain protected by urban votes, candidates and turnout | |
| 25 | 5 | 8 | 0 | 0 | 0 | 0 | Local parties, nominees and autonomy issues come first. GPS, GRS and Warisan votes cannot be automatically assigned to the alliance | |
| 31 | 6 | 1 | 0 | 0 | 0 | 0 | GPS organisational strength and state-rights issues form a distinct political system. The arithmetic without East Malaysian allies must be shown separately | |
| 22 | 16 | 6 | 16 | 6 | 6 | 7 | One of the largest potential sources of PH losses nationally. It has many three-cornered seats, but Klang Valley urban voting and local-organisation differences make transfers uneven | |
| 8 | 0 | 8 | 0 | 0 | 0 | 0 | PAS's existing advantage is most concentrated here. BN concessions and grassroots buy-in will determine whether internal friction emerges | |
| 11 | 10 | 1 | 10 | 3 | 3 | 4 | Mixed demographics and urban issues dominate. Bandar Tun Razak and Setiawangsa have more transfer flexibility than core DAP seats | |
| 1 | 0 | 1 | 0 | 0 | 0 | 0 | A single parliamentary seat where the local nominee and perceptions of federal resources matter more than a national swing | |
| 1 | 0 | 1 | 0 | 0 | 0 | 0 | A non-PH baseline seat; excluded from this report's PH-capture count |
Local evidence
In P.128 Seremban, GE15 arithmetic still gives PH 63,920 votes against BN 24,584 plus PN 33,076; PH leads by 6,260 votes.But after aggregating the six state seats within the constituency in the 2026 Negeri Sembilan election, the alliance is only 497 votes; a small amount of third-party vote transfer or stronger grassroots mobilisation could close the gap.
Central scenario
All seats come from PH wins in GE15 three-cornered contests. The ranking combines the central attack/defence ratio with local calibration; it does not mean the outcome has already occurred, nor is it a polling probability.
This is the report's highest confidence category. Under the central parameters, nominee allocation, BN–PAS–Wawasan transfer, local state-seat evidence and grassroots execution risk all point in the alliance's favour. It is not a guaranteed win and it is not a fixed polling probability.
It is the model's attack/defence ratio: the higher the number, the more favourable the alliance's combined capture conditions are relative to PH's defensive conditions. 1.90 is not 190%, not a 90% win probability and not betting odds; it is an uncalibrated scenario score that must be read alongside the seat data and written reasoning.
P.149 · Johor
BN won both Parit Yaani and Parit Raja; an UMNO nominee is more likely to inherit PAS and Wawasan supporters
P.096 · Selangor
An UMNO nominee is more likely to inherit PAS and Wawasan supporters
P.141 · Johor
BN won both Pemanis and Kemelah; an UMNO nominee is more likely to inherit PAS and Wawasan supporters
P.146 · Johor
BN won Bukit Naning, Maharani and Sungai Balang; an UMNO nominee is more likely to inherit PAS and Wawasan supporters
P.089 · Pahang
With MCA contesting, the key question is whether PAS voters will cross party lines
P.077 · Perak
Wawasan is assumed to inherit the alliance-oriented vote previously attached to Bersatu candidates
P.135 · Melaka
An UMNO nominee is more likely to inherit PAS and Wawasan supporters
P.144 · Johor
BN won Gambir, Tangkak and Serom; an UMNO nominee is more likely to inherit PAS and Wawasan supporters
P.107 · Selangor
An UMNO nominee is more likely to inherit PAS and Wawasan supporters
P.053 · Penang
Wawasan is assumed to inherit the alliance-oriented vote previously attached to Bersatu candidates
P.080 · Pahang
Wawasan is assumed to inherit the alliance-oriented vote previously attached to Bersatu candidates
P.015 · Kedah
Wawasan is assumed to inherit the alliance-oriented vote previously attached to Bersatu candidates
P.142 · Johor
BN won both Tenang and Bekok; with MCA contesting, the key question is whether PAS voters will cross party lines
P.159 · Johor
BN won both Johor Jaya and Permas; an UMNO nominee is more likely to inherit PAS and Wawasan supporters
P.160 · Johor
BN won Larkin while PH narrowly held Stulang; an UMNO nominee is more likely to inherit PAS and Wawasan supporters
P.137 · Melaka
An UMNO nominee is more likely to inherit PAS and Wawasan supporters
P.113 · Selangor
Wawasan is assumed to inherit the alliance-oriented vote previously attached to Bersatu candidates
P.140 · Johor
BN won both Buloh Kasap and Jementah; with MIC contesting, the key question is whether PAS voters will cross party lines
P.063 · Perak
Wawasan is assumed to inherit the alliance-oriented vote previously attached to Bersatu candidates
P.062 · Perak
With MIC contesting, the key question is whether PAS voters will cross party lines
P.150 · Johor
PH held Penggaram while BN won Senggarang and Rengit; an UMNO nominee is more likely to inherit PAS and Wawasan supporters
P.101 · Selangor
Wawasan is assumed to inherit the alliance-oriented vote previously attached to Bersatu candidates
P.098 · Selangor
Wawasan is assumed to inherit the alliance-oriented vote previously attached to Bersatu candidates
P.158 · Johor
BN won Tiram while PH held Puteri Wangsa; with MCA contesting, the key question is whether PAS voters will cross party lines
P.121 · Kuala Lumpur
An UMNO nominee is more likely to inherit PAS and Wawasan supporters
P.108 · Selangor
Wawasan is assumed to inherit the alliance-oriented vote previously attached to Bersatu candidates
P.152 · Johor
PH held Mengkibol while BN won Mahkota decisively; with MCA contesting, the key question is whether PAS voters will cross party lines
P.124 · Kuala Lumpur
With MCA contesting, the key question is whether PAS voters will cross party lines
P.118 · Kuala Lumpur
An UMNO nominee is more likely to inherit PAS and Wawasan supporters
P.161 · Johor
BN won both Perling and Kempas; an UMNO nominee is more likely to inherit PAS and Wawasan supporters
P.132 · Negeri Sembilan
The five state seats give the alliance a lead of 3,632 votes; with MIC contesting, the key question is whether PAS voters will cross party lines
P.128 · Negeri Sembilan
The six state seats are almost tied; including part of the BERJASA vote gives the alliance a narrow lead; with MCA contesting, the key question is whether PAS voters will cross party lines
Model structure
PAS won 43 seats in GE15 against UMNO's 26. Seat concessions are therefore not an administrative detail but a power bargain. The nominee will determine whether the other side's grassroots will actually vote.
The central model distinguishes PAS → UMNO, PAS → MCA, PAS → MIC, BN → PAS and BN → Wawasan transfers. Supporters may comply, campaign passively, abstain or move to a third party.
PAS strength on the East Coast, Klang Valley urban votes, Penang's DAP core, Johor's BN machinery and the local-party systems of Sabah and Sarawak cannot be treated with one uniform swing.
Scenarios and limitations
| Variable | Supports a 112-seat outcome | Pushes the result below 112 |
|---|---|---|
| Seat allocation | BN, PAS and Wawasan accept a clear and reciprocal allocation | PAS believes its strength is undervalued, or BN grassroots refuse to support a PAS nominee |
| Nominees | Retain strong local leaders, especially in mixed constituencies | The concession nominee lacks cross-ethnic appeal, producing member resentment or an independent challenge |
| Vote flow | Both sides transfer votes near the central parameters and residual three-cornered contests fall sharply | Leaders sign an agreement but grassroots campaign passively; transfer rates diverge sharply among MCA, UMNO and PAS |
| PH response | PH continues to face low turnout, nominee controversy or local-organisation decline | PH completes nominee consolidation and non-Malay and urban youth turnout recovers |
| East Malaysia | The alliance itself reaches 112 seats in Peninsular Malaysia | Sabah and Sarawak parties remain independent and become pivotal to government formation |
Complete baseline table
Showing 222 / 222 seats
| Constituency | State | GE15 winner | Margin | BN | PAS | Bersatu | PH | Suggested nominee | Attack/defence ratio | Assessment | Key reason |
|---|---|---|---|---|---|---|---|---|---|---|---|
| P.001Padang Besar | Perlis | PN | 12,514 | 11,753 | 24,267 | 0 | 7,085 | PAS | 4.97 | Non-PH baseline seat | — |
| P.002Kangar | Perlis | PN | 9,192 | 15,370 | 0 | 24,562 | 15,143 | Wawasan | 2.55 | Non-PH baseline seat | — |
| P.003Arau | Perlis | PN | 23,216 | 8,242 | 31,458 | 0 | 7,089 | PAS | 5.61 | Non-PH baseline seat | — |
| P.004Langkawi | Kedah | PN | 13,518 | 11,945 | 0 | 25,463 | 5,417 | Wawasan | 6.72 | Non-PH baseline seat | — |
| P.005Jerlun | Kedah | PN | 20,456 | 11,229 | 31,685 | 0 | 6,149 | PAS | 6.91 | Non-PH baseline seat | — |
| P.006Kubang Pasu | Kedah | PN | 31,584 | 14,489 | 0 | 47,584 | 16,000 | Wawasan | 3.84 | Non-PH baseline seat | — |
| P.007Padang Terap | Kedah | PN | 10,959 | 17,258 | 28,217 | 0 | 2,702 | PAS | 16.22 | Non-PH baseline seat | — |
| P.008Pokok Sena | Kedah | PN | 31,751 | 14,523 | 52,275 | 0 | 20,524 | PAS | 3.26 | Non-PH baseline seat | — |
| P.009Alor Setar | Kedah | PN | 9,931 | 8,930 | 37,486 | 0 | 27,555 | PAS | 1.71 | Non-PH baseline seat | — |
| P.010Kuala Kedah | Kedah | PN | 28,061 | 13,879 | 56,298 | 0 | 28,237 | PAS | 2.51 | Non-PH baseline seat | — |
| P.011Pendang | Kedah | PN | 31,289 | 17,719 | 49,008 | 0 | 8,058 | PAS | 8.19 | Non-PH baseline seat | — |
| P.012Jerai | Kedah | PN | 33,192 | 16,269 | 49,461 | 0 | 15,590 | PAS | 4.20 | Non-PH baseline seat | — |
| P.013Sik | Kedah | PN | 21,787 | 12,819 | 34,606 | 0 | 3,736 | PAS | 12.53 | Non-PH baseline seat | — |
| P.014Merbok | Kedah | PN | 21,019 | 16,691 | 0 | 52,573 | 31,554 | Wawasan | 2.18 | Non-PH baseline seat | — |
| P.015Sungai Petani | Kedah | PH | 1,115 | 27,391 | 0 | 49,465 | 50,580 | Wawasan | 1.49 | Strong capture case | Wawasan is assumed to inherit the alliance-oriented vote previously attached to Bersatu candidates |
| P.016Baling | Kedah | PN | 29,137 | 35,356 | 64,493 | 0 | 8,636 | PAS | 11.21 | Non-PH baseline seat | — |
| P.017Padang Serai | Kedah | PN | 16,260 | 2,983 | 0 | 51,637 | 35,377 | Wawasan | 1.58 | Non-PH baseline seat | — |
| P.018Kulim-Bandar Baharu | Kedah | PN | 13,061 | 13,872 | 0 | 34,469 | 21,408 | Wawasan | 2.22 | Non-PH baseline seat | — |
| P.019Tumpat | Kelantan | PN | 34,793 | 30,633 | 65,426 | 0 | 7,762 | PAS | 12.09 | Non-PH baseline seat | — |
| P.020Pengkalan Chepa | Kelantan | PN | 38,270 | 15,663 | 53,933 | 0 | 7,356 | PAS | 9.43 | Non-PH baseline seat | — |
| P.021Kota Bharu | Kelantan | PN | 22,613 | 16,168 | 41,869 | 0 | 19,256 | PAS | 2.99 | Non-PH baseline seat | — |
| P.022Pasir Mas | Kelantan | PN | 30,717 | 13,727 | 44,444 | 0 | 6,439 | PAS | 8.99 | Non-PH baseline seat | — |
| P.023Rantau Panjang | Kelantan | PN | 20,636 | 17,123 | 37,759 | 0 | 4,256 | PAS | 12.61 | Non-PH baseline seat | — |
| P.024Kubang Kerian | Kelantan | PN | 40,847 | 14,807 | 55,654 | 0 | 10,236 | PAS | 6.89 | Non-PH baseline seat | — |
| P.025Bachok | Kelantan | PN | 30,163 | 27,333 | 57,496 | 0 | 4,385 | PAS | 18.87 | Non-PH baseline seat | — |
| P.026Ketereh | Kelantan | PN | 23,107 | 17,435 | 0 | 40,542 | 4,662 | Wawasan | 12.13 | Non-PH baseline seat | — |
| P.027Tanah Merah | Kelantan | PN | 44,498 | 9,781 | 0 | 54,279 | 5,357 | Wawasan | 11.94 | Non-PH baseline seat | — |
| P.028Pasir Puteh | Kelantan | PN | 29,120 | 23,988 | 53,108 | 0 | 3,873 | PAS | 19.46 | Non-PH baseline seat | — |
| P.029Machang | Kelantan | PN | 10,154 | 25,449 | 0 | 35,603 | 3,934 | Wawasan | 14.85 | Non-PH baseline seat | — |
| P.030Jeli | Kelantan | PN | 12,464 | 14,608 | 0 | 27,072 | 1,140 | Wawasan | 35.33 | Non-PH baseline seat | — |
| P.031Kuala Krai | Kelantan | PN | 25,188 | 17,552 | 42,740 | 0 | 4,148 | PAS | 14.28 | Non-PH baseline seat | — |
| P.032Gua Musang | Kelantan | PN | 163 | 21,663 | 0 | 21,826 | 4,517 | Wawasan | 9.09 | Non-PH baseline seat | — |
| P.033Besut | Terengganu | PN | 18,666 | 30,903 | 49,569 | 0 | 4,339 | PAS | 17.85 | Non-PH baseline seat | — |
| P.034Setiu | Terengganu | PN | 19,032 | 31,736 | 50,768 | 0 | 2,125 | PAS | 37.34 | Non-PH baseline seat | — |
| P.035Kuala Nerus | Terengganu | PN | 29,765 | 26,932 | 56,697 | 0 | 3,708 | PAS | 22.00 | Non-PH baseline seat | — |
| P.036Kuala Terengganu | Terengganu | PN | 40,907 | 22,109 | 63,016 | 0 | 10,946 | PAS | 7.70 | Non-PH baseline seat | — |
| P.037Marang | Terengganu | PN | 41,729 | 31,386 | 73,115 | 0 | 4,140 | PAS | 24.73 | Non-PH baseline seat | — |
| P.038Hulu Terengganu | Terengganu | PN | 15,734 | 27,176 | 0 | 42,910 | 1,740 | Wawasan | 38.68 | Non-PH baseline seat | — |
| P.039Dungun | Terengganu | PN | 34,105 | 25,615 | 59,720 | 0 | 5,307 | PAS | 15.76 | Non-PH baseline seat | — |
| P.040Kemaman | Terengganu | PN | 27,179 | 38,535 | 65,714 | 0 | 8,340 | PAS | 12.07 | Non-PH baseline seat | — |
| P.041Kepala Batas | Penang | PN | 2,867 | 25,737 | 28,604 | 0 | 14,214 | PAS | 3.62 | Non-PH baseline seat | — |
| P.042Tasek Gelugor | Penang | PN | 12,252 | 18,864 | 0 | 31,116 | 16,547 | Wawasan | 2.93 | Non-PH baseline seat | — |
| P.043Bagan | Penang | PH | 49,648 | 5,385 | 0 | 6,149 | 55,797 | Wawasan | 0.22 | Safe PH | Wawasan is assumed to inherit the alliance-oriented vote previously attached to Bersatu candidates |
| P.044Permatang Pauh | Penang | PN | 5,272 | 16,971 | 37,638 | 0 | 32,366 | PAS | 1.67 | Non-PH baseline seat | — |
| P.045Bukit Mertajam | Penang | PH | 57,685 | 6,986 | 14,037 | 0 | 71,722 | PAS | 0.31 | Safe PH | PAS contesting; outcome depends on BN supporters voting across party lines |
| P.046Batu Kawan | Penang | PH | 40,400 | 7,145 | 0 | 0 | 50,744 | MCA | 0.34 | Safe PH | With MCA contesting, the key question is whether PAS voters will cross party lines |
| P.047Nibong Tebal | Penang | PH | 16,293 | 10,660 | 0 | 25,895 | 42,188 | Wawasan | 0.87 | Safe PH | Wawasan is assumed to inherit the alliance-oriented vote previously attached to Bersatu candidates |
| P.048Bukit Bendera | Penang | PH | 42,610 | 5,417 | 0 | 0 | 49,353 | PCM | 0.25 | Safe PH | The alliance's combined GE15 vote is close to or exceeds PH; the nominee and turnout decide the result |
| P.049Tanjong | Penang | PH | 28,754 | 3,214 | 0 | 0 | 31,968 | MCA | 0.19 | Safe PH | With MCA contesting, the key question is whether PAS voters will cross party lines |
| P.050Jelutong | Penang | PH | 38,604 | 7,387 | 0 | 0 | 50,369 | IPF | 0.37 | Safe PH | The alliance's combined GE15 vote is close to or exceeds PH; the nominee and turnout decide the result |
| P.051Bukit Gelugor | Penang | PH | 63,112 | 6,777 | 0 | 8,092 | 71,204 | Wawasan | 0.22 | Safe PH | Wawasan is assumed to inherit the alliance-oriented vote previously attached to Bersatu candidates |
| P.052Bayan Baru | Penang | PH | 34,902 | 13,377 | 0 | 0 | 55,209 | MCA | 0.59 | Safe PH | With MCA contesting, the key question is whether PAS voters will cross party lines |
| P.053Balik Pulau | Penang | PH | 1,582 | 15,478 | 0 | 22,982 | 24,564 | Wawasan | 1.52 | Strong capture case | Wawasan is assumed to inherit the alliance-oriented vote previously attached to Bersatu candidates |
| P.054Gerik | Perak | PN | 1,377 | 13,728 | 0 | 15,105 | 5,779 | Wawasan | 4.74 | Non-PH baseline seat | — |
| P.055Lenggong | Perak | BN | 879 | 12,588 | 11,709 | 0 | 3,382 | PAS | 6.72 | Non-PH baseline seat | — |
| P.056Larut | Perak | PN | 11,598 | 16,752 | 0 | 28,350 | 6,207 | Wawasan | 7.01 | Non-PH baseline seat | — |
| P.057Parit Buntar | Perak | PN | 5,395 | 11,593 | 23,223 | 0 | 17,828 | PAS | 1.92 | Non-PH baseline seat | — |
| P.058Bagan Serai | Perak | PN | 18,551 | 15,202 | 33,753 | 0 | 13,195 | PAS | 3.64 | Non-PH baseline seat | — |
| P.059Bukit Gantang | Perak | PN | 12,756 | 19,869 | 0 | 32,625 | 18,565 | Wawasan | 2.74 | Non-PH baseline seat | — |
| P.060Taiping | Perak | PH | 25,529 | 14,599 | 0 | 0 | 47,098 | MCA | 0.74 | Safe PH | With MCA contesting, the key question is whether PAS voters will cross party lines |
| P.061Padang Rengas | Perak | PN | 3,046 | 9,885 | 0 | 12,931 | 7,062 | Wawasan | 3.10 | Non-PH baseline seat | — |
| P.062Sungai Siput | Perak | PH | 1,846 | 19,791 | 0 | 8,190 | 21,637 | MIC | 1.32 | Strong capture case | With MIC contesting, the key question is whether PAS voters will cross party lines |
| P.063Tambun | Perak | PH | 3,716 | 28,111 | 0 | 45,939 | 49,655 | Wawasan | 1.35 | Strong capture case | Wawasan is assumed to inherit the alliance-oriented vote previously attached to Bersatu candidates |
| P.064Ipoh Timor | Perak | PH | 43,888 | 8,570 | 0 | 13,661 | 57,549 | Wawasan | 0.39 | Safe PH | Wawasan is assumed to inherit the alliance-oriented vote previously attached to Bersatu candidates |
| P.065Ipoh Barat | Perak | PH | 56,667 | 7,248 | 0 | 0 | 63,915 | MCA | 0.23 | Safe PH | With MCA contesting, the key question is whether PAS voters will cross party lines |
| P.066Batu Gajah | Perak | PH | 53,836 | 6,793 | 0 | 0 | 60,999 | MCA | 0.24 | Safe PH | With MCA contesting, the key question is whether PAS voters will cross party lines |
| P.067Kuala Kangsar | Perak | PN | 3,566 | 10,814 | 0 | 14,380 | 10,356 | Wawasan | 2.34 | Non-PH baseline seat | — |
| P.068Beruas | Perak | PH | 33,971 | 12,724 | 0 | 0 | 46,710 | MCA | 0.54 | Safe PH | With MCA contesting, the key question is whether PAS voters will cross party lines |
| P.069Parit | Perak | PN | 2,155 | 15,026 | 17,181 | 0 | 5,063 | PAS | 6.03 | Non-PH baseline seat | — |
| P.070Kampar | Perak | PH | 14,330 | 16,137 | 0 | 0 | 30,467 | MCA | 0.91 | PH lean | With MCA contesting, the key question is whether PAS voters will cross party lines |
| P.071Gopeng | Perak | PH | 27,148 | 18,393 | 0 | 28,732 | 55,880 | Wawasan | 0.83 | Safe PH | Wawasan is assumed to inherit the alliance-oriented vote previously attached to Bersatu candidates |
| P.072Tapah | Perak | BN | 5,064 | 18,398 | 0 | 12,115 | 13,334 | MIC | 2.29 | Non-PH baseline seat | — |
| P.073Pasir Salak | Perak | PN | 5,003 | 19,894 | 24,897 | 0 | 11,693 | PAS | 3.65 | Non-PH baseline seat | — |
| P.074Lumut | Perak | PN | 363 | 24,849 | 0 | 25,212 | 20,358 | Wawasan | 2.34 | Non-PH baseline seat | — |
| P.075Bagan Datuk | Perak | BN | 348 | 16,578 | 0 | 8,822 | 16,230 | UMNO | 1.58 | Non-PH baseline seat | — |
| P.076Teluk Intan | Perak | PH | 15,169 | 12,304 | 0 | 17,964 | 33,133 | Wawasan | 0.90 | PH lean | Wawasan is assumed to inherit the alliance-oriented vote previously attached to Bersatu candidates |
| P.077Tanjong Malim | Perak | PH | 3,541 | 20,963 | 0 | 21,599 | 25,140 | Wawasan | 1.62 | Strong capture case | Wawasan is assumed to inherit the alliance-oriented vote previously attached to Bersatu candidates |
| P.078Cameron Highlands | Pahang | BN | 4,544 | 16,120 | 0 | 5,569 | 11,576 | UMNO | 1.90 | Non-PH baseline seat | — |
| P.079Lipis | Pahang | BN | 6,118 | 17,672 | 0 | 11,554 | 6,366 | UMNO | 4.57 | Non-PH baseline seat | — |
| P.080Raub | Pahang | PH | 4,357 | 16,939 | 0 | 17,256 | 21,613 | Wawasan | 1.51 | Strong capture case | Wawasan is assumed to inherit the alliance-oriented vote previously attached to Bersatu candidates |
| P.081Jerantut | Pahang | PN | 8,092 | 23,609 | 31,701 | 0 | 11,444 | PAS | 4.62 | Non-PH baseline seat | — |
| P.082Indera Mahkota | Pahang | PN | 8,450 | 16,544 | 0 | 41,684 | 33,234 | Wawasan | 1.73 | Non-PH baseline seat | — |
| P.083Kuantan | Pahang | PN | 2,866 | 19,114 | 25,514 | 0 | 22,648 | PAS | 1.90 | Non-PH baseline seat | — |
| P.084Paya Besar | Pahang | BN | 1,317 | 26,899 | 25,582 | 0 | 9,192 | PAS | 5.35 | Non-PH baseline seat | — |
| P.085Pekan | Pahang | BN | 8,949 | 47,418 | 38,469 | 0 | 6,316 | PAS | 12.61 | Non-PH baseline seat | — |
| P.086Maran | Pahang | PN | 1,821 | 17,779 | 19,600 | 0 | 3,547 | PAS | 9.95 | Non-PH baseline seat | — |
| P.087Kuala Krau | Pahang | PN | 1,024 | 21,481 | 22,505 | 0 | 3,593 | PAS | 11.52 | Non-PH baseline seat | — |
| P.088Temerloh | Pahang | PN | 5,520 | 25,191 | 30,929 | 0 | 25,409 | PAS | 2.11 | Non-PH baseline seat | — |
| P.089Bentong | Pahang | PH | 692 | 24,383 | 0 | 16,233 | 25,075 | MCA | 1.62 | Strong capture case | With MCA contesting, the key question is whether PAS voters will cross party lines |
| P.090Bera | Pahang | BN | 16,695 | 31,762 | 0 | 12,719 | 15,067 | UMNO | 2.98 | Non-PH baseline seat | — |
| P.091Rompin | Pahang | PN | 1,438 | 30,151 | 0 | 31,589 | 4,779 | Wawasan | 12.22 | Non-PH baseline seat | — |
| P.092Sabak Bernam | Selangor | PN | 5,056 | 12,917 | 0 | 17,973 | 9,627 | Wawasan | 3.09 | Non-PH baseline seat | — |
| P.093Sungai Besar | Selangor | PN | 2,721 | 13,984 | 0 | 19,791 | 17,070 | Wawasan | 1.91 | Non-PH baseline seat | — |
| P.094Hulu Selangor | Selangor | PN | 1,562 | 27,050 | 46,823 | 0 | 45,261 | PAS | 1.60 | Non-PH baseline seat | — |
| P.095Tanjong Karang | Selangor | PN | 2,180 | 15,874 | 0 | 18,054 | 12,314 | Wawasan | 2.63 | Non-PH baseline seat | — |
| P.096Kuala Selangor | Selangor | PH | 1,002 | 30,031 | 23,639 | 0 | 31,033 | UMNO | 1.75 | Strong capture case | An UMNO nominee is more likely to inherit PAS and Wawasan supporters |
| P.097Selayang | Selangor | PH | 23,619 | 19,425 | 0 | 49,154 | 72,773 | Wawasan | 0.94 | PH lean | Wawasan is assumed to inherit the alliance-oriented vote previously attached to Bersatu candidates |
| P.098Gombak | Selangor | PH | 12,729 | 30,723 | 0 | 59,538 | 72,267 | Wawasan | 1.19 | Lean capture | Wawasan is assumed to inherit the alliance-oriented vote previously attached to Bersatu candidates |
| P.099Ampang | Selangor | PH | 29,681 | 11,509 | 0 | 27,073 | 56,754 | Wawasan | 0.68 | Safe PH | Wawasan is assumed to inherit the alliance-oriented vote previously attached to Bersatu candidates |
| P.100Pandan | Selangor | PH | 48,296 | 11,664 | 25,706 | 0 | 74,002 | PAS | 0.49 | Safe PH | PAS contesting; outcome depends on BN supporters voting across party lines |
| P.101Hulu Langat | Selangor | PH | 14,888 | 32,564 | 0 | 43,492 | 58,380 | Wawasan | 1.26 | Lean capture | Wawasan is assumed to inherit the alliance-oriented vote previously attached to Bersatu candidates |
| P.102Bangi | Selangor | PH | 69,701 | 25,685 | 71,867 | 0 | 141,568 | PAS | 0.70 | Safe PH | PAS contesting; outcome depends on BN supporters voting across party lines |
| P.103Puchong | Selangor | PH | 57,957 | 21,468 | 0 | 0 | 79,425 | KIMMA | 0.47 | Safe PH | The alliance's combined GE15 vote is close to or exceeds PH; the nominee and turnout decide the result |
| P.104Subang | Selangor | PH | 115,074 | 16,539 | 0 | 0 | 138,259 | MCA | 0.29 | Safe PH | With MCA contesting, the key question is whether PAS voters will cross party lines |
| P.105Petaling Jaya | Selangor | PH | 50,575 | 23,253 | 0 | 32,736 | 83,311 | Wawasan | 0.66 | Safe PH | Wawasan is assumed to inherit the alliance-oriented vote previously attached to Bersatu candidates |
| P.106Damansara | Selangor | PH | 124,619 | 13,806 | 0 | 0 | 142,875 | MCA | 0.23 | Safe PH | With MCA contesting, the key question is whether PAS voters will cross party lines |
| P.107Sungai Buloh | Selangor | PH | 2,693 | 48,250 | 29,060 | 0 | 50,943 | UMNO | 1.54 | Strong capture case | An UMNO nominee is more likely to inherit PAS and Wawasan supporters |
| P.108Shah Alam | Selangor | PH | 18,095 | 28,266 | 0 | 43,314 | 61,409 | Wawasan | 1.14 | Lean capture | Wawasan is assumed to inherit the alliance-oriented vote previously attached to Bersatu candidates |
| P.109Kapar | Selangor | PN | 11,782 | 35,079 | 65,751 | 0 | 53,969 | PAS | 1.83 | Non-PH baseline seat | — |
| P.110Klang | Selangor | PH | 91,801 | 19,762 | 0 | 23,738 | 115,539 | Wawasan | 0.38 | Safe PH | Wawasan is assumed to inherit the alliance-oriented vote previously attached to Bersatu candidates |
| P.111Kota Raja | Selangor | PH | 73,998 | 22,225 | 49,308 | 0 | 123,306 | PAS | 0.59 | Safe PH | PAS contesting; outcome depends on BN supporters voting across party lines |
| P.112Kuala Langat | Selangor | PN | 1,833 | 18,685 | 52,867 | 0 | 51,034 | PAS | 1.41 | Non-PH baseline seat | — |
| P.113Sepang | Selangor | PH | 8,949 | 31,097 | 0 | 47,315 | 56,264 | Wawasan | 1.36 | Strong capture case | Wawasan is assumed to inherit the alliance-oriented vote previously attached to Bersatu candidates |
| P.114Kepong | Kuala Lumpur | PH | 61,081 | 3,227 | 0 | 0 | 64,308 | MCA | 0.11 | Safe PH | With MCA contesting, the key question is whether PAS voters will cross party lines |
| P.115Batu | Kuala Lumpur | PH | 22,241 | 10,398 | 23,475 | 0 | 45,716 | MIC | 0.73 | Safe PH | With MIC contesting, the key question is whether PAS voters will cross party lines |
| P.116Wangsa Maju | Kuala Lumpur | PH | 20,696 | 19,595 | 25,335 | 0 | 46,031 | UMNO | 0.99 | PH lean | An UMNO nominee is more likely to inherit PAS and Wawasan supporters |
| P.117Segambut | Kuala Lumpur | PH | 59,684 | 8,304 | 0 | 0 | 68,438 | MCA | 0.26 | Safe PH | With MCA contesting, the key question is whether PAS voters will cross party lines |
| P.118Setiawangsa | Kuala Lumpur | PH | 12,164 | 16,333 | 0 | 22,270 | 34,434 | UMNO | 1.11 | Lean capture | An UMNO nominee is more likely to inherit PAS and Wawasan supporters |
| P.119Titiwangsa | Kuala Lumpur | BN | 4,632 | 25,042 | 14,518 | 0 | 20,410 | UMNO | 1.97 | Non-PH baseline seat | — |
| P.120Bukit Bintang | Kuala Lumpur | PH | 38,977 | 4,850 | 0 | 4,259 | 43,827 | MCA | 0.23 | Safe PH | With MCA contesting, the key question is whether PAS voters will cross party lines |
| P.121Lembah Pantai | Kuala Lumpur | PH | 13,912 | 21,447 | 19,098 | 0 | 35,359 | UMNO | 1.16 | Lean capture | An UMNO nominee is more likely to inherit PAS and Wawasan supporters |
| P.122Seputeh | Kuala Lumpur | PH | 67,187 | 6,032 | 0 | 0 | 73,234 | MCA | 0.18 | Safe PH | With MCA contesting, the key question is whether PAS voters will cross party lines |
| P.123Cheras | Kuala Lumpur | PH | 54,448 | 5,606 | 0 | 5,846 | 60,294 | MCA | 0.21 | Safe PH | With MCA contesting, the key question is whether PAS voters will cross party lines |
| P.124Bandar Tun Razak | Kuala Lumpur | PH | 9,817 | 15,886 | 0 | 33,659 | 43,476 | MCA | 1.12 | Lean capture | With MCA contesting, the key question is whether PAS voters will cross party lines |
| P.125Putrajaya | Putrajaya | PN | 2,310 | 13,692 | 0 | 16,002 | 5,988 | Wawasan | 4.72 | Non-PH baseline seat | — |
| P.126Jelebu | Negeri Sembilan | BN | 8,125 | 21,805 | 0 | 9,596 | 13,680 | UMNO | 2.44 | Non-PH baseline seat | — |
| P.127Jempol | Negeri Sembilan | BN | 5,857 | 30,138 | 0 | 16,722 | 24,281 | UMNO | 2.04 | Non-PH baseline seat | — |
| P.128Seremban | Negeri Sembilan | PH | 30,844 | 24,584 | 33,076 | 0 | 63,920 | MCA | 0.95 | On the flip line | The six state seats are almost tied; including part of the BERJASA vote gives the alliance a narrow lead; with MCA contesting, the key question is whether PAS voters will cross party lines |
| P.129Kuala Pilah | Negeri Sembilan | BN | 6,483 | 21,423 | 0 | 11,560 | 14,940 | UMNO | 2.33 | Non-PH baseline seat | — |
| P.130Rasah | Negeri Sembilan | PH | 61,987 | 19,447 | 0 | 0 | 81,434 | MCA | 0.53 | Safe PH | PH's urban vote remains highly concentrated in Rasah; with MCA contesting, the key question is whether PAS voters will cross party lines |
| P.131Rembau | Negeri Sembilan | BN | 19,897 | 53,075 | 0 | 21,875 | 33,178 | UMNO | 2.40 | Non-PH baseline seat | — |
| P.132Port Dickson | Negeri Sembilan | PH | 23,937 | 18,412 | 18,235 | 0 | 42,349 | MIC | 1.00 | On the flip line | The five state seats give the alliance a lead of 3,632 votes; with MIC contesting, the key question is whether PAS voters will cross party lines |
| P.133Tampin | Negeri Sembilan | BN | 1,276 | 23,283 | 14,962 | 0 | 22,007 | UMNO | 1.86 | Non-PH baseline seat | — |
| P.134Masjid Tanah | Melaka | PN | 4,411 | 21,193 | 0 | 25,604 | 7,445 | UMNO | 6.14 | Non-PH baseline seat | — |
| P.135Alor Gajah | Melaka | PH | 890 | 27,288 | 0 | 17,211 | 28,178 | UMNO | 1.59 | Strong capture case | An UMNO nominee is more likely to inherit PAS and Wawasan supporters |
| P.136Tangga Batu | Melaka | PN | 8,849 | 25,095 | 37,406 | 0 | 28,557 | MCA | 2.09 | Non-PH baseline seat | — |
| P.137Hang Tuah Jaya | Melaka | PH | 8,638 | 30,780 | 0 | 23,549 | 39,418 | UMNO | 1.38 | Strong capture case | An UMNO nominee is more likely to inherit PAS and Wawasan supporters |
| P.138Kota Melaka | Melaka | PH | 46,420 | 20,686 | 0 | 0 | 73,995 | MCA | 0.63 | Safe PH | With MCA contesting, the key question is whether PAS voters will cross party lines |
| P.139Jasin | Melaka | PN | 322 | 27,571 | 27,893 | 0 | 21,674 | UMNO | 2.57 | Non-PH baseline seat | — |
| P.140Segamat | Johor | PH | 5,669 | 17,768 | 0 | 8,385 | 23,437 | MIC | 1.35 | Strong capture case | BN won both Buloh Kasap and Jementah; with MIC contesting, the key question is whether PAS voters will cross party lines |
| P.141Sekijang | Johor | PH | 1,734 | 17,207 | 0 | 11,612 | 18,941 | UMNO | 1.68 | Strong capture case | BN won both Pemanis and Kemelah; an UMNO nominee is more likely to inherit PAS and Wawasan supporters |
| P.142Labis | Johor | PH | 2,833 | 13,300 | 0 | 5,312 | 16,133 | MCA | 1.44 | Strong capture case | BN won both Tenang and Bekok; with MCA contesting, the key question is whether PAS voters will cross party lines |
| P.143Pagoh | Johor | PN | 10,007 | 14,426 | 0 | 24,986 | 14,979 | UMNO | 2.75 | Non-PH baseline seat | — |
| P.144Ledang | Johor | PH | 9,769 | 23,881 | 0 | 22,292 | 33,650 | UMNO | 1.56 | Strong capture case | BN won Gambir, Tangkak and Serom; an UMNO nominee is more likely to inherit PAS and Wawasan supporters |
| P.145Bakri | Johor | PH | 19,254 | 17,382 | 0 | 17,222 | 36,636 | MCA | 0.91 | PH lean | PH still holds Bentayan and Simpang Jeram; with MCA contesting, the key question is whether PAS voters will cross party lines |
| P.146Muar | Johor | PH | 1,345 | 14,581 | 18,616 | 0 | 19,961 | UMNO | 1.68 | Strong capture case | BN won Bukit Naning, Maharani and Sungai Balang; an UMNO nominee is more likely to inherit PAS and Wawasan supporters |
| P.147Parit Sulong | Johor | BN | 2,021 | 25,740 | 23,719 | 0 | 13,495 | UMNO | 3.95 | Non-PH baseline seat | — |
| P.148Ayer Hitam | Johor | BN | 2,963 | 18,911 | 0 | 11,833 | 15,948 | MCA | 2.08 | Non-PH baseline seat | — |
| P.149Sri Gading | Johor | PH | 4,000 | 19,242 | 18,475 | 0 | 23,242 | UMNO | 1.90 | Strong capture case | BN won both Parit Yaani and Parit Raja; an UMNO nominee is more likely to inherit PAS and Wawasan supporters |
| P.150Batu Pahat | Johor | PH | 15,972 | 24,309 | 0 | 29,270 | 45,242 | UMNO | 1.31 | Strong capture case | PH held Penggaram while BN won Senggarang and Rengit; an UMNO nominee is more likely to inherit PAS and Wawasan supporters |
| P.151Simpang Renggam | Johor | BN | 1,821 | 18,312 | 0 | 9,077 | 16,491 | UMNO | 1.80 | Non-PH baseline seat | — |
| P.152Kluang | Johor | PH | 26,406 | 23,395 | 0 | 22,021 | 49,801 | MCA | 1.14 | Lean capture | PH held Mengkibol while BN won Mahkota decisively; with MCA contesting, the key question is whether PAS voters will cross party lines |
| P.153Sembrong | Johor | BN | 10,880 | 22,572 | 0 | 6,666 | 11,692 | UMNO | 2.73 | Non-PH baseline seat | — |
| P.154Mersing | Johor | PN | 2,337 | 18,729 | 0 | 21,066 | 6,813 | UMNO | 6.15 | Non-PH baseline seat | — |
| P.155Tenggara | Johor | BN | 2,991 | 21,185 | 18,194 | 0 | 11,618 | UMNO | 3.66 | Non-PH baseline seat | — |
| P.156Kota Tinggi | Johor | BN | 8,390 | 25,410 | 0 | 17,020 | 4,903 | UMNO | 9.23 | Non-PH baseline seat | — |
| P.157Pengerang | Johor | BN | 5,010 | 21,738 | 0 | 16,728 | 3,374 | UMNO | 12.11 | Non-PH baseline seat | — |
| P.158Tebrau | Johor | PH | 30,720 | 30,767 | 0 | 53,239 | 83,959 | MCA | 1.17 | Lean capture | BN won Tiram while PH held Puteri Wangsa; with MCA contesting, the key question is whether PAS voters will cross party lines |
| P.159Pasir Gudang | Johor | PH | 31,558 | 37,369 | 0 | 39,675 | 71,233 | UMNO | 1.39 | Strong capture case | BN won both Johor Jaya and Permas; an UMNO nominee is more likely to inherit PAS and Wawasan supporters |
| P.160Johor Bahru | Johor | PH | 16,041 | 27,211 | 0 | 22,075 | 43,252 | UMNO | 1.38 | Strong capture case | BN won Larkin while PH narrowly held Stulang; an UMNO nominee is more likely to inherit PAS and Wawasan supporters |
| P.161Pulai | Johor | PH | 33,174 | 31,726 | 0 | 0 | 64,900 | UMNO | 1.08 | On the flip line | BN won both Perling and Kempas; an UMNO nominee is more likely to inherit PAS and Wawasan supporters |
| P.162Iskandar Puteri | Johor | PH | 60,036 | 36,783 | 0 | 30,078 | 96,819 | MCA | 0.90 | PH lean | PH won Skudai while BN won Kota Iskandar; with MCA contesting, the key question is whether PAS voters will cross party lines |
| P.163Kulai | Johor | PH | 36,023 | 29,506 | 0 | 0 | 65,529 | MCA | 0.97 | PH lean | BN won Bukit Permai and Bukit Batu while PH won Senai; with MCA contesting, the key question is whether PAS voters will cross party lines |
| P.164Pontian | Johor | BN | 5,758 | 23,201 | 0 | 17,443 | 15,901 | UMNO | 2.73 | Non-PH baseline seat | — |
| P.165Tanjung Piai | Johor | BN | 6,360 | 23,593 | 0 | 13,762 | 17,233 | MCA | 2.34 | Non-PH baseline seat | — |
| P.166Labuan | Labuan | PN | 708 | 7,416 | 0 | 8,124 | 5,307 | Wawasan | 2.79 | Non-PH baseline seat | — |
| P.167Kudat | Sabah | ALONE | 1,967 | 0 | 0 | 0 | 4,726 | PAS | 0.02 | Non-PH baseline seat | — |
| P.168Kota Marudu | Sabah | ALONE | 8,174 | 0 | 0 | 0 | 3,225 | PAS | 0.02 | Non-PH baseline seat | — |
| P.169Kota Belud | Sabah | ALONE | 4,582 | 20,566 | 0 | 0 | 8,323 | UMNO | 2.57 | Non-PH baseline seat | — |
| P.170Tuaran | Sabah | PH | 233 | 0 | 0 | 0 | 24,943 | PAS | 0.02 | Safe PH | PAS contesting; outcome depends on BN supporters voting across party lines |
| P.171Sepanggar | Sabah | PH | 7,042 | 19,980 | 0 | 0 | 27,022 | UMNO | 0.78 | Safe PH | An UMNO nominee is more likely to inherit PAS and Wawasan supporters |
| P.172Kota Kinabalu | Sabah | PH | 23,783 | 0 | 0 | 0 | 31,359 | PAS | 0.02 | Safe PH | PAS contesting; outcome depends on BN supporters voting across party lines |
| P.173Putatan | Sabah | BN | 124 | 16,234 | 0 | 0 | 16,110 | UMNO | 1.06 | Non-PH baseline seat | — |
| P.174Penampang | Sabah | PH | 14,410 | 0 | 0 | 0 | 29,066 | PAS | 0.02 | Safe PH | PAS contesting; outcome depends on BN supporters voting across party lines |
| P.175Papar | Sabah | GRS | 12,822 | 0 | 0 | 0 | 9,144 | PAS | 0.02 | Non-PH baseline seat | — |
| P.176Kimanis | Sabah | BN | 3,037 | 13,004 | 0 | 0 | 3,931 | UMNO | 3.43 | Non-PH baseline seat | — |
| P.177Beaufort | Sabah | BN | 2,518 | 10,570 | 0 | 0 | 7,835 | UMNO | 1.41 | Non-PH baseline seat | — |
| P.178Sipitang | Sabah | GRS | 4,691 | 0 | 0 | 0 | 4,834 | PAS | 0.02 | Non-PH baseline seat | — |
| P.179Ranau | Sabah | GRS | 11,092 | 4,254 | 0 | 0 | 11,514 | PBRS | 0.31 | Non-PH baseline seat | — |
| P.180Keningau | Sabah | GRS | 8,056 | 0 | 0 | 0 | 15,099 | PAS | 0.02 | Non-PH baseline seat | — |
| P.181Tenom | Sabah | ALONE | 1,108 | 8,625 | 0 | 0 | 8,919 | UMNO | 1.02 | Non-PH baseline seat | — |
| P.182Pensiangan | Sabah | BN | 5,412 | 19,623 | 0 | 0 | 14,211 | PBRS | 1.11 | Non-PH baseline seat | — |
| P.183Beluran | Sabah | PN | 1,594 | 9,709 | 0 | 11,303 | 4,460 | Wawasan | 4.49 | Non-PH baseline seat | — |
| P.184Libaran | Sabah | BN | 12,618 | 22,969 | 0 | 0 | 10,351 | UMNO | 2.31 | Non-PH baseline seat | — |
| P.185Batu Sapi | Sabah | GRS | 4,821 | 0 | 0 | 0 | 7,331 | PAS | 0.02 | Non-PH baseline seat | — |
| P.186Sandakan | Sabah | PH | 11,031 | 0 | 0 | 0 | 16,673 | PAS | 0.02 | Safe PH | PAS contesting; outcome depends on BN supporters voting across party lines |
| P.187Kinabatangan | Sabah | BN | 4,330 | 16,842 | 0 | 0 | 0 | UMNO | 99.00 | Non-PH baseline seat | — |
| P.188Lahad Datu | Sabah | ALONE | 4,376 | 22,740 | 0 | 0 | 8,289 | UMNO | 2.85 | Non-PH baseline seat | — |
| P.189Semporna | Sabah | ALONE | 20,810 | 0 | 0 | 0 | 1,848 | PAS | 0.02 | Non-PH baseline seat | — |
| P.190Tawau | Sabah | GRS | 3,800 | 0 | 0 | 0 | 16,065 | PAS | 0.02 | Non-PH baseline seat | — |
| P.191Kalabakan | Sabah | BN | 9,100 | 23,855 | 0 | 0 | 9,398 | UMNO | 2.64 | Non-PH baseline seat | — |
| P.192Mas Gading | Sarawak | PH | 5,480 | 0 | 0 | 0 | 17,274 | PAS | 0.02 | Safe PH | PAS contesting; outcome depends on BN supporters voting across party lines |
| P.193Santubong | Sarawak | GPS | 38,681 | 0 | 0 | 0 | 5,058 | PAS | 0.02 | Non-PH baseline seat | — |
| P.194Petra Jaya | Sarawak | GPS | 41,363 | 0 | 0 | 0 | 13,382 | PAS | 0.02 | Non-PH baseline seat | — |
| P.195Bandar Kuching | Sarawak | PH | 28,891 | 0 | 0 | 0 | 45,353 | PAS | 0.02 | Safe PH | PAS contesting; outcome depends on BN supporters voting across party lines |
| P.196Stampin | Sarawak | PH | 7,158 | 0 | 0 | 0 | 39,310 | PAS | 0.02 | Safe PH | PAS contesting; outcome depends on BN supporters voting across party lines |
| P.197Kota Samarahan | Sarawak | GPS | 29,445 | 0 | 0 | 0 | 12,833 | PAS | 0.02 | Non-PH baseline seat | — |
| P.198Puncak Borneo | Sarawak | GPS | 13,338 | 0 | 0 | 0 | 16,119 | PAS | 0.02 | Non-PH baseline seat | — |
| P.199Serian | Sarawak | GPS | 16,697 | 0 | 0 | 0 | 5,289 | PAS | 0.02 | Non-PH baseline seat | — |
| P.200Batang Sadong | Sarawak | GPS | 14,893 | 0 | 0 | 0 | 3,775 | PAS | 0.02 | Non-PH baseline seat | — |
| P.201Batang Lupar | Sarawak | GPS | 14,463 | 0 | 5,164 | 0 | 2,768 | PAS | 1.97 | Non-PH baseline seat | — |
| P.202Sri Aman | Sarawak | GPS | 4,039 | 0 | 0 | 0 | 2,021 | PAS | 0.02 | Non-PH baseline seat | — |
| P.203Lubok Antu | Sarawak | GPS | 100 | 0 | 0 | 5,360 | 746 | Wawasan | 7.36 | Non-PH baseline seat | — |
| P.204Betong | Sarawak | GPS | 11,302 | 0 | 0 | 0 | 5,177 | PAS | 0.02 | Non-PH baseline seat | — |
| P.205Saratok | Sarawak | PN | 8,826 | 0 | 0 | 19,223 | 1,221 | Wawasan | 16.10 | Non-PH baseline seat | — |
| P.206Tanjong Manis | Sarawak | GPS | 13,908 | 0 | 0 | 0 | 2,566 | PAS | 0.02 | Non-PH baseline seat | — |
| P.207Igan | Sarawak | GPS | 14,662 | 0 | 0 | 0 | 1,162 | PAS | 0.02 | Non-PH baseline seat | — |
| P.208Sarikei | Sarawak | GPS | 3,697 | 0 | 0 | 0 | 16,383 | PAS | 0.02 | Non-PH baseline seat | — |
| P.209Julau | Sarawak | ALONE | 1,340 | 0 | 0 | 0 | 0 | PAS | 99.00 | Non-PH baseline seat | — |
| P.210Kanowit | Sarawak | GPS | 236 | 0 | 0 | 0 | 7,175 | PAS | 0.02 | Non-PH baseline seat | — |
| P.211Lanang | Sarawak | PH | 11,544 | 0 | 0 | 0 | 30,120 | PAS | 0.02 | Safe PH | PAS contesting; outcome depends on BN supporters voting across party lines |
| P.212Sibu | Sarawak | PH | 7,760 | 0 | 0 | 0 | 31,287 | PAS | 0.02 | Safe PH | PAS contesting; outcome depends on BN supporters voting across party lines |
| P.213Mukah | Sarawak | GPS | 15,686 | 0 | 0 | 0 | 6,047 | PAS | 0.02 | Non-PH baseline seat | — |
| P.214Selangau | Sarawak | GPS | 4,986 | 0 | 0 | 0 | 11,092 | PAS | 0.02 | Non-PH baseline seat | — |
| P.215Kapit | Sarawak | GPS | 12,402 | 0 | 0 | 0 | 4,120 | PAS | 0.02 | Non-PH baseline seat | — |
| P.216Hulu Rajang | Sarawak | GPS | 7,505 | 0 | 0 | 0 | 7,951 | PAS | 0.02 | Non-PH baseline seat | — |
| P.217Bintulu | Sarawak | GPS | 22,168 | 0 | 0 | 5,650 | 21,287 | Wawasan | 0.29 | Non-PH baseline seat | — |
| P.218Sibuti | Sarawak | GPS | 11,745 | 0 | 0 | 0 | 10,405 | PAS | 0.02 | Non-PH baseline seat | — |
| P.219Miri | Sarawak | PH | 6,159 | 0 | 0 | 0 | 39,549 | PAS | 0.02 | Safe PH | PAS contesting; outcome depends on BN supporters voting across party lines |
| P.220Baram | Sarawak | GPS | 7,339 | 0 | 0 | 0 | 11,060 | PAS | 0.02 | Non-PH baseline seat | — |
| P.221Limbang | Sarawak | GPS | 9,998 | 0 | 0 | 0 | 4,899 | PAS | 0.02 | Non-PH baseline seat | — |
| P.222Lawas | Sarawak | GPS | 5,677 | 0 | 0 | 0 | 1,163 | PAS | 0.02 | Non-PH baseline seat | — |
Sources and method register
The baseline comes from the supplied election-15.csv; research cut-off: 5 August 2026. GE15 results, three-cornered-contest counts and seat-level votes are [DATA]; BN–PN coordination is a [USER ASSUMPTION]; directional transfer, nominee allocation, grassroots buy-in and the 112-seat scenarios are [MODEL ASSUMPTION]; the central capture list is a [FORECAST].
Limitations: there is no national poll directly measuring BN–PN transfer; Wawasan's final organisational scale and inheritance of Bersatu seats remain scenario variables; state-election results are not equivalent to a general election; East Malaysian parties are not automatically assigned to the alliance; and ecological estimates are not presented as individual-level voting behaviour.