
You’ve probably heard of T20, M40, B40. But most of the numbers floating around online are national averages and Malaysia is far from average across the board.
A household that counts as T20 in Kelantan would be M40 if they packed up and moved to Selangor. Same income, completely different label. That’s how wide the gap is.
DOSM’s 2024 Household Income Survey breaks it down by state. Here’s what it actually says.
Quick explainer: what is T20?
T20 = the top 20% of Malaysian households by income. Nationally, that starts somewhere above RM12,679 a month.
But that’s a national cutoff; each state has its own income distribution, which means the bar is different depending on where you live.

The most reliable state-level number DOSM gives us is the D9 median; the midpoint income of households in the 9th decile, which is the lower half of T20. If your household earns around this amount, you’re solidly in the top 20% of your state.
So what’s the number for your state?
| State | “You’re T20 here if you earn around…” |
|---|---|
| W.P. Putrajaya | RM21,570 |
| W.P. Kuala Lumpur | RM19,494 |
| Selangor | RM18,105 |
| Johor | RM14,590 |
| Pulau Pinang | RM14,016 |
| W.P. Labuan | RM13,316 |
| Melaka | RM13,241 |
| Negeri Sembilan | RM11,348 |
| Sarawak | RM11,150 |
| Terengganu | RM11,015 |
| Sabah | RM10,709 |
| Perak | RM9,567 |
| Pahang | RM9,167 |
| Perlis | RM9,135 |
| Kedah | RM9,107 |
| Kelantan | RM8,296 |
Based on D9 median household gross income, DOSM Household Income Survey 2024.
The Selangor–Kelantan gap is wild
Selangor’s D9 median is RM18,105. Kelantan’s is RM8,296.
That means the income that makes you top 20% in Kelantan is less than half of what you’d need in Selangor for the same status. Same country, very different reality.
KL and Putrajaya sit even higher, but they’re a bit of an outlier; small populations heavily skewed towards senior civil servants, executives, and corporate professionals. Not really representative of a typical state.
Once you’re in T20, there’s still a huge range
T20 isn’t one thing. It splits into two halves; D9 and D10 and the gap between them is significant.
Take Selangor. D9 median is RM18,105. D10 median? RM28,901. That’s a RM10,000 jump between the two halves of the same bracket. In KL, D10 hits RM31,816.
This is why you’ll often see T20 averages quoted much higher than medians; a layer of very high earners at the top of D10 pulls the average up. The median is the more honest number for most people.
3 things to keep in mind

These are household numbers, not individual salaries
Two people each earning RM5,000 = RM10,000 household income. That puts them in T20 territory in quite a few states.
It’s gross income
Before taxes, EPF, SOCSO. Your actual take-home will be lower.
A lower bar doesn’t mean an easier life
Kelantan’s T20 threshold is lower because incomes across the whole state are lower, not because things cost dramatically less. The cost of living gap between states is real, but it doesn’t fully close the income gap.
Source: DOSM Household Income Survey Report 2024, Table 4.12. Monthly household gross income, Malaysian citizen households.
How Do T20 Families Fall Into B40? M’sians Share Their Own Experience

