Coffee chains in Malaysia, by the numbers

A snapshot of how the big coffee brands are distributed across Malaysia — every operational outlet we've pulled from Google Maps, grouped by chain and by state. Useful if you're curious which chain owns which state, how Selangor compares to Sabah, or how far Zus has really spread.

// 2,608 outlets · 25 chains · updated May 4, 2026

Total outlets
2,608
Chains tracked
25
Biggest chain
Zus Coffee
791 outlets
Most-served state
Selangor
773 outlets

By chain (nationwide)

Ranked by total operational outlets across all 13 states and 3 federal territories.

# Chain Outlets Share
1 Zus Coffee 791 30.3%
2 Starbucks 245 9.4%
3 The Coffee Bean & Tea Leaf 241 9.2%
4 Kopi Kenangan 169 6.5%
5 Gigi Coffee 142 5.4%
6 Bask Bear Coffee 134 5.1%
7 OldTown White Coffee 111 4.3%
8 Richiamo Coffee 109 4.2%
9 Dunkin 106 4.1%
10 Luckin Coffee 87 3.3%
11 HWC Coffee 74 2.8%
12 Costa Coffee 69 2.6%
13 San Francisco Coffee 54 2.1%
14 Gloria Jean's Coffees 51 2.0%
15 Nasken Coffee 44 1.7%
16 Koppiku 42 1.6%
17 Oriental Kopi 32 1.2%
18 Kopi Dua Darjat 29 1.1%
19 Kopi Rakyat 25 1.0%
20 Cotti Coffee 18 0.7%
21 PappaRich 12 0.5%
22 Café Amazon 9 0.3%
23 Kee Nguyen 7 0.3%
24 Coffee Tree 5 0.2%
25 Dome Cafe 2 0.1%

By state (total outlets)

All tracked chain outlets, summed per state. Selangor and KL account for the bulk — unsurprising given population density, but the gap is starker than most people guess.

State / Territory Outlets Share
Selangor 773 29.6%
Kuala Lumpur 490 18.8%
Johor 261 10.0%
Penang 178 6.8%
Perak 153 5.9%
Pahang 112 4.3%
Negeri Sembilan 108 4.1%
Kedah 90 3.5%
Sarawak 89 3.4%
Sabah 87 3.3%
Melaka 84 3.2%
Kelantan 81 3.1%
Terengganu 48 1.8%
Putrajaya 37 1.4%
Perlis 14 0.5%
Labuan 3 0.1%

Full breakdown (chain × state)

Every tracked chain, every state. Scroll sideways on mobile. State columns use short codes — hover to see the full name.

Chain KLSelPtjPenPrkKedPlsKelTrgPahMelN9JohSbhSwkLbn Total
Zus Coffee 98 217 1 54 60 31 4 23 21 32 33 43 86 39 48 1 791
Starbucks 63 59 2 30 11 8 1 1 1 10 7 4 26 10 11 1 245
The Coffee Bean & Tea Leaf 44 74 4 35 12 6 1 4 4 9 6 11 29 1 1 0 241
Kopi Kenangan 26 61 2 3 10 9 1 7 5 8 5 8 17 4 2 1 169
Gigi Coffee 30 38 3 7 11 7 2 1 2 5 4 4 20 2 6 0 142
Bask Bear Coffee 14 40 3 8 11 5 0 1 3 7 6 6 16 9 5 0 134
OldTown White Coffee 10 27 3 7 16 7 0 2 2 11 5 2 15 3 1 0 111
Richiamo Coffee 11 31 1 2 7 8 3 1 2 6 6 11 14 4 2 0 109
Dunkin 22 40 4 1 4 0 0 1 0 6 5 5 12 6 0 0 106
Luckin Coffee 35 45 1 1 0 0 0 0 0 4 0 1 0 0 0 0 87
HWC Coffee 30 27 0 4 2 0 0 0 0 1 1 1 2 3 3 0 74
Costa Coffee 9 22 0 4 4 3 0 6 3 1 2 3 6 3 3 0 69
San Francisco Coffee 26 23 1 2 0 0 0 0 0 0 0 1 0 0 1 0 54
Gloria Jean's Coffees 14 17 8 1 0 2 0 2 0 2 1 1 2 1 0 0 51
Nasken Coffee 2 2 2 0 0 0 0 31 5 1 0 1 0 0 0 0 44
Koppiku 19 16 0 0 0 0 0 0 0 7 0 0 0 0 0 0 42
Oriental Kopi 7 8 2 3 1 0 0 0 0 0 1 0 9 0 1 0 32
Kopi Dua Darjat 12 9 0 1 0 1 1 0 0 0 0 5 0 0 0 0 29
Kopi Rakyat 5 0 0 0 4 1 1 1 0 1 1 1 6 0 4 0 25
Cotti Coffee 7 7 0 2 0 0 0 0 0 0 1 0 1 0 0 0 18
PappaRich 4 5 0 0 0 0 0 0 0 1 0 0 0 1 1 0 12
Café Amazon 0 0 0 7 0 2 0 0 0 0 0 0 0 0 0 0 9
Kee Nguyen 1 5 0 1 0 0 0 0 0 0 0 0 0 0 0 0 7
Coffee Tree 0 0 0 5 0 0 0 0 0 0 0 0 0 0 0 0 5
Dome Cafe 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 2
Total 490 773 37 178 153 90 14 81 48 112 84 108 261 87 89 3 2608

How these numbers were put together

  • Data pulled from the Google Maps / Places API via scripts/fetch_chains.py in the cucci-coffee repo.
  • For each chain, we run one Text Search per state plus a nationwide fallback, paginate up to 3 pages, and dedupe by place_id. Dense states that hit Google's 60-result cap get drilled into city-by-city.
  • Only outlets with businessStatus: OPERATIONAL are counted. Permanently closed branches are filtered out.
  • Independent / specialty cafes are not in this table — only the tracked chains. For the full interactive map including indies, see the homepage.
  • Google occasionally returns cross-border matches (Singapore, Brunei) for regional chains; those are filtered against Malaysia's 13 states + 3 FTs.
// Data refreshes

Get notified when we refresh the numbers

We re-pull chain data periodically. Subscribe if you want a heads-up when the next snapshot drops.

Subscribe Free →