What Ukrainian IT pays in 2026
Median and quartile salaries across 14 roles and four seniority levels, computed from 2,972 vacancies that state a salary range. All figures in USD; hryvnia ranges are converted at the National Bank rate.
Every figure carries its sample size. This is not a survey — the numbers come from the job postings themselves and are recomputed daily, so the snapshot doesn't go stale between publications.
Data as of September 8, 2026 · updated monthly
Salaries by role and seniority — 2026
Median monthly salary in USD. «n» is how many vacancies a figure rests on; thin samples are dimmed, and an empty cell means no data at all — those are different claims and we don't blur them together.
| Role | Vacancies | All levels | Junior | Middle | Senior | Lead |
|---|---|---|---|---|---|---|
| JavaScript Fullstack розробник | 1073 | $5,000 n=576 | $1,200 n=27 | $3,000 n=187 | $5,000 n=302 | $5,000 n=52 |
| QA Manual інженер | 823 | $1,200 n=270 | $800 n=86 | $1,500 n=138 | $2,600 n=20 | $3,000 n=3 |
| DevOps інженер | 806 | $5,000 n=373 | $1,500 n=7 | $3,500 n=126 | $6,000 n=202 | $6,000 n=26 |
| QA Automation інженер | 779 | $3,000 n=290 | $1,300 n=11 | $2,800 n=148 | $4,000 n=105 | $4,000 n=19 |
| Data Engineer | 746 | $5,500 n=341 | $2,000 n=4 | $4,000 n=79 | $5,500 n=228 | $5,500 n=20 |
| Analytics Engineer | 559 | $3,000 n=262 | $945 n=7 | $3,000 n=186 | $3,800 n=55 | $3,500 n=9 |
| Java розробник | 500 | $5,500 n=208 | $650 n=6 | $3,500 n=17 | $5,500 n=143 | $5,700 n=38 |
| Python розробник | 471 | $5,000 n=188 | $675 n=19 | $3,000 n=37 | $5,500 n=111 | $5,500 n=16 |
| .NET розробник | 385 | $4,700 n=81 | $1,700 n=4 | $3,500 n=9 | $4,900 n=51 | $5,000 n=10 |
| PHP розробник | 367 | $2,856 n=91 | $1,200 n=9 | $2,500 n=46 | $4,500 n=19 | $5,250 n=8 |
| Node.js розробник | 321 | $4,000 n=89 | $625 n=6 | $3,500 n=30 | $5,500 n=35 | $5,750 n=18 |
| React розробник | 272 | $2,811 n=72 | $700 n=21 | $2,406 n=20 | $5,450 n=24 | — |
| Data Scientist | 198 | $4,900 n=93 | $1,000 n=3 | $3,500 n=41 | $6,500 n=40 | $7,000 n=9 |
| Go розробник | 194 | $5,000 n=38 | $1,350 n=2 | $3,350 n=10 | $5,250 n=22 | $7,000 n=4 |
2,972 vacancies with a salary range across these roles. Seniority is inferred from the posting text; postings that state none are counted in "All levels" but not in the level columns. Fields without a dedicated page (management, design, embedded and others) are outside this table — hence the difference from the "with a salary range" card.
Highest medians right now — Data Engineer ($5,500), Java розробник ($5,500), JavaScript Fullstack розробник ($5,000).
New vacancies per week
New vacancies by the week they entered the corpus. The series is published as it is, including weeks when our own collection ran incompletely — those bars are dashed, and the structural events are labelled underneath. Without that, a gap caused by our pipeline would read as a hiring slowdown.
Dashed bars — weeks with incomplete collection coverage.
2026-06-01 — our collection was down for most of the week — this dip is ours, not the market's
2026-06-15 — another source was added to the corpus: a one-off step up, also not the market
2026-06-22 — one source stopped responding and still is — intake is understated from here on
Where remote work actually is
Share of vacancies mentioning a remote or hybrid arrangement. Market-wide — 74%.
| Role | Remote | Vacancies |
|---|---|---|
| JavaScript Fullstack розробник | 93% | 1073 |
| Go розробник | 91% | 194 |
| Data Engineer | 89% | 746 |
| PHP розробник | 86% | 367 |
| Python розробник | 85% | 471 |
| DevOps інженер | 84% | 806 |
| Data Scientist | 84% | 198 |
| .NET розробник | 84% | 385 |
| Node.js розробник | 84% | 321 |
| Java розробник | 84% | 500 |
| QA Automation інженер | 83% | 779 |
| React розробник | 80% | 272 |
| Analytics Engineer | 74% | 559 |
| QA Manual інженер | 74% | 823 |
Method, and where it stops
Where the numbers come from. Not a survey and not self-reported. We collect public Ukrainian IT job postings daily, classify each by role and seniority, and aggregate. Salary is taken from the range stated in the posting itself.
Median, not mean. A handful of $15,000 postings drag a mean far away from anyone real. The median is what the person in the middle earns, and P25–P75 shows where half the market sits.
Currency. Everything is normalized to USD at the National Bank rate. We do not normalize gross versus net, or employment type — postings don't carry that, so cross-company comparison stays approximate.
What counts as having a salary. Only postings with a stated minimum whose upper bound falls in a plausible monthly band of $100–$25,000. That drops annual figures and hourly rates, which would otherwise wreck the median.
Freshness — including the hole in it. The corpus holds 38,794 active vacancies, but «active» here means «we have seen it», not «it is definitely open»: automatic expiry of old postings isn't built yet. We have observed 17,736 of them in the last 14 days, which means 54% of the corpus is unconfirmed for over a fortnight. The cause is known: since 22 June one source has been behind a technical block and returns nothing, while its vacancies stayed in the corpus. This inflates vacancy counts; it moves the medians far less, because the salary ranges of older and newer postings don't differ systematically. We are fixing it, and this paragraph will say so when we have.
Collection ran on 30 of the last 30 days.
How to cite this
Data is published under CC BY 4.0 — use it freely with attribution. Charts and tables may be reproduced.
zapit.work. Ukrainian IT salaries 2026. Data as of September 8, 2026. https://zapit.work/en/report
Need a cut that isn't here — by city, stack, or a specific role? Ask and we'll compute it: the numbers are already in the database. Contact details on the About page.
Знайди конкретні вакансії під свій профіль
Опиши, що шукаєш, природною мовою — семантичний пошук поверне метчі з поясненням, чому кожна підходить.
→ відкрити чат