According to the U.S. Bureau of Labor Statistics, the May 2025 median wage for software quality assurance analysts and testers was $104,300 a year, or $50.14 an hour. The 10th-to-90th-percentile range was $61,440 to $167,010. These national figures offer a starting point for pricing QA work, not a salary that applies to every job with an engineer title.

The title alone says little about the testing scope. Running an established regression suite, maintaining test automation, and designing quality architecture represent different responsibilities, even when employers use the same title. The relevant benchmark depends on what the role is expected to test and own.

Table of Contents

What a QA Engineer Salary Actually Measures

A salary benchmark prices a defined job and a defined kind of compensation. For work focused on designing and running software tests, finding defects, and checking application behavior, the relevant occupation is software quality assurance analysts and testers.

The Bureau of Labor Statistics occupational page for software quality assurance analysts and testers provides that occupational reference. A job title alone cannot establish whether a specific role matches it: the work, level of responsibility, industry, location, and employment arrangement all affect comparability.

The measurement also matters. Government wage figures, advertised salary ranges, and self-reported survey results describe different populations. Averaging them would blur those distinctions rather than produce a more accurate benchmark.

Identify the object being priced

A useful comparison specifies four things:

  • The work: What testing the employee performs, how independently they work, and which quality decisions they own.
  • The pay component: Whether the figure is base salary, variable cash, equity, benefits, or a contract rate.
  • The population: Whether the figures describe employees, employers advertising vacancies, or survey respondents.
  • The period: When the wages were measured, the job was advertised, or compensation was reported.

A government wage median marks the midpoint of a defined occupational distribution. It does not set the right offer for every testing role, explain an employer's budget, or predict what a candidate will accept.

A job ad has a different limit: it describes proposed hiring terms, not what current employees earn or what a successful candidate ultimately receives. A survey records respondents' reported compensation, which may not represent all workers in the occupation.

Use the benchmark as a reference, not a verdict

First define the testing scope, then compare like with like. Keep base pay separate from bonuses, equity, overtime, benefits, and contract premiums; those components change total compensation, not the meaning of a base-pay figure.

Candidates and hiring managers can use the same starting point: a written description of the work beside a relevant wage distribution. The closer the responsibilities match the occupation being measured, the more useful the comparison.

US Percentile Pay for QA Analysts and Testers

US pay for software QA analysts and testers, May 2025

The Bureau of Labor Statistics reports the following May 2025 US wage distribution for software quality assurance analysts and testers.

Marker Annual figure How to read it
10th percentile $61,440 or less Lowest-paid tenth; a lower-end reference, not a minimum salary
25th percentile $80,310 Lower edge of the middle half of earners
Median $104,300 ($50.14/hour) Half earned more and half earned less; a starting reference for established QA work
75th percentile $133,180 Upper edge of the middle half
90th percentile $167,010 or more Highest-paid tenth; an upper-end reference, not a salary ceiling

Read the lower end without inventing an entry-level band

The lowest percentile marker isn't an official junior salary. The occupation includes workers across experience levels, employers, industries, and geographic markets, so the table doesn't isolate why a particular employee falls near the bottom.

A narrow role focused on executing prescribed tests provides a reason to investigate the lower part of the distribution. A lower-paying labor market may provide another. Neither observation establishes an automatic discount or proves that a particular offer is fair.

The lower quartile is more useful than a supposed entry-level average when the job requires some independent testing but limited ownership. It identifies a position within the national distribution without pretending that the wage table contains a separate career-stage survey.

Understand the midpoint and upper end

The median is a midpoint, not an arithmetic average. Exceptionally high earnings don't pull it upward in the way they can pull up a mean. For an established individual contributor with ordinary test ownership, it is a defensible starting reference rather than a guaranteed entitlement.

The upper quartile marks the other boundary of the middle half. The middle-half spread is $52,870, according to the same BLS distribution, which illustrates how much information disappears when an article reports only a single headline salary.

Broader automation responsibility, test architecture, release ownership, or employment at a higher-paying organization can support an upper-distribution comparison. These are placement considerations, not findings that BLS assigns a particular percentile to a particular skill.

Reading rule: A percentile describes where wages fall. It doesn't explain why an individual worker earns that amount.

The highest marker also isn't a cap. Workers exist above it, just as workers exist below the lowest marker.

Keep the national scope visible

These figures don't provide separate medians by years of experience or state. Seniority and geography therefore require additional evidence rather than labels pasted onto percentile rows.

Mojolin's BLS wage figures are national US figures, mix junior and senior workers, and exclude equity, signing bonuses, and benefits. They are useful for locating employee base pay, not declaring the value of an entire compensation package.

The table's strength is consistency. That strength disappears if its median is averaged with job-advertisement figures or developer-survey responses.

Why Published QA Salary Numbers Disagree

A salary figure can describe employee wages, survey responses, job advertisements, or salary profiles. Those measures answer different questions, so they belong in separate columns rather than in a blended calculation.

Source Headline figure Year What it measures
BLS Occupational Outlook Handbook $104,300 median May 2025 US employee wages for software QA analysts and testers
Stack Overflow Developer Survey $130,000 2024 Self-reported QA category within a global survey of more than 65,000 developers, not that many QA respondents
OwlApply job ads $122,000 median advertised 2026 Advertised salaries across 1,687 US postings from 583 employers
PayScale salary profiles_Engineer/Salary) $83,800 average 2026 Average based on 2,747 US Quality Assurance engineer salary profiles
Apollo Technical $104,300 typical; $80,310 to $133,180 range 2026 Figures matching the BLS median and middle-half boundaries, not evidence of another independent wage sample

The figures differ because their populations and summary measures differ. A median, an average, and an advertised median are not interchangeable, even when each source uses a QA-related title.

A survey respondent isn't an occupational sample

Stack Overflow's results come from a global, self-selected developer survey. The QA category reflects its respondents, whose locations, seniority, currencies, remote-work arrangements, and participation patterns may differ from those of US employees in the occupational wage data.

The survey's total participation count is not the QA sample size. Nor does placing QA responses alongside other developer categories establish a national wage ranking across occupations. The survey describes its respondents, not every person employed in QA.

An advertisement isn't an accepted offer

The advertised median summarizes vacancies captured by the job-posting source. Which employers disclose pay, which roles they recruit for, and how those vacancies are distributed can affect the result.

A posted range also does not show the salary ultimately negotiated or paid. It describes an employer's hiring proposition, not a payroll record. PayScale's figure measures something else: an average from salary profiles, not an occupational median.

Keep the comparison aligned on four points:

  • Year: A publication label and the date wages were observed may differ.
  • Market and currency: US employee wages are not a global compensation measure.
  • Sample: Workers, profiles, and vacancies are different units of measurement.
  • Role definition: Testing-focused QA and developer-oriented quality engineering may attract different respondents.

The same care applies to comparisons with other occupations, such as the IT manager salary comparison. Match the population and statistic before comparing amounts.

For a US hiring band, standardized occupational wages provide a consistent reference. Job ads add evidence about recruiting ranges, while self-reported surveys describe their respondents. Keep all three measures separate.

QA Titles Mapped to Real Testing Work

The O*NET framework for software quality assurance analysts and testers defines the occupation through tasks: developing and executing tests, testing modifications before implementation, documenting defects, maintaining known-defect information, and contributing to design reviews.

That description is a better starting point than a title's apparent seniority. The framework also includes regression, negative, database-impact, usability, compatibility, and retesting work, alongside reproducible procedures, release-readiness criteria, and automated-script maintenance.

The task hierarchy makes the distinction visible.

A diagram mapping Software Quality Assurance Analysts and Testers roles to core testing tasks and responsibilities.

Junior scope centers on reliable execution

A junior-scope role might run scripted functional cases, reproduce failures, and submit defects with clear prerequisites, expected behavior, actual behavior, and supporting evidence. The employee's responsibility is to produce trustworthy test results within a defined approach.

Concrete work might include recording a checkout failure in Jira, identifying the browser and test account involved, and confirming whether a developer's correction resolves the issue.

This scope supports investigating the lower half of the wage distribution. It doesn't justify assigning every junior employee to the same percentile, especially when the employer expects independent environment setup or substantial domain knowledge.

Mid-level scope includes choosing the approach

A mid-level employee does more than complete assigned cases. The role may include:

  • Test planning: Selecting coverage from requirements and product risks.
  • Regression ownership: Deciding what must run after a change and maintaining useful coverage.
  • API and database validation: Checking responses, persistence, and downstream effects rather than only screen behavior.
  • Automation maintenance: Updating Playwright, Cypress, or Selenium tests and diagnosing failures in a continuous integration pipeline.

The median is a reasonable comparison neighborhood for established test ownership. The important distinction is whether the person merely runs a suite or decides whether that suite supplies credible release evidence.

A testing-work explanation can also help make the responsibilities concrete.

Senior scope includes system-level quality decisions

Senior work can involve setting quality standards, designing test architecture, maintaining production-like environments, and defining risk-based release gates. Cross-team design feedback matters because the employee must identify testability and failure risks before implementation is complete.

Such responsibilities justify examining the upper part of the distribution. They don't establish a guaranteed senior salary or a fixed premium for a framework.

A useful interview distinction is whether the candidate can explain why a release should proceed, not merely whether the automated checks passed. Evidence may include a coverage decision, a failure-triage approach, or a plan for handling unreliable test data.

Automation is a scope indicator, not a title shortcut

A manual-focused QA engineer and an automation-heavy QA engineer can share a title while differing in programming depth, CI/CD integration, performance testing, security testing, and release authority. An SDET title doesn't settle the comparison either.

O*NET identifies programming, complex problem solving, and quality-control analysis as relevant skills. Salary placement should connect those capabilities to actual responsibilities, not just a list of tools on a résumé.

The defensible comparison records the automation language, environment ownership, test architecture, and release decisions beside the salary. Years of experience alone don't establish the scope being purchased.

Pay Parts the Wage Statistic Excludes

An offer can rank higher on guaranteed salary while remaining less attractive overall. The apparent contradiction disappears once the comparison separates fixed pay from uncertain or noncash components.

The national wage benchmark doesn't guarantee the value of the full package. A candidate should assess each component according to its payment conditions rather than adding every headline amount to salary.

The compensation map keeps those categories separate.

A diagram illustrating components like bonuses, stock, and benefits that are excluded from base BLS wage statistics.

Classify each component before valuing it

Component What the comparison should record
Base salary Guaranteed annual employee salary, separate from contingent compensation
Annual bonus Eligibility, target, performance conditions, and available payout history
Equity Instrument, vesting schedule, liquidity, and conditions affecting realizable value
Signing bonus Payment timing and repayment obligations
Benefits Health-plan costs, retirement contributions, leave, and eligibility
Overtime Whether additional hours are paid and whether they are expected
Contract premium Unpaid leave, benefits responsibility, and the distinction between billed and paid time

A bonus target isn't a promised payout unless the agreement makes it one. Where reliable payout information isn't available, the uncertainty should remain visible rather than being replaced with the maximum possible award.

Equity needs a separate valuation discussion. A grant's stated value, vested holdings, and cash available to the employee aren't necessarily equivalent.

Compare offers without disguising risk

Consider hypothetical offers with the same QA engineer title. One provides a lower guaranteed base and a performance-bonus target; another provides a higher base without a bonus.

The wage table can rank the bases directly. It can't determine which offer produces more annual cash without information about the bonus paid.

The same distinction applies to a signing payment. It may improve initial cash compensation without increasing recurring salary, and repayment conditions may matter if the employee leaves.

A conditional payment can improve an offer. It can't retroactively turn a lower guaranteed salary into a higher guaranteed salary.

Benefits deserve their own comparison, especially when employee health costs, retirement contributions, or paid leave differ. An apparently strong contract rate also needs an accounting for time that isn't billable or paid.

Geography, industry, and employer size are reasons to investigate placement within the national distribution. This benchmark doesn't supply a separate official metro or industry table, so it shouldn't be used to manufacture a local median.

The clean rule is base beside the wage distribution, variable compensation beside the base. A total-package decision can follow without obscuring either comparison.

QA Pay Next to Related Tech Occupations

Software quality assurance analysts and testers and software developers aren't interchangeable occupational categories. Their work can overlap, but overlapping skills don't establish identical job content.

A tester may write substantial code while producing test infrastructure rather than customer-facing functionality. A developer may write tests while remaining responsible primarily for shipping product code. The output and accountability determine the useful comparison.

Match the main deliverable

Main responsibility Appropriate comparison direction
Test strategy, defect evidence, and release-readiness assessment QA analyst and tester occupation
Maintaining automated coverage and investigating test failures QA scope, with technical depth recorded
Shipping application features and maintaining production code Software developer occupation
Security assessment as the primary specialty Information security role analysis
Resolving user incidents and supporting deployed systems IT support role analysis

These are practical crosswalk rules, not formal reclassification decisions. A hybrid role requires closer examination of the work rather than a convenient choice of whichever salary headline is higher.

For a role primarily accountable for application development, the software developer occupation profile is a more appropriate comparison starting point. That doesn't mean every employee with SDET in the title belongs in the developer category.

Code volume alone doesn't settle the occupation

An SDET might build reusable test frameworks, create service simulators, and maintain deployment checks. Another employee with that title might also deliver production services and be hired through the same engineering levels as product developers.

Those jobs require different cross-checks even if both use Python, Java, or TypeScript. The compensation analysis should identify what the employer expects the person to deliver and which leveling system applies.

  • For candidates: Compare the advertised duties with the interview content and performance expectations.
  • For hiring managers: Define whether success means better quality evidence, working product features, or both.
  • For career changers: Treat security and support occupations as separate destinations, not alternate labels for the same wage table.

A developer survey's QA category doesn't resolve these boundaries. It describes the respondents classified within that survey, not an official occupational determination.

Related-role comparisons become meaningful only after both sides use compatible measures. An employee-wage median beside an advertised developer range may generate an interesting headline, but it doesn't establish a reliable QA-to-developer pay gap.

The more useful question is whether the employer has classified the job correctly. A mislabeled requisition can create a misleading salary comparison before negotiation even begins.

How to Read One QA Offer Against the Range

A salary review should produce a short placement decision, not a collection of incompatible headlines. The process starts with the employment market and ends with a statement connecting pay to duties.

The checklist captures the basic comparison discipline.

A numbered guide explaining four essential steps to accurately compare a QA job offer against market salary ranges.

Run the offer through a consistent lookup

  1. Confirm the market is the United States.
    A national US wage distribution isn't a quote for an employee in another country. Remote work doesn't eliminate the need to establish the employer's applicable labor market.

  2. Write down annual base salary alone.
    Put bonus, equity, signing payments, and benefits on separate lines. For an hourly arrangement, verify expected paid hours and unpaid time before treating the rate as an annual equivalent.

  3. Describe the actual testing scope.
    Record whether the role executes cases, maintains coverage, designs the testing approach, or owns release gates. Include the programming language, CI/CD responsibility, environments, and performance or security expectations where relevant.

  4. Locate the base within the national distribution.
    Narrow execution work warrants examining the lower portion; established test ownership supports a midpoint comparison. Broad architecture and release responsibility support investigating upper-percentile placement, without assigning a guaranteed premium.

  5. Audit any competing headline.
    Identify whether it is a mean, median, advertised figure, or self-reported survey result. Discard it as a direct comparator when its population or role definition doesn't match the offer.

  6. Use advertisements as recruiting evidence.
    A closely matched vacancy can help test whether the employer's band is plausible for the advertised work. It still doesn't establish the accepted salary, and duplicate or loosely matched postings shouldn't be treated as independent proof.

  7. Write the conclusion in a single line.
    A useful conclusion might state that the base sits below the occupational midpoint despite independent regression and automation ownership. The follow-up question is whether the employer should raise pay or narrow the job.

Resolve mismatches before negotiating

A low placement isn't automatically an underpayment finding. The job description may overstate the work, the employer may provide substantial guaranteed compensation outside salary, or the occupational comparison may be wrong.

Those possibilities should be tested explicitly. A candidate can ask who owns test architecture, who decides release readiness, and whether automation development is a central responsibility or occasional maintenance.

Decision test: If the employer won't change the salary, the scope should still be clear enough to explain what the salary purchases.

The final placement sentence belongs in the negotiation notes or requisition approval. It turns an emotional disagreement about a headline number into a concrete discussion about responsibility.

Anchor a QA Salary Before You Negotiate

A defensible negotiation starts with one base-pay anchor and a scope-based justification. A folder of salary screenshots isn't stronger evidence if the screenshots measure different populations.

For a US employee whose work matches the QA analyst and tester occupation, the national midpoint supplies the reference. The requested placement should then reflect the actual responsibilities rather than a preferred headline from a different source.

Make the anchor auditable

A candidate's preparation can fit into a compact record:

  • Base anchor: The proposed guaranteed annual salary, stated without bonus or stock.
  • Distribution position: Whether the request is near the midpoint, lower quartile, or upper quartile.
  • Scope justification: Regression ownership, automation maintenance, test architecture, or release authority that supports the placement.
  • Supporting recruiting evidence: Closely matched advertisements, kept distinct from employee-wage evidence.

Consider a mid-level role responsible for maintaining automation and owning regression coverage. A midpoint-oriented anchor is a reasonable starting position, but a request above it should identify additional scope, employer-specific hiring evidence, or another relevant distinction.

Merely selecting a higher developer-survey result doesn't explain why that employer should pay more for that job. Likewise, selecting a lower profile-based average doesn't establish that an employer's offer is competitive.

Give hiring teams the same standard

Hiring managers should define the base range in the requisition and discuss it during the first candidate conversation. A manual-execution role and an automation-architecture role shouldn't receive the same band just because both are called QA engineer.

The discussion should also separate an employee's current capability from responsibilities the employer expects later. If the role is expected to grow into release ownership, the employer should clarify how scope changes will be evaluated.

The salary negotiation guide provides a practical continuation for turning a benchmark into a compensation conversation. The immediate task remains narrower: establish the guaranteed base being discussed and the work that supports it.

The published distribution is an evidence boundary, not a prohibition on salaries outside it. An unusual offer requires stronger role-specific evidence, not an assumption that every employee must fit between the outer markers.

Before accepting or publishing an offer, the candidate or hiring manager should write the base anchor, its percentile position, and the specific duties that justify it. That record is more useful than an unexplained claim that the salary is above or below market.


Mojolin combines official US occupational wage information with role comparisons and practical pay-negotiation guidance. Candidates and hiring teams can visit Mojolin to compare the relevant occupation, check the wage distribution, and prepare a base-pay anchor tied to the testing work.