What Ukrainian IT pays in 2026
Median and quartile salaries across 14 roles and four seniority levels, computed from 2,355 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 July 26, 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 розробник | 845 | $5,000 n=446 | $1,158 n=20 | $3,000 n=144 | $5,000 n=238 | $5,000 n=38 |
| QA Manual інженер | 682 | $1,200 n=222 | $950 n=76 | $1,500 n=101 | $2,500 n=19 | $2,650 n=2 |
| DevOps інженер | 656 | $5,500 n=277 | $1,500 n=8 | $3,500 n=90 | $6,000 n=150 | $6,000 n=18 |
| QA Automation інженер | 616 | $3,000 n=243 | $1,400 n=8 | $2,900 n=125 | $4,000 n=86 | $4,000 n=17 |
| Data Engineer | 580 | $5,500 n=256 | $2,000 n=4 | $4,000 n=61 | $5,500 n=166 | $5,500 n=15 |
| Analytics Engineer | 454 | $3,000 n=213 | $937 n=5 | $3,000 n=152 | $3,800 n=43 | $3,250 n=8 |
| Java розробник | 394 | $5,500 n=154 | $781 n=9 | $3,250 n=8 | $5,500 n=107 | $5,700 n=25 |
| Python розробник | 379 | $5,000 n=154 | $670 n=15 | $3,000 n=35 | $5,500 n=89 | $5,500 n=11 |
| .NET розробник | 325 | $4,700 n=58 | $1,600 n=5 | $3,500 n=7 | $5,000 n=34 | $6,500 n=7 |
| PHP розробник | 310 | $2,834 n=87 | $1,200 n=8 | $2,200 n=43 | $4,300 n=19 | $5,000 n=9 |
| Node.js розробник | 260 | $4,000 n=68 | $600 n=5 | $3,250 n=24 | $5,500 n=26 | $5,500 n=13 |
| React розробник | 233 | $2,790 n=69 | $700 n=19 | $2,795 n=20 | $5,000 n=23 | — |
| Data Scientist | 161 | $5,000 n=81 | $1,000 n=4 | $4,000 n=35 | $6,200 n=35 | $7,000 n=7 |
| Go розробник | 153 | $4,000 n=27 | $1,500 n=2 | $3,700 n=5 | $5,000 n=17 | $7,000 n=3 |
2,355 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 — DevOps інженер ($5,500), Data Engineer ($5,500), Java розробник ($5,500).
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 — 69%.
| Role | Remote | Vacancies |
|---|---|---|
| JavaScript Fullstack розробник | 92% | 845 |
| Go розробник | 90% | 153 |
| Data Engineer | 87% | 580 |
| Data Scientist | 83% | 161 |
| Python розробник | 82% | 379 |
| PHP розробник | 82% | 310 |
| QA Automation інженер | 81% | 616 |
| Node.js розробник | 80% | 260 |
| DevOps інженер | 80% | 656 |
| .NET розробник | 80% | 325 |
| Java розробник | 79% | 394 |
| React розробник | 73% | 233 |
| QA Manual інженер | 69% | 682 |
| Analytics Engineer | 67% | 454 |
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 31,725 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 18,732 of them in the last 14 days, which means 41% 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 July 26, 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.
Знайди конкретні вакансії під свій профіль
Опиши, що шукаєш, природною мовою — семантичний пошук поверне метчі з поясненням, чому кожна підходить.
→ відкрити чат