How to tell if you are underpaid, and by how much
The question has a numeric answer, and most people never get it because job postings leave out the two things the calculation needs. Here is the percentile test, the seven ways to run it, and what the size of your gap actually justifies asking for.
Alex Vavilov
CEO at Glozo | Helping Recruiters & Agencies Cut Sourcing Time by 80% with our Talent Intelligence Platform

You are underpaid if your total pay sits below the 25th percentile for your role, your level, and your metro area. Almost nobody can run that test: only 41.7% of the 140,978 US job postings in PayScope's September 2026 read carried a usable salary figure, and most postings for every role stated no seniority level at all.
So the comparison most people run, their own job title against a national average, rests on four postings in ten and on a level nobody wrote down. A title match can tell you your pay looks normal while the people doing your actual job, at your actual level, in your actual city, sit well above you.
Am I being paid enough? The three-number test
Three numbers settle the question: the 25th percentile, the median, and the 75th percentile for your role, at your level, in your metro area. Your total cash goes against those three. Where it lands is the diagnosis.
| Where your total cash sits | What it means |
|---|---|
| Below the 25th percentile | Underpaid against your own market. Three quarters of people doing your job at your level in your city earn more than you. |
| 25th percentile to median | Below par. The usual cause is two or three years in the same seat without a re-benchmark. |
| Median to 75th percentile | Paid in line with your market. |
| Above the 75th percentile | Paid above your market. Worth knowing before you resign over money. |
Two rules keep the test honest. Compare total cash to total cash, meaning base plus the bonus you actually receive most years, and keep equity in a separate column because it is a different instrument with a different risk. And use your metro rather than the national figure, because the national figure is an average of markets you do not work in.
Why job titles hide the answer
Seniority is the single biggest driver of the spread inside one job title, and it is the thing employers write down least. Across all 28 roles in the September 2026 posting set, the largest group of postings for every role stated no level at all. A "Software Engineer" opening covers the person two years in and the person eight years in, and the range between them is wider than the range between two different companies at the same level.
Pay is missing almost as often. Only 41.7% of those 140,978 postings carried a usable salary figure. The rest either said nothing or said something a machine cannot read, and a good share of them said DOE, which is its own answer to a different question. If you have been building your sense of the market from what you can see on job boards, you have been reading the minority of postings that chose to speak.
One caveat we would rather state than hide: pay disclosure clusters in the states that require it, which are California, New York, Colorado, Washington and Illinois. Those are high-cost markets, so any median built from posted salaries runs high against a true national number. Read every posted-salary median, ours included, as the top of the market talking.
Seven ways to find out what the market pays you
1. Run your resume through a salary estimator
Your resume carries the level information that your job title leaves out: years, scope, tools, whether you led anything. A resume-based estimator reads that and returns a range for the job you actually do rather than the job you are called. PayScope does this against a base of over 30 million job listings and returns the median plus where your own number sits inside the distribution. Free to start, and an account is required to run the analysis.
2. Compare live job listings for your skills, not your title
Open a job board and search on the things you do rather than the words on your business card. Filter to your metro. Then read only the listings that state a range, and note the level language in each one, because a range attached to "Senior" is a different fact from the same range attached to nothing. Ten listings is enough to see a shape.
3. Ask a recruiter what your profile clears
Recruiters price people for a living and they price them weekly. Replying to one cold message with "I am not looking, but what does this role pay for someone at my level" gets you a live number from someone with no reason to lowball you, because their fee scales with the placement. You are not obliged to take the call further.
4. Ask peers, with a range instead of a number
Asking a colleague what they earn puts them on the spot. Asking them to confirm a range does not. "I have been told the band for this level runs about 95 to 120, does that match what you have seen" is answerable with one word and it gets you the same information. Former colleagues at other companies are the better sample, because they price your skills without pricing your employer.
5. Check what your metro does to the number
The same job pays differently in Austin and in New York, and the gap is not the same size as the gap in what it costs to live in each. Before you conclude anything from a national median, adjust it to where you work. Our cost of living versus salary reality check walks through the arithmetic.
6. Take one offer through to a number
The most reliable price for anything is what someone will actually pay. Run one real process to the offer stage, on a role you would plausibly take, and you get a figure that no dataset can argue with. It costs a few evenings and it settles the question completely.
7. Read the posted ranges in pay-transparency states
Five states require most employers to state a pay range in the job posting: California and Washington since January 2023, New York since September 2023, Colorado since January 2024, and Illinois since January 2025. In each of them the rule reaches remote roles a resident of that state could perform, which is what makes this usable from anywhere in the country. Search your role, filter to those states, and read the bands. These are numbers an employer committed to in writing rather than a survey average, and they are the only method on this list that costs nothing and needs nobody's cooperation.
What the size of the gap actually justifies
A gap is only useful once you know how big it is, because the size decides which conversation you are having.
Under about 5% is noise. Two salary sources built on different methods will disagree by that much on the same job, so a 4% shortfall is not evidence of anything and will not survive a manager asking where the number came from.
Between roughly 5% and 15% is the range a market adjustment is designed to close. That is a specific request with a specific justification, and it is a different thing from a merit raise. Our guide to the market adjustment raise covers when to ask and how the case is built. If your situation is closer to an ordinary raise conversation, how to ask for a raise is the one to read.
Below the 25th percentile, be realistic about what an internal conversation can do. A gap that large usually means the role was priced at hire and never repriced, and internal adjustment budgets rarely stretch that far in one step. The market close is a move, and knowing the number is what tells you whether the move is worth making.
Frequently Asked Questions
How do you know if you're being underpaid?
Compare your total cash against the 25th percentile, median and 75th percentile for your role, at your seniority level, in your metro area. If you sit below the 25th percentile, three quarters of comparable people earn more than you and you are underpaid against your own market. Comparing against a national average for your job title is the mistake that hides most real gaps.
How do I figure out if I am underpaid?
Establish your level first, because the same job title covers a two-year and an eight-year version of the work with a large gap between them. Then find the salary distribution for that role at that level in your city, not the national average, and place your total cash inside it. Base pay alone against someone else's total compensation will make any gap look bigger than it is.
What website can I use to check if I'm underpaid?
Resume-based estimators read your actual experience rather than your job title, which is what makes them more accurate for this question than a title lookup. PayScope returns a market range and your position inside it from an uploaded resume or a LinkedIn profile saved as PDF. Payscale, Glassdoor and Levels.fyi are the widely used title-based alternatives, and they will disagree with each other because their methods differ.
What should I do if I am underpaid?
Size the gap before you act on it, because under about 5% is within the disagreement between two salary sources and is not worth raising. A gap of roughly 5% to 15% is what a market adjustment request exists to close, and it needs a documented external number rather than a feeling. A gap larger than that has usually built up since the day you were hired and rarely closes in one internal step.
Is $20 an hour considered low income?
At 40 hours a week for 52 weeks, $20 an hour is $41,600 a year before tax. Whether that counts as low depends entirely on household size and location, since the federal poverty guideline for a single person is far below it while the median rent in several US metros would consume more than half of it. For the underpaid question specifically, the figure that matters is not a national threshold but what your role pays in your city.
What are signs you're not valued at work?
The measurable ones are pay related: no real raise in two years, a new hire at your level starting above you, or duties that grew after a reorganization while the salary did not move. The unmeasurable ones show up as being left out of decisions about your own work. The pay signals are worth checking against market data before you act on them, because a raise that trails inflation feels like neglect and is sometimes just a badly designed policy.