📈 IT salary movement
What is being advertised right now? We record the salary ranges PUBLISHED in job ads every day and show how they move. Every figure comes with its sample size.
Measuring since: 2026-07-26 · Last measured: 2026-08-20 · 26 days recorded · 99.8% of our salary data is not quoted in forint, so the forint figure also moves with the exchange rate. Base rate fixed on: 2026-07-26 · Currency effect since base: -1.23%
⏱️ Measurable time windows
We only report movement when there is something to compare against. For windows not yet available we state the date — we never fill the gap with an estimate.
How the median moved · North America · gross HUF/month
🎯 Where do you stand?
Enter your gross monthly pay and we show what share of advertised ranges you sit above. The amount never leaves your browser — the maths runs on your device; we neither see nor store it.
ℹ️ Approximate: we compare against the MIDPOINT of advertised ranges, not actually paid salaries. Bonus, equity and benefits are not included.
🌱 Fresh ads vs full stock
Pay levels in newly posted roles move before the long-standing stock — hence a leading indicator. A cross-sectional comparison within today's live stock.
🪜 By level
The career ladder: how much more the next step pays. Bars show the ratio of medians.
| Level | Range midpoint | Difference | Range floors – Range ceilings | Range width | Full field (p10–p90) | daily | weekly | monthly | yearly | sample |
|---|---|---|---|---|---|---|---|---|---|---|
| Principal | 6 255 579 | +24% | 5 105 063 – 7 147 088 | +40% | 4 555 287 – 8 338 269 | ±0 | ▲0.5% | · | · | 2 021 |
| Architect | 5 117 117 | +1% | 4 017 292 – 6 186 289 | +54% | 3 600 660 – 6 713 812 | ±0 | ▲0.3% | · | · | 292 |
| Lead | 5 109 165 | +1% | 4 110 230 – 5 890 457 | +43% | 3 538 543 – 7 343 436 | ±0 | ▲0.7% | · | · | 474 |
| Senior | 5 062 725 | 0% | 4 188 769 – 5 759 558 | +38% | 3 434 791 – 6 675 851 | ±0 | ▲0.6% | · | · | 3 887 |
| Junior | 3 710 937 | -27% | 3 010 678 – 3 796 072 | +26% | 1 740 957 – 4 112 848 | ▲5.5% | ▲1.8% | · | · | 57 |
| Medior | 3 241 106 | -36% | 2 452 394 – 3 926 971 | +60% | 2 067 488 – 5 366 756 | ±0 | ±0 | · | · | 162 |
| Intern | 3 155 357 | -38% | 3 116 444 – 3 141 577 | +1% | 1 709 819 – 3 298 656 | ▲1.6% | ▼0.8% | · | · | 48 |
⚙️ By technology
Median per technology against the overall median — where the premium is.
| Technology | Range midpoint | Difference | Range floors – Range ceilings | Range width | Full field (p10–p90) | daily | weekly | monthly | yearly | sample |
|---|---|---|---|---|---|---|---|---|---|---|
| Rust | 5 884 486 | +16% | 4 712 366 – 6 623 492 | +41% | 4 028 012 – 8 240 095 | ±0 | ±0 | · | · | 722 |
| Spark | 5 690 987 | +13% | 4 712 366 – 6 544 952 | +39% | 3 926 971 – 7 284 663 | ±0 | ▲0.5% | · | · | 818 |
| AI/ML | 5 665 805 | +12% | 4 691 422 – 6 544 952 | +40% | 3 670 573 – 8 089 561 | ±0 | ±0 | · | · | 2 938 |
| LLM | 5 619 419 | +11% | 4 636 248 – 6 544 952 | +41% | 3 661 492 – 8 050 291 | ±0 | ▲0.8% | · | · | 2 134 |
| Databricks | 5 539 899 | +10% | 4 686 186 – 6 466 413 | +38% | 3 707 061 – 6 904 139 | ±0 | ▼1.3% | · | · | 635 |
| TypeScript | 5 451 101 | +8% | 4 517 980 – 6 283 154 | +39% | 3 642 783 – 7 421 976 | ±0 | ▲0.3% | · | · | 1 486 |
| PostgreSQL | 5 433 872 | +8% | 4 398 208 – 6 217 809 | +41% | 3 599 724 – 7 068 548 | ±0 | ±0 | · | · | 641 |
| Kubernetes | 5 394 112 | +7% | 4 450 567 – 6 283 154 | +41% | 3 524 326 – 7 526 695 | ±0 | ▲0.5% | · | · | 1 925 |
| data science | 5 380 249 | +6% | 4 403 444 – 6 163 630 | +40% | 3 403 375 – 7 962 589 | ±0 | ▲1.5% | · | · | 1 170 |
| React | 5 301 338 | +5% | 4 345 848 – 5 995 176 | +38% | 3 318 291 – 7 199 447 | ±0 | ±0 | · | · | 1 256 |
| GCP | 5 261 949 | +4% | 4 319 668 – 6 073 716 | +41% | 3 481 915 – 7 199 447 | ▲0.4% | ▲0.5% | · | · | 1 622 |
| C/C++ | 5 195 312 | +3% | 4 345 848 – 6 220 322 | +43% | 3 403 375 – 7 369 616 | ▼0.5% | ▼0.7% | · | · | 1 606 |
| Snowflake | 5 191 190 | +3% | 4 345 848 – 6 016 630 | +38% | 3 529 562 – 7 264 897 | ±0 | ▼2.1% | · | · | 652 |
| AWS | 5 168 805 | +2% | 4 188 769 – 6 015 321 | +44% | 3 415 680 – 7 135 673 | ±0 | ±0 | · | · | 2 620 |
| Python | 5 136 997 | +2% | 4 267 204 – 5 890 457 | +38% | 3 298 656 – 7 343 436 | ▼0.3% | ±0 | · | · | 4 692 |
| Terraform | 5 115 791 | +1% | 4 188 769 – 5 890 457 | +41% | 3 510 450 – 7 140 543 | ±0 | ±0 | · | · | 1 000 |
| Java | 5 100 179 | +1% | 4 188 665 – 5 759 558 | +38% | 3 210 287 – 6 942 885 | ±0 | ±0 | · | · | 1 397 |
| Azure | 4 983 258 | -1% | 4 004 202 – 5 759 558 | +44% | 3 246 146 – 6 931 795 | ▲0.4% | ±0 | · | · | 1 704 |
| SQL | 4 923 618 | -3% | 3 987 185 – 5 607 715 | +41% | 2 980 981 – 6 937 555 | ±0 | ±0 | · | · | 1 750 |
| Docker | 4 903 738 | -3% | 4 067 557 – 5 597 243 | +38% | 3 277 286 – 6 702 031 | ±0 | ▲0.4% | · | · | 827 |
| C# | 4 903 738 | -3% | 3 926 971 – 5 759 558 | +47% | 3 140 787 – 6 926 130 | ±0 | ▼5.1% | · | · | 919 |
| JavaScript | 4 897 111 | -3% | 4 004 202 – 5 572 372 | +39% | 3 010 678 – 6 544 952 | ▲0.4% | ±0 | · | · | 1 020 |
| GitHub | 4 665 178 | -8% | 3 832 017 – 5 314 501 | +39% | 3 141 577 – 6 580 483 | ±0 | ▼1.2% | · | · | 780 |
| Linux | 4 638 671 | -8% | 3 796 072 – 5 301 411 | +40% | 2 913 813 – 6 702 031 | ±0 | ▲0.9% | · | · | 1 096 |
🧩 By role
Median per role against the overall median.
| Role | Range midpoint | Difference | Range floors – Range ceilings | Range width | Full field (p10–p90) | daily | weekly | monthly | yearly | sample |
|---|---|---|---|---|---|---|---|---|---|---|
| Engineering Manager | 6 643 902 | +31% | 5 641 749 – 7 539 785 | +34% | 5 105 063 – 9 169 478 | ±0 | ±0 | · | · | 360 |
| AI / ML Engineer | 5 923 106 | +17% | 4 890 388 – 6 819 840 | +39% | 4 018 601 – 8 244 283 | ▲0.3% | ±0 | · | · | 440 |
| Data Scientist | 5 632 672 | +11% | 4 631 313 – 6 390 491 | +38% | 3 486 522 – 8 050 291 | ±0 | ▲3.7% | · | · | 251 |
| Product Manager | 5 582 309 | +10% | 4 594 556 – 6 283 154 | +37% | 4 014 805 – 7 310 711 | ±0 | ▲0.3% | · | · | 324 |
| Software Engineer | 5 481 584 | +8% | 4 450 567 – 6 335 514 | +42% | 3 493 434 – 7 853 943 | ±0 | ±0 | · | · | 3 098 |
| Solution / Enterprise Architect | 5 433 872 | +8% | 4 332 758 – 6 416 800 | +48% | 3 813 822 – 6 811 986 | ▲1.1% | ▲0.3% | · | · | 285 |
| Security Engineer | 5 116 454 | +1% | 4 160 626 – 6 152 203 | +48% | 3 533 096 – 7 398 414 | ±0 | ▼1.2% | · | · | 428 |
| Project Manager | 5 115 791 | +1% | 4 188 769 – 5 919 516 | +41% | 3 403 375 – 6 891 835 | ±0 | ±0 | · | · | 328 |
| Architect | 4 977 957 | -1% | 3 926 971 – 5 890 457 | +50% | 3 585 587 – 6 937 544 | ±0 | ▼0.3% | · | · | 239 |
| Data Engineer | 4 751 324 | -6% | 3 874 612 – 5 332 827 | +38% | 3 477 464 – 7 022 570 | ▲0.4% | ▲0.4% | · | · | 190 |
| IT Consultant | 4 681 214 | -7% | 3 769 892 – 5 324 973 | +41% | 2 967 785 – 6 435 767 | ▲0.9% | ▲2.7% | · | · | 625 |
| Other | 4 665 178 | -8% | 3 822 252 – 5 340 681 | +40% | 2 725 318 – 7 103 891 | ±0 | ▲0.6% | · | · | 3 435 |
| DevOps / SRE | 4 508 099 | -11% | 3 514 639 – 5 249 052 | +49% | 3 141 577 – 6 291 008 | ±0 | ±0 | · | · | 186 |
| QA / Test Engineer | 3 826 890 | -24% | 3 239 751 – 4 372 028 | +35% | 2 683 430 – 5 235 962 | ▲0.3% | ▼0.3% | · | · | 226 |
🏠 By work location
Remote or on-site — the difference in advertised ranges.
| By work location | Range midpoint | Difference | Range floors – Range ceilings | Range width | Full field (p10–p90) | daily | weekly | monthly | yearly | sample |
|---|---|---|---|---|---|---|---|---|---|---|
| Hybrid | 5 433 872 | +8% | 4 450 567 – 6 335 514 | +42% | 3 207 027 – 7 611 256 | ±0 | ±0 | · | · | 1 447 |
| Remote | 5 136 997 | +2% | 4 267 309 – 5 890 457 | +38% | 3 134 320 – 7 225 627 | ±0 | ▼0.3% | · | · | 2 705 |
| On-site | 5 115 791 | +1% | 4 162 590 – 5 785 842 | +39% | 3 125 956 – 7 513 605 | ±0 | ▲0.3% | · | · | 7 663 |
🔓 Pay transparency
What share of ads publish a salary range at all. Our most reliable trend indicator: a ratio, so neither exchange rates nor sample mix can move it.
| Country | Publishes pay | With pay | Total ads | Range midpoint | daily | weekly | monthly | yearly |
|---|---|---|---|---|---|---|---|---|
| US | 72.3% | 11 241 | 15 553 | 5 168 805 | ±0 | ▲0.12pp | · | · |
| LT | 70.4% | 88 | 125 | 1 917 964 | ▲0.87pp | ▲1.05pp | · | · |
| SK | 60.6% | 97 | 160 | 1 230 392 | ▲1.0pp | ▼0.27pp | · | · |
| CA | 53.3% | 574 | 1 077 | 3 727 391 | ▲0.65pp | ▲1.38pp | · | · |
| AT | 41.0% | 277 | 675 | 1 664 648 | ▼0.4pp | ▼2.6pp | · | · |
| IT | 24.7% | 137 | 554 | 1 628 460 | ▼0.18pp | ▼4.27pp | · | · |
| EU | 23.4% | 1 188 | 5 078 | 4 194 385 | ▲0.17pp | ▲0.52pp | · | · |
| PL | 17.9% | 414 | 2 310 | 2 035 253 | ▲0.1pp | ▼2.01pp | · | · |
| IE | 16.9% | 151 | 892 | 2 849 805 | ▲0.39pp | ▲1.96pp | · | · |
| GB | 15.5% | 726 | 4 676 | 3 505 234 | ▼0.31pp | ±0 | · | · |
| ES | 13.7% | 246 | 1 791 | 2 245 164 | ▲0.11pp | ▲0.11pp | · | · |
| PT | 13.3% | 133 | 1 002 | 1 884 792 | ▲0.08pp | ▼0.17pp | · | · |
| DE | 12.0% | 1 199 | 10 004 | 2 110 967 | ±0 | ▼0.19pp | · | · |
| CH | 11.5% | 46 | 400 | 2 601 863 | ▲0.78pp | ▲0.48pp | · | · |
| CZ | 11.4% | 36 | 315 | 1 981 619 | ▼0.15pp | ▼0.69pp | · | · |
| NL | 10.1% | 118 | 1 173 | 2 095 888 | ▲0.39pp | ▼1.28pp | · | · |
| BR | 8.9% | 37 | 416 | 2 385 602 | ▲0.08pp | · | · | · |
| FR | 8.9% | 223 | 2 516 | 1 809 400 | ±0 | ▼0.32pp | · | · |
| HU | 5.2% | 41 | 783 | 1 979 167 | ±0 | ▲0.72pp | · | · |
| SE | 1.4% | 56 | 4 116 | 2 635 722 | ±0 | ▼0.16pp | · | · |
⚖️ The EU pay transparency directive must be transposed by mid-2026; it requires the pay range to be disclosed up front in hiring. This table shows, day by day, where practice actually stands.
Barely more than 5% of Hungarian ads currently publish a range — among the lowest of the countries we measure.
🏢 Pay by company
Which company advertises what — employers publishing the most salary ranges.
| Pay by company | Range midpoint | sample | open roles | |
|---|---|---|---|---|
| Anthropic | 10 471 923 | 216 | 266 | Open → |
| Mercor | 8 246 640 | 38 | 165 | Open → |
| Perplexity | 8 181 190 | 40 | 56 | Open → |
| SpaceXAI | 8 115 741 | 56 | 113 | Open → |
| OpenAI | 8 089 561 | 370 | 441 | Open → |
| Decagon | 7 853 943 | 43 | 54 | Open → |
| Roblox | 7 791 504 | 154 | 163 | Open → |
| Lambda | 7 696 864 | 42 | 50 | Open → |
| Wayve | 7 589 526 | 25 | 96 | Open → |
| Sierra | 7 461 245 | 35 | 61 | Open → |
📒 Measurement log
Raw figures for every measurement day, dated — so anyone can check what we claim above.
| Date | p10 | p25 | Median | p75 | p90 | Range floors | Range ceilings | Publishes pay | sample |
|---|---|---|---|---|---|---|---|---|---|
| 2026-08-20 | 3 136 855 | 3 992 421 | 5 052 703 | 6 211 487 | 7 461 245 | 4 188 769 | 5 890 457 | 71.0% | 11 815 |
| 2026-08-19 | 3 132 867 | 3 986 235 | 5 061 470 | 6 222 264 | 7 474 192 | 4 196 037 | 5 874 452 | 71.0% | 11 777 |
| 2026-08-18 | 3 106 360 | 3 954 495 | 5 021 168 | 6 172 720 | 7 414 679 | 4 162 627 | 5 827 677 | 71.7% | 11 871 |
| 2026-08-17 | 3 118 934 | 3 965 278 | 5 041 493 | 6 190 849 | 7 444 692 | 4 179 476 | 5 812 084 | 72.1% | 12 073 |
| 2026-08-16 | 3 118 934 | 3 965 278 | 5 041 493 | 6 164 727 | 7 444 692 | 4 179 476 | 5 799 023 | 69.4% | 11 608 |
| 2026-08-15 | 3 118 934 | 3 965 278 | 5 041 493 | 6 177 788 | 7 444 692 | 4 179 476 | 5 799 023 | 69.2% | 11 541 |
| 2026-08-14 | 3 138 115 | 3 994 745 | 5 072 275 | 6 211 566 | 7 503 287 | 4 204 995 | 5 842 104 | 70.6% | 11 344 |
| 2026-08-13 | 3 137 663 | 4 003 125 | 5 066 250 | 6 214 031 | 7 494 375 | 4 200 000 | 5 864 801 | 70.8% | 11 360 |
| 2026-08-12 | 3 158 420 | 4 016 834 | 5 082 333 | 6 227 833 | 7 505 000 | 4 213 333 | 5 865 697 | 71.4% | 11 488 |
| 2026-08-11 | 3 134 388 | 4 003 125 | 5 066 250 | 6 202 875 | 7 481 250 | 4 200 000 | 5 827 500 | 72.2% | 11 604 |
| 2026-08-10 | 3 144 200 | 4 015 833 | 5 082 333 | 6 222 567 | 7 505 000 | 4 213 333 | 5 846 000 | 72.7% | 11 696 |
| 2026-08-09 | 3 160 000 | 4 040 850 | 5 082 333 | 6 235 075 | 7 518 167 | 4 218 600 | 5 846 000 | 70.4% | 11 326 |
| 2026-08-08 | 3 160 000 | 4 042 167 | 5 082 333 | 6 247 913 | 7 518 167 | 4 239 667 | 5 889 713 | 69.8% | 11 221 |
| 2026-08-07 | 3 150 000 | 4 035 390 | 5 066 250 | 6 228 141 | 7 497 788 | 4 226 250 | 5 870 603 | 70.0% | 11 208 |
| 2026-08-06 | 3 130 000 | 4 009 224 | 5 034 083 | 6 194 792 | 7 485 917 | 4 199 417 | 5 803 542 | 70.4% | 11 239 |
| 2026-08-05 | 3 140 533 | 4 018 875 | 5 066 250 | 6 234 375 | 7 536 375 | 4 226 250 | 5 827 500 | 70.5% | 11 142 |
| 2026-08-04 | 3 160 000 | 4 076 400 | 5 082 333 | 6 254 167 | 7 573 467 | 4 276 428 | 5 925 000 | 70.5% | 11 022 |
| 2026-08-03 | 3 154 566 | 4 054 958 | 5 098 417 | 6 273 958 | 7 597 433 | 4 279 500 | 5 890 917 | 73.2% | 11 140 |
| 2026-08-02 | 3 354 917 | 4 310 275 | 5 265 951 | 6 406 570 | 7 792 917 | 4 385 167 | 6 075 833 | 63.4% | 9 336 |
| 2026-08-01 | 3 282 535 | 4 205 798 | 5 098 417 | 6 141 875 | 7 366 288 | 4 385 061 | 5 811 667 | 54.8% | 7 901 |
| 2026-07-31 | 3 281 250 | 4 200 000 | 5 066 303 | 6 137 303 | 7 323 750 | 4 357 500 | 5 775 000 | 55.7% | 7 669 |
| 2026-07-30 | 3 312 500 | 4 240 000 | 5 114 553 | 6 187 803 | 7 393 500 | 4 399 000 | 5 830 000 | 56.7% | 7 781 |
| 2026-07-29 | 3 341 814 | 4 259 688 | 5 106 342 | 6 171 673 | 7 370 250 | 4 385 167 | 5 811 667 | 59.9% | 7 151 |
| 2026-07-28 | 3 357 500 | 4 247 514 | 5 083 650 | 6 135 746 | 7 311 482 | 4 371 333 | 5 793 333 | 56.4% | 6 738 |
| 2026-07-27 | 3 378 750 | 4 274 397 | 5 114 553 | 6 174 500 | 7 353 750 | 4 399 000 | 5 830 000 | 57.2% | 6 809 |
| 2026-07-26 | 3 378 750 | 4 274 397 | 5 115 189 | 6 174 500 | 7 354 609 | 4 399 000 | 5 830 000 | 57.3% | 6 812 |
🔧 Exactly how we calculate
Every step from the raw ad to the figures above. If you would compute it differently, the raw snapshot is downloadable — redo the maths.
The formula
érték = (salary_min + salary_max) / 2 ← sáv-közép × periódus_szorzó ← yearly ÷12 · monthly ×1 · daily ×21 · hourly ×160 × árfolyam[currency] ← EKB középárfolyam, HUF-ra medián = percentile_cont(0.5) WITHIN GROUP (ORDER BY érték) transzp = n / total_n ← bért kiíró / összes aktív hirdetés
One ad yields one value. We take the range midpoint, convert the period to monthly, then to forint — in that order.
What the sample consists of
Exchange rates
Update schedule
Daily snapshot at 06:55 (after ad imports and location normalisation).
Raw data
The full daily snapshot — every breakdown and segment, including the rates used:
⬇ /salaries/data.jsonFree to use with attribution (CC BY 4.0).
What we exclude, and why
- ✕ Ads without pay — we do not estimate. They only appear in the transparency denominator.
- ✕ Pay without a period — we never guess yearly vs monthly. The ad then stays without pay.
- ✕ Plausibility filter: ranges that cannot be interpreted are skipped at import rather than transformed.
- ✕ Segments below 15 ads are not shown — both for noise and identifiability.
- ✕ Outliers are NOT trimmed or smoothed. Whatever passes the filter stays — p10–p90 shows the spread.
Definitions
- ›Median: PostgreSQL
percentile_cont(0.5)with linear interpolation — the true interpolated value, not the nearest item. - ›Range midpoint:
(min + max) / 2. Where only a floor exists, it is used for both ends. - ›median_fix: the same, but at the rate fixed on the base day — only this is valid for time-series comparison.
- ›Transparency rate:
n / total_n, where the denominator is all active ads in the segment, with and without pay.
⚠️ What this figure does NOT tell you
- •It measures advertised, not paid, salary. The two can differ in both directions.
- •It excludes bonus, equity, benefits and 13th month — ads rarely quantify these.
- •Not representative of the whole labour market: it measures what is advertised through our sources.
- •Figures are gross, and tax systems differ by country — net comparison needs a separate calculator.
🔬 How we measure
- • The headline figure is the MIDPOINT of the range — neither floor nor ceiling. Both ends are reported separately.
- • Since 99.8% of the data is quoted in foreign currency, every movement is reported twice: at a fixed rate (real market movement) and at the daily rate (forint value). The difference is the currency effect.
- • We only count what the employer published in the ad. We do not ask visitors for their salary, and we do not estimate.
- • Ranges in different currencies and periods (year/month/day/hour) are converted to gross HUF/month at the daily reference rate. We never guess the period: if the source does not state it, the ad stays without salary.
- • A segment appears only with at least 15 ads behind it. Regions are reported separately, because a single blended average would hide the differences.
- • Movement is computed from our own daily snapshots, not from ad posting dates — so the timing of our imports cannot distort the trend.
- • p10–p90 marks the bottom and top tenth of the field, p25–p75 the middle half. Outliers are neither trimmed nor smoothed — the distribution is shown as it is.
An indicative market picture of advertised salary ranges; not advice, and not a survey of actually paid salaries.
Detailed salary statistics →