Prixeo: a Norwegian Tax Calculator
I've built a Norwegian tax calculator for my personal needs. I figured it's worth writing about this project publicly in case it's helpful for other people. The calculator has some neat features that I haven't seen elsewhere.
Visit prixeo.no to try it out.
Estimated monthly payslips
When I moved to Norway in 2020, I naively thought I could take my annual salary and divide it by twelve to estimate my monthly payslip. It was not a pleasant surprise when I received my first payslip and discovered that my net pay was lower than what I had estimated.
In Norway, you normally pay extra taxes for ten months of the year so that you receive greater net pay during the holidays. In June, you receive holiday pay ("feriepenger"). In December, you pay half the normal amount of taxes ("halv skatt"). Prixeo shows the actual distribution by months.
This view runs the same tax withholding logic that most Norwegian payroll systems use. The Norwegian Tax Authorities have open-sourced this Java logic (repo skatteetaten/trekktabell) and I used Claude Sonnet to translate it to TypeScript so it runs in the browser on every input. I verified the translation by asserting it produces identical withholding calculations to the original Java code.
One thing that surprised me was that the official withholding tables intentionally overestimate your taxes to, presumably, lower the risk that people get a surprise tax bill at year-end. The bottom of the view shows how much you get refunded ("Skatt igjen") or how much you owe ("Restskatt") by comparing the withholding calculations and the actual tax calculations.
Search salary by net pay or cost of employment
Nobody ever sees the actual salary ("lønn"), neither you who receives net pay after income taxes are withheld or your employer who pays national insurance expenses on top of the salary. Yet, most mainstream calculators only accept salary as the input.
Prixeo lets you type a target net pay ("Etter Skatt") and shows the gross salary required to match it.
Likewise, Prixeo supports searching by total cost of employment ("Arbeidsgiver"), which is handy if you're an employer figuring out what salary to offer a prospective employee.
This feature is implemented by binary searching for the salary that gives you the target number (after-tax net pay, or total employer cost). You can technically write the inverse formula, but it's tricky to manage the code that way. It's simpler to only implement the tax calculations from the salary input and use binary search to go the inverse direction.
Approximated percentile income
Prixeo displays an approximation of what percentage of the working population has lower income than the salary you've typed in. For example, the screenshot below shows that 74.4% of the population has less than 800k NOK salary.
Statistics Norway (SSB) publishes table 12521 with income distributions for every decile below p90, and every percentile between p91 and p100. The table looks like this.
Percentile | Income (NOK) | Percentile | Income (NOK) |
---|---|---|---|
0 | 0 | 1 | 29 760 |
11 | 37 890 | 21 | 41 630 |
31 | 45 330 | 41 | 48 960 |
51 | 52 710 | 61 | 57 260 |
71 | 63 430 | 81 | 74 200 |
90 | 83 890 | 91 | 86 530 |
92 | 89 620 | 93 | 93 200 |
94 | 97 740 | 95 | 102 730 |
96 | 109 890 | 97 | 119 880 |
98 | 136 110 | 99 | 205 000 |
I used PCHIP (Piecewise Cubic Hermite Interpolating Polynomial) to fill the table with more fine-grained data points. This allows Prixeo to approximate where any given salary falls on the income distribution curve down to 0.1% percentage points instead of the coarse deciles that SSB shares publicly. The graphic below shows how accurately the PCHIP curve follows the ground truth points from Statistics Norway.
Mixed income from employment and sole proprietorship
For various reasons, my tax report for 2024 and 2025 have mixed income from being an employee and from my sole proprietorship (ENK). I struggled to get a clear picture of how this works in Norway so I updated Prixeo to include a breakdown.
For example, the table below shows taxes with 800k NOK employment income and 200k NOK business profit from a sole proprietorship (ENK).
This view was fully vibe coded in a few minutes. The codebase had the infrastructure in place and Claude Sonnet effortlessly figured out how to display this fairly complex structure of numbers with an intuitive layout. AI coding is super helpful for this kind of stuff.
Thousand-separated formatting on every input
A small quality-of-life feature in Prixeo is that it formats numbers with a thousand separator as you type.
It's difficult to convey this functionality with a video. You have to try it yourself to judge how well it works. I personally think it's a nice improvement over the plain numeric input that most websites use.
For comparison, the official tax calculator from the tax authorities (Skattetaten) formats the number on blur, which is better than nothing but it doesn't help as you're typing the number and it's still awkward to make edits inside existing large numbers.
Other sites reformat on every keystroke causing the cursor to jump to the end. This works OK when you're typing a new number because you're already at the end of the input, but this behavior makes it awkward to edit existing numbers in the input like in the video above.
Prixeo formats the number on every input but preserves the cursor position after formatting. You can still do weird stuff like delete a space character so it's not perfect. There must exist a better way to accomplish this behavior, but whatever Prixeo has for now is good enough for my personal needs.
Variety of marginal tax rates
Lastly, Prixeo shows you the marginal effective tax rate, income tax rate, and benefit ("ytelser") effective tax rate.
Each of these numbers is meaningful in their own right depending on whether you are an employer or a regular employee.
- Marginal effective tax rate: if you increase employment cost by 1000 kr NOK, how much of that goes to taxes?
- Marginal income tax rate: if you increase the salary by 1000 kr NOK, how much of that goes to income tax ignoring employer-side expenses?
- Benefit effective tax rate: if you receive a benefit with fair value 1000 kr NOK (for example, RSUs), what is the total tax bill including employer-side expenses?
I often see people falsely use the benefit rate (61.5%) as the top marginal rate, but that only applies to non-monetary benefits such as stock grants (RSUs, uncommon in Norway) or physical gifts. For cash compensation, the top effective marginal rate is lower at 53.9% in 2025.
Conclusions
Prixeo is a Norwegian tax calculator I built for my own needs. It has several features that might be useful to others.
By working on this project, I learned that the Norwegian tax system is designed to maximize net pay during holidays (June, December) and give you a modest refund at the end of the tax year. For most people, I think this is pretty smart and the system works reasonably well.
The holiday pay is personally my biggest gripe with the system because it's inconvenient for new immigrants or people who jump in/out of employment for various reasons (childcare, sole proprietors, sabbaticals, etc). I've seen news reports indicating the Norwegian holiday pay system might even violate European regulations and I wouldn't be surprised if they will have to change it eventually. Most people like recieving an extra fat paycheck in June so I don't think politicians are rushing to shake up the system even if it's arguably discriminatory for some parts of the population.
For amateurs like myself who like to fully understand their finances, income tax calculations in Norwegian are actually pretty involved. It's easy to get the holiday pay calculations wrong or to inaccurately estimate monthly payslips unless you take into account factors like the December half tax ("halv skatt"). Things get a lot more complicated once you add off-shore work, Svalbard, Tromsø, and other exceptions that I intentionally left out of Prixeo. Prixeo has helped me build a stronger intuition for how it works and it's been a successful project with that goal in mind.
Visit prixeo.no to try out the calculator.