PassRidge Flex: new 3-4h/day tasks every week, paid hourly or per project. See open tasks →

Methodology · data collected 2026-10-20 · refreshed quarterly

How we calculate QA salaries

PassRidge salaries are estimates built from 3686 pay ranges that employers published in public job ads. We convert them to USD, compare them with our earlier planning baselines, and move the baselines up where the postings say so. We never move them down on thin evidence. Below: the sources, the formula, and the limits.

3686posted pay ranges used
2479from the US
1207outside the US
k = 6shrinkage strength
Data sources

Posted pay ranges, not surveys

Posted pay ranges from public employer job boards (Greenhouse, Lever, Ashby, SmartRecruiters) and public job feeds, converted to USD. Model = prior base x observed/prior ratio, shrunk toward the pooled ratio, floored at the prior.

  • What counts. A listing with a published minimum and maximum pay for a QA-family role, with a country we can identify. Ranges without an identifiable country are left out. Hourly ranges are annualised at 2,080 hours and monthly ranges ×12. Ranges that annualise below $6,000 or above $600,000 are dropped as errors.
  • Collection date. 2026-10-20. Each range is converted to USD at the indicative rates in our FX table and treated as the midpoint of the offered band.
  • Level. We infer junior, mid, senior or lead from keywords in the job title (default mid-level), then compare the midpoint with our prior estimate for that role, level and country.
  • Not used. Self-reported salaries, recruiter surveys and government wage statistics (such as BLS OEWS in the US) are not inputs to the current model. Adding official statistics is the next planned step.
  • Live listings. Our jobs feed holds 605 listings with a real posted range; the rest show a model estimate marked “est.”. Estimates are never fed back into the model.
The model

One formula behind every number

The finder, the role pages and all country pages use the same arithmetic, so a figure never disagrees with itself.

median = base_usd[role][level] × 1,000 × pay_index[country] × fx[country]

Round to two significant digits. p10 = median × 0.82 and p90 = median × 1.22. City pay is the country median times a city factor (1.00 = country median).

Role base pay

US median by role and level, from the prior estimate times a role factor learned from posted US ranges.

Country index

Pay relative to the US, from a prior index times a regional adjustment learned from non-US ranges.

Currency

USD converted at indicative planning rates, refreshed manually. Local figures move with currency, USD figures do not.

Calibration policy

Shrink to the pooled result, never below the prior

  • Observed ratio. For each posted range we compute posted midpoint ÷ prior estimate (capped at 2.5×). The US pooled median ratio is 1.122; the non-US pooled ratio is 1.134.
  • Shrinkage. Each role or region factor is (sum of observed ratios + k × target) ÷ (n + k) with k = 6. With few observations the factor stays close to the target; with many it follows the data. For Manual QA Tester, n = 911 gives a weight of 0.99 on the data and a factor of 1.203.
  • Half-way target. Where a cell has no data, the target is half-way between 1.0 and the pooled ratio, so a big-technology sample is not extrapolated to roles and regions it does not describe.
  • Floor. Every factor is at least 1.00. Posted ranges win over the model, and the model is raised to match the market but never lowered below the prior. This is a deliberate policy: it avoids understating pay on thin data.
  • Country normalisation. Country indexes are relative to the US, so they are divided by the average role factor. A country can therefore have a lower index than before while its USD pay still rose; the hub shows the change in USD.
p10, median, p90

How the range is derived

The median comes from the model. The range does not come from a measured distribution of salaries; it is a fixed band around the median.

× 0.82p10

The low end a candidate can expect, for example a weaker negotiation or a smaller employer.

× 1.00median

The model value after rounding to two significant digits.

× 1.22p90

The high end, typical of large technology employers and strong negotiation.

The same multipliers apply to every role, level, country and city. They are a presentation convention, not a measured percentile.

Sample sizes

How much data sits behind each role and region

Strong for automation, SDET and manual testing in the US. Thin or absent for game, localization and data QA, where the model stays at its prior.

By role (US observations)

Rolen (US)SampleWeight on dataRole factorPrior midNowRanges in feed
Manual QA Tester9110.991.20×$68k$82k252
QA Automation Engineer11050.991.24×$98k$121k116
SDET1240.951.11×$118k$131k72
QA Lead / Manager1700.971.00×$110k$110k57
Mobile QA Engineer40.401.20×$88k$106k2
Performance Test Engineer230.791.55×$95k$147k13
Security / Penetration Tester220.791.65×$110k$181k17
Game QA Tester20.251.38×$48k$66k3
Accessibility Tester20.251.23×$80k$98k3
Business / Test Analyst390.871.24×$72k$89k29
Data / ETL QA Engineer120.671.17×$85k$100k1
Localization QA Tester40.401.00×$48k$48k1
AI / LLM Evaluation QA340.851.48×$70k$104k11
Release / DevOps Engineer100.621.37×$105k$144k8
Technical Writer (QA / Docs)170.741.26×$72k$90k20

By region (non-US observations)

RegionCountries in the indexn (non-US)Regional adjustmentListingsWith posted range
North AmericaUnited States, Canada4851.38×1486479
UK & IrelandUnited Kingdom, Ireland2101.13×20430
Western EuropeGermany, Netherlands, France, Spain, Portugal, Italy, Switzerland, Austria, Belgium1661.07×39926
NordicsSweden, Denmark, Norway, Finland61.00×361
Central & Eastern EuropePoland, Czechia, Romania, Hungary, Bulgaria, Estonia, Lithuania, Greece, Ukraine1351.11×41840
Latin AmericaBrazil, Argentina, Mexico, Colombia461.98×2651
Asia-PacificIndia, Philippines, Singapore, Australia1221.20×109118
Middle East & AfricaUnited Arab Emirates, Israel371.11×1131

US = 2479 of 3686 observations; North America in the table is Canada only. “Listings” counts every QA listing in our jobs feed for the region's index countries; “with posted range” counts those with a real range.

Limits

What this data cannot tell you

Use the numbers as a benchmark for a conversation, not as a quote. Treat anything outside the US, Canada and the UK as indicative.

  • Big-technology bias. Employers that publish pay ranges are mostly large technology and gaming companies, which pay above the market average.
  • Thin outside the US. Only 1207 non-US observations; some regions have two or three.
  • Base pay only. Bonus, equity, benefits and overtime are excluded. Pay in India is often quoted as total cost to company.
  • Asking, not paid. A posted band is what an employer is willing to offer, not what every hire receives.
  • Take-home and city factors are estimates with generic assumptions.
Update cadence

Refreshed every quarter

2026-10current data
Q1 2027next planned refresh
4× / yearcadence

Page quality gate. Role-by-country pages are offered to search engines only when enough evidence sits behind them: at least 5 of 8 checks pass (live listings, posted ranges in the country and role, regional and role sample sizes, city coverage, Flex availability). Pages below the bar stay available to readers but are not submitted. Each country page shows its evidence.

Disclaimer. Salary figures are estimates for information only. They are not an offer, a guarantee of pay, or financial, tax or legal advice. Pay varies with employer, contract type, skills and negotiation.

FAQ

Methodology FAQ

Is this a salary survey?

No. It is a model calibrated on pay ranges that employers publish in job ads. It shows what employers offer in public listings, not what every employee earns.

Why can the model never go below your earlier estimate?

Posted ranges in our sample come mostly from large technology employers, which post higher than the market average. Raising estimates where data says so, but never lowering them on thin evidence, avoids understating pay. We expect to widen the sample before changing this policy.

How do you get p10 and p90?

Every p10 is the median x 0.82 and every p90 is the median x 1.22. These are fixed multipliers used on every page, not measured percentiles of individual salaries.

How often is the data updated?

Quarterly. The current data set was collected on 2026-10-20. The next refresh is planned for January 2027.

Which countries have the thinnest data?

Outside the US, Canada and the UK. Only 1207 of 3686 observations are non-US, so pay in smaller markets leans on the regional adjustment.

Back to the salary finder

PassRidge / start here

Test the market, not your patience.

Tell us the role you want or the role you need. A QA-only recruiter replies within one working day.

Choose your location

We use your location to show local pay, jobs and the right PassRidge legal entity. It never changes the page URL.

Search PassRidge