📈 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 · Europe · 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 |
|---|---|---|---|---|---|---|---|---|---|---|
| director | 5 386 160 | +136% | 4 358 938 – 6 544 952 | +50% | 2 889 089 – 7 466 481 | ±0 | ▲1.6% | · | · | 27 |
| Principal | 4 133 348 | +81% | 3 665 173 – 4 861 067 | +33% | 2 346 639 – 7 139 692 | ▼4.0% | ▲3.3% | · | · | 241 |
| manager | 3 055 055 | +34% | 2 545 325 – 3 461 257 | +36% | 1 052 782 – 4 837 551 | ±0 | ±0 | · | · | 50 |
| Architect | 2 962 169 | +30% | 2 664 472 – 3 615 418 | +36% | 1 822 754 – 5 301 411 | ▲1.7% | ▼1.3% | · | · | 113 |
| Lead | 2 714 100 | +19% | 2 430 533 – 3 038 045 | +25% | 1 456 497 – 4 947 984 | ±0 | ±0 | · | · | 149 |
| Senior | 2 570 464 | +13% | 2 163 846 – 2 945 806 | +36% | 1 532 451 – 4 974 164 | ±0 | ±0 | · | · | 1 565 |
| mid-level | 2 019 637 | -11% | 1 698 565 – 2 261 935 | +33% | 1 006 289 – 4 272 545 | ▲1.1% | ▲4.1% | · | · | 257 |
| entry-level | 1 628 460 | -29% | 1 426 171 – 1 640 610 | +15% | 546 870 – 3 272 476 | ±0 | ▲1.2% | · | · | 51 |
| Medior | 1 610 366 | -29% | 1 403 633 – 1 822 900 | +30% | 1 361 706 – 2 423 789 | ±0 | ±0 | · | · | 22 |
| Junior | 1 454 124 | -36% | 1 321 603 – 1 670 992 | +26% | 746 468 – 2 021 633 | ▼0.6% | ▲2.2% | · | · | 44 |
| Intern | 873 578 | -62% | 880 096 – 929 679 | +6% | 437 496 – 2 474 040 | ±0 | ▼7.2% | · | · | 41 |
⚙️ 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 |
|---|---|---|---|---|---|---|---|---|---|---|
| AI/ML | 3 079 293 | +35% | 2 502 279 – 3 535 897 | +41% | 1 409 269 – 5 890 457 | ±0 | ▲3.1% | · | · | 596 |
| LLM | 2 804 570 | +23% | 2 430 533 – 3 403 375 | +40% | 1 475 638 – 5 543 301 | ▲0.4% | ▲3.3% | · | · | 552 |
| React | 2 622 428 | +15% | 2 227 104 – 3 015 914 | +35% | 1 595 038 – 5 358 167 | ▲0.3% | ▲2.3% | · | · | 523 |
| AWS | 2 571 609 | +13% | 2 163 846 – 3 006 903 | +39% | 1 563 861 – 5 300 953 | ±0 | ▲0.3% | · | · | 1 060 |
| Terraform | 2 541 190 | +12% | 2 114 564 – 2 876 871 | +36% | 1 549 465 – 5 114 226 | ▲0.3% | ▲2.4% | · | · | 450 |
| TypeScript | 2 506 019 | +10% | 2 134 280 – 2 815 810 | +32% | 1 508 948 – 5 432 310 | ▲0.5% | ▲3.3% | · | · | 602 |
| data science | 2 487 925 | +9% | 2 138 539 – 2 809 345 | +31% | 1 146 878 – 5 612 296 | ±0 | ±0 | · | · | 336 |
| C/C++ | 2 457 957 | +8% | 2 094 385 – 2 764 732 | +32% | 1 603 241 – 5 504 305 | ±0 | ▲2.5% | · | · | 320 |
| PostgreSQL | 2 468 698 | +8% | 2 096 335 – 2 815 810 | +34% | 1 382 114 – 4 921 804 | ±0 | ▲2.3% | · | · | 409 |
| Node.js | 2 431 821 | +7% | 2 096 335 – 2 764 732 | +32% | 1 476 549 – 5 301 411 | ▲0.4% | ▲0.8% | · | · | 253 |
| Python | 2 412 533 | +6% | 2 094 385 – 2 734 350 | +31% | 1 367 503 – 5 235 962 | ±0 | ▲1.0% | · | · | 1 514 |
| GitHub | 2 412 533 | +6% | 1 974 808 – 2 734 350 | +38% | 1 455 282 – 4 735 734 | ±0 | ▲1.2% | · | · | 429 |
| Grafana | 2 412 533 | +6% | 2 126 595 – 2 773 846 | +30% | 1 437 711 – 3 930 172 | ▼3.0% | ▼0.3% | · | · | 303 |
| Kubernetes | 2 412 533 | +6% | 2 096 335 – 2 764 732 | +32% | 1 476 549 – 5 105 063 | ±0 | ±0 | · | · | 836 |
| GCP | 2 393 674 | +5% | 2 065 953 – 2 734 350 | +32% | 1 595 038 – 5 235 962 | ±0 | ▲0.4% | · | · | 618 |
| C# | 2 189 374 | -4% | 1 897 296 – 2 513 262 | +32% | 1 384 379 – 3 841 671 | ±0 | ▼3.2% | · | · | 356 |
| Java | 2 186 358 | -4% | 1 868 473 – 2 513 262 | +35% | 1 344 395 – 4 450 567 | ▲0.4% | ▲0.6% | · | · | 591 |
| Docker | 2 181 835 | -4% | 1 898 986 – 2 479 144 | +31% | 1 366 294 – 4 712 366 | ▲0.5% | ▼1.6% | · | · | 559 |
| SQL | 2 110 967 | -7% | 1 822 900 – 2 430 533 | +33% | 1 196 546 – 4 712 366 | ±0 | ±0 | · | · | 784 |
| Azure | 2 088 604 | -8% | 1 822 900 – 2 384 535 | +31% | 1 367 175 – 4 422 483 | ▼0.4% | ▼1.1% | · | · | 752 |
| Linux | 2 035 575 | -11% | 1 762 137 – 2 309 007 | +31% | 1 290 146 – 4 162 590 | ▼0.7% | ▼0.8% | · | · | 443 |
| JavaScript | 2 029 295 | -11% | 1 816 754 – 2 278 625 | +25% | 1 276 030 – 4 811 849 | ▲2.0% | ▲1.9% | · | · | 456 |
| Git | 1 824 478 | -20% | 1 630 402 – 2 114 564 | +30% | 1 245 648 – 3 420 653 | ±0 | ±0 | · | · | 453 |
| CSS | 1 827 494 | -20% | 1 519 083 – 2 126 717 | +40% | 1 178 091 – 3 797 708 | ±0 | ▲1.0% | · | · | 261 |
🧩 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 |
|---|---|---|---|---|---|---|---|---|---|---|
| Solution / Enterprise Architect | 3 301 652 | +45% | 2 734 350 – 3 680 224 | +35% | 1 599 899 – 5 129 898 | ±0 | ▲6.2% | · | · | 83 |
| AI / ML Engineer | 2 789 492 | +22% | 2 430 533 – 3 141 577 | +29% | 1 715 835 – 5 497 760 | ±0 | ▼0.3% | · | · | 139 |
| Product Manager | 2 752 912 | +21% | 2 521 314 – 3 233 301 | +28% | 1 824 732 – 6 700 722 | ±0 | ▼2.0% | · | · | 90 |
| Architect | 2 725 317 | +20% | 2 529 171 – 3 038 167 | +20% | 1 830 235 – 5 301 411 | ±0 | ±0 | · | · | 105 |
| Security Engineer | 2 563 196 | +12% | 1 974 808 – 2 886 319 | +46% | 1 736 312 – 4 782 923 | ±0 | ±0 | · | · | 214 |
| IT Consultant | 2 507 816 | +10% | 2 095 120 – 2 879 779 | +37% | 1 218 912 – 5 366 861 | ▼2.2% | ▼5.0% | · | · | 225 |
| Backend Developer | 2 487 166 | +9% | 2 094 385 – 2 847 795 | +36% | 1 670 992 – 4 712 366 | ▲0.3% | ±0 | · | · | 168 |
| Data Scientist | 2 412 533 | +6% | 1 982 708 – 2 754 004 | +39% | 504 816 – 5 829 590 | ±0 | ±0 | · | · | 84 |
| Fullstack Developer | 2 388 408 | +5% | 2 095 360 – 2 649 281 | +26% | 1 519 083 – 4 699 276 | ±0 | ▲1.4% | · | · | 152 |
| Software Engineer | 2 322 003 | +2% | 2 017 014 – 2 642 708 | +31% | 1 367 175 – 5 107 760 | ▲0.7% | ▲1.9% | · | · | 956 |
| Other | 2 224 054 | -2% | 1 974 808 – 2 506 488 | +27% | 998 658 – 5 235 853 | ±0 | ▲3.6% | · | · | 1 152 |
| Data Engineer | 1 928 897 | -15% | 1 655 740 – 2 255 679 | +36% | 1 113 446 – 4 012 579 | ▲2.1% | ▲0.7% | · | · | 144 |
| DevOps / SRE | 1 899 840 | -17% | 1 670 992 – 2 187 480 | +31% | 1 468 954 – 3 670 831 | ▼0.8% | ▼0.8% | · | · | 160 |
| QA / Test Engineer | 1 757 953 | -23% | 1 519 083 – 2 067 169 | +36% | 1 141 308 – 2 973 110 | ▲0.8% | ▲1.3% | · | · | 88 |
🏠 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 |
|---|---|---|---|---|---|---|---|---|---|---|
| Remote | 2 976 884 | +31% | 2 499 000 – 3 427 963 | +37% | 1 442 023 – 5 759 558 | ±0 | ±0 | · | · | 2 014 |
| On-site | 1 990 340 | -13% | 1 765 175 – 2 278 625 | +29% | 1 136 129 – 3 794 547 | ±0 | ±0 | · | · | 2 159 |
| Hybrid | 1 899 870 | -17% | 1 669 253 – 2 217 862 | +33% | 1 519 083 – 2 734 350 | ±0 | ±0 | · | · | 415 |
🔓 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 | |
|---|---|---|---|---|
| Hightouch | 7 592 144 | 27 | 34 | Open → |
| Abridge | 6 453 323 | 16 | 22 | Open → |
| Epic Games | 5 872 164 | 22 | 98 | Open → |
| Cloudflare | 5 746 468 | 39 | 163 | Open → |
| Assured | 5 628 659 | 15 | 15 | Open → |
| Monzo | 4 886 874 | 16 | 42 | Open → |
| Delinea | 4 247 674 | 18 | 39 | Open → |
| Samsara | 4 209 553 | 18 | 68 | Open → |
| Mercor | 4 188 769 | 43 | 165 | Open → |
| Novartis | 3 700 487 | 19 | 26 | 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 | 1 274 845 | 1 700 338 | 2 278 625 | 3 403 427 | 4 974 164 | 1 974 808 | 2 582 442 | 13.6% | 4 588 |
| 2026-08-19 | 1 267 764 | 1 695 399 | 2 276 875 | 3 409 280 | 4 982 794 | 1 973 292 | 2 580 337 | 13.6% | 4 581 |
| 2026-08-18 | 1 263 001 | 1 688 490 | 2 262 063 | 3 382 134 | 4 943 770 | 1 960 454 | 2 563 550 | 13.7% | 4 610 |
| 2026-08-17 | 1 268 885 | 1 692 040 | 2 266 125 | 3 385 376 | 4 985 475 | 1 963 975 | 2 568 275 | 13.8% | 4 673 |
| 2026-08-16 | 1 264 713 | 1 692 040 | 2 257 061 | 3 330 691 | 4 906 807 | 1 963 975 | 2 560 293 | 13.7% | 4 628 |
| 2026-08-15 | 1 269 030 | 1 692 040 | 2 251 018 | 3 323 771 | 4 915 083 | 1 963 975 | 2 556 236 | 13.7% | 4 636 |
| 2026-08-14 | 1 274 350 | 1 699 133 | 2 251 800 | 3 284 942 | 4 875 103 | 1 972 208 | 2 548 700 | 13.9% | 4 577 |
| 2026-08-13 | 1 274 000 | 1 698 667 | 2 261 000 | 3 281 093 | 4 869 344 | 1 971 667 | 2 550 000 | 14.0% | 4 624 |
| 2026-08-12 | 1 274 000 | 1 698 667 | 2 261 000 | 3 267 854 | 4 871 667 | 1 971 667 | 2 550 000 | 14.1% | 4 687 |
| 2026-08-11 | 1 274 000 | 1 698 667 | 2 254 650 | 3 262 350 | 4 856 250 | 1 971 667 | 2 548 000 | 14.2% | 4 762 |
| 2026-08-10 | 1 274 000 | 1 695 091 | 2 244 667 | 3 247 686 | 4 871 667 | 1 971 667 | 2 541 721 | 14.5% | 4 856 |
| 2026-08-09 | 1 274 000 | 1 690 278 | 2 238 333 | 3 245 667 | 4 853 906 | 1 965 600 | 2 541 721 | 14.5% | 4 878 |
| 2026-08-08 | 1 274 000 | 1 698 667 | 2 237 083 | 3 244 802 | 4 856 249 | 1 965 600 | 2 528 000 | 14.2% | 4 827 |
| 2026-08-07 | 1 274 000 | 1 677 388 | 2 199 167 | 3 215 625 | 4 804 542 | 1 925 863 | 2 499 000 | 14.5% | 4 859 |
| 2026-08-06 | 1 267 000 | 1 665 200 | 2 187 083 | 3 183 888 | 4 790 704 | 1 886 583 | 2 475 175 | 14.6% | 4 868 |
| 2026-08-05 | 1 267 000 | 1 665 200 | 2 187 083 | 3 220 009 | 4 987 500 | 1 900 500 | 2 485 708 | 14.9% | 4 860 |
| 2026-08-04 | 1 289 161 | 1 774 500 | 2 567 988 | 4 042 740 | 5 728 037 | 2 121 450 | 2 927 100 | 13.2% | 2 570 |
| 2026-08-03 | 1 198 167 | 1 668 333 | 2 345 718 | 3 640 000 | 5 561 369 | 2 027 594 | 2 584 400 | 11.7% | 2 960 |
| 2026-08-02 | 1 268 000 | 1 713 833 | 2 502 409 | 4 332 333 | 5 943 750 | 2 199 167 | 2 730 000 | 9.7% | 2 504 |
| 2026-08-01 | 1 122 333 | 1 638 000 | 2 548 000 | 4 226 667 | 5 893 000 | 2 256 800 | 2 694 500 | 8.0% | 1 891 |
| 2026-07-31 | 1 131 141 | 1 629 000 | 2 493 750 | 4 183 154 | 5 775 000 | 2 244 400 | 2 663 596 | 8.4% | 1 855 |
| 2026-07-30 | 1 131 250 | 1 620 312 | 2 494 783 | 4 240 000 | 5 851 500 | 2 252 394 | 2 663 596 | 8.3% | 1 861 |
| 2026-07-29 | 1 263 500 | 1 732 800 | 2 905 833 | 5 019 167 | 6 419 250 | 2 638 570 | 3 278 500 | 10.4% | 2 473 |
| 2026-07-28 | 1 215 432 | 1 656 000 | 2 790 000 | 4 853 563 | 6 251 317 | 2 549 880 | 2 999 880 | 11.6% | 2 345 |
| 2026-07-27 | 1 237 461 | 1 665 200 | 2 715 000 | 4 839 089 | 6 254 000 | 2 554 314 | 3 004 600 | 11.9% | 2 412 |
| 2026-07-26 | 1 224 175 | 1 665 200 | 2 715 000 | 4 836 250 | 6 254 000 | 2 523 345 | 3 004 208 | 11.9% | 2 422 |
🔧 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 →