The suspicion usually arrives sideways - a job ad, an overheard number, a friend’s casual mention - and then sits there unresolved because Malaysian workplaces make salary talk feel forbidden. Here is how to actually find out, what the answer means, and the three things to do with it - including the one most people avoid until it has cost them years.
Not knowing whether you are paid fairly is not a personal failing - it is the predictable result of an information system built to keep you uncertain. Salary secrecy is a norm here, reinforced socially (discussing pay reads as rude) and sometimes contractually. Published averages are usually too broad to be useful, blending Klang Valley with everywhere else and junior with senior. And the number you anchor on - your own current salary - is the one number guaranteed to be uninformative about the market, because it was set by whatever you accepted years ago plus small increments. The result is an asymmetry: your employer knows what the market pays and you are guessing. The four checks below close that gap in an evening, and none of them requires an uncomfortable conversation with a colleague.
The four checks
01
The market check - what the same role pays elsewhere
Search live job listings for your exact role and years of experience, and read the posted ranges (Malaysian listings increasingly show them). Cross-check with salary aggregators, but weight actual listings higher - they are what employers are paying right now, not what a survey said last year. Collect ten data points, not two, and note the ones from companies you would genuinely join.
02
The replacement check - what it would cost to hire you
Ask honestly: if you resigned tomorrow, what would your employer have to advertise to replace you? That number - not your current salary - is your actual market value, and the gap between the two is what your loyalty is costing you. If your replacement ad would offer more than you earn, you have your answer without needing anyone else’s permission to believe it.
03
The peer check - carefully, and without poisoning your workplace
Talk to people in the same role at other companies rather than colleagues at your own - the information is just as good and the social cost is zero. Malaysian professional communities, industry groups, and former coursemates are the natural sources. Ask for ranges rather than exact figures if that feels easier; most people share happily when it is framed as calibration rather than comparison.
04
The trajectory check - the one most people skip
Compare your increments to inflation and to what a switch would pay. A 3-5% annual raise on a below-market base compounds into a growing gap, not a shrinking one - and the difference between your band and the next one up is usually far larger than any raise your current employer will approve. Underpayment is rarely a single event; it is a slope you have been on for years.
The loyalty penalty, explained without drama
If the checks show a gap, the cause is usually structural rather than malicious, and worth understanding precisely: internal raises and external offers are set by completely different mechanisms.Your increment is a percentage of what you already earn, approved against a budget and an HR band. An external offer is set by what the market currently pays for your skills, and it resets from zero. Five years of 4% increments therefore track your starting salary, while a peer who moved twice tracks the market - and the two diverge quietly, every year, without anyone deciding to underpay you. This is the actual arithmetic behind “job hopping pays better”, and the honest conclusion is not that loyalty is foolish but that it should be a decision you make knowingly, with the price on the table. Many people stay for genuinely good reasons - a manager who develops them, work they believe in, flexibility they would lose. Those are worth paying for. Paying for them unknowingly is the part worth fixing.
What to do with the answer
If the gap is small (under ~10%): ask, with evidence. Book a proper conversation rather than raising it in passing, bring your market listings and your contributions stated as outcomes rather than effort, and name a specific number. Time it after a visible win. Never bluff an offer you would not accept. If the gap is large (20%+):understand that most employers cannot close a gap that size internally - HR bands are real constraints, and a “no” is often structural rather than personal. That answer is still useful: it tells you the correction requires a different employer, and external moves are exactly how large gaps get closed. And if the whole field is the problem:the hardest and most valuable diagnosis. If the market rate for your role is itself low, changing employers moves you a few hundred ringgit while changing your ceiling changes everything - which is the case for a large share of Malaysian professionals earning RM 3,000–4,500 in roles whose bands have been flat for years.
The ceiling problem, and the honest comparison
Here is the comparison that sends people down a different path, with our bias disclosed since we teach it. The AI-capable junior developer band in Malaysia sits at RM 6,000–9,000/month, mid-level at RM 7,000–13,000, with remote work for Singapore employers commonly paying 1.5–2× local rates (full data and sources). For someone currently earning RM 3,500 with 4% annual increments, no negotiation reaches that band - the arithmetic simply does not get there, which is why the underpaid feeling persists even after a successful raise. The honest caveats belong here too: entering that band takes 400–600 focused hours of real work, the market screens hard for genuine capability, and the premium is an early-market one that narrows as supply catches up. But if your four checks concluded “the field itself is the ceiling”, this is the comparison worth running properly - and the free way to test whether the path suits you is a week of actual building via the free trial. If you would rather compare fields first, the honest entry-cost breakdown is in the highest-paying jobs guide, and if the deeper issue is that the work itself has gone flat, that diagnosis lives in the stuck playbook.
FAQ
How do I know if I am underpaid in Malaysia?
Run four checks rather than guessing. The market check: search live job listings for your exact role and experience level and collect ten posted ranges, weighting real listings above survey averages. The replacement check: what would your employer have to advertise to replace you tomorrow? That number is your market value, and the gap between it and your salary is what staying is costing you. The peer check: ask people in the same role at OTHER companies (not colleagues - same information, no social cost). And the trajectory check: compare your annual increments to what switching would pay, because a 3-5% raise on a below-market base widens the gap rather than closing it.
Why do people who stay loyal end up underpaid?
Because internal raises and external offers are set by different mechanisms, and the gap compounds silently. Internal increments are governed by budget percentages and HR bands - typically small, applied to whatever you currently earn. External offers are governed by what the market will pay for your current skills, and reset from zero. Stay five years on 4% annual increments and your salary tracks your starting point; a peer who moved twice tracks the market. This is not a conspiracy - it is structural, and it is why "job hopping" got its reputation for paying better. The practical implication is not that loyalty is foolish, but that it should be a decision you make knowingly, with the price visible.
What are the actual salary ranges for tech roles in Malaysia?
From our State of AI Hiring report: traditional junior developers RM 3,500-6,500/month; AI-capable juniors - people who can direct AI tools, judge the output, and ship real software - RM 6,000-9,000; mid-level RM 7,000-13,000; seniors and specialists above that. Two multipliers change the picture entirely: remote roles for Singapore employers commonly pay 1.5-2x local bands, and Western remote roles can reach 2-3x at mid-level. If you are in a non-tech role earning RM 3,000-4,500 - which describes a large share of Malaysian professionals - note that the AI-capable junior band exceeds it after a few months of learning, which is why this comparison sends so many people down the switching path.
How do I ask for a raise and actually get it?
Make it an evidence conversation, not an emotional one. Bring three things: market data (the listings you collected - specific ranges for your role), your contribution documented in outcomes rather than effort ("this saved X hours a month", "I own Y since March"), and a specific number rather than a vague request for "more". Ask for a scheduled conversation rather than raising it in passing, and time it to follow a visible win rather than a bad quarter. Two honest notes: never bluff a competing offer you would not accept, and understand that many Malaysian employers genuinely cannot exceed HR band ceilings - which means a "no" is sometimes structural rather than personal, and tells you the raise you need requires a different employer.
What if my employer can’t or won’t pay market rate?
Then you have useful information, and three options ranked by return. Move employers - the fastest correction, since external offers reset to market and switching commonly beats years of internal increments. Move roles - if your field itself has a low ceiling, the underpayment is structural to the work rather than to your company, and no employer change fixes it. Or raise your ceiling by adding a skill the market pays a premium for: in Malaysia right now that points hardest at AI-capable building skills, where the documented junior band (RM 6,000-9,000) exceeds many mid-career salaries in other fields, and the learning runway is months rather than years.
Some gaps close with a conversation. Some need a ceiling change. Know which one you have.
If the field itself is your ceiling, a week of free building tells you whether the higher-band path suits you - six real projects, a live instructor session, no card.