
From gross to net
The chart starts from the gross salary, takes away contributions, income tax and the regional and municipal surcharges one at a time, and ends at the yearly net.
Case study · 2026
A take-home pay calculator for employees in Italy. You enter the gross salary and it shows the yearly and monthly net, with every deduction explained and linked to the law it comes from.

It started as an exercise for a job interview. The calculation itself is ten steps. The long part was working out which steps, in what order and with which values, by reading the laws, the INPS circulars and the municipal rates published by the Ministry of Finance.
Many sources online still carry old values. For example, the second income tax bracket has been 33% since 2026, but plenty of pages still say 35%.

The chart starts from the gross salary, takes away contributions, income tax and the regional and municipal surcharges one at a time, and ends at the yearly net.

In the table under the chart, every row expands and explains in words what that item is. Here, for example, what the gross salary includes and what it doesn't.

Next to each deduction there's the reference: the article of law or the municipal resolution, linked to the official page.

A separate page shows how much of each extra euro you keep. Between 35,000 and 44,000 € of gross salary it's about 39 cents, less than at 70,000 €, because in that range the employee tax deduction and the tax wedge deduction both shrink with every euro earned.
Laws from Normattiva, contribution thresholds from the INPS circular, local rates from the Ministry of Finance portal. Every value used is listed on a page with its source.
Starting from blogs and other calculators: they copy each other, mistakes included.
By law the previous year's rates stay valid. In 2026 that applies to 3,827 municipalities, and the calculator always says which year the rate it uses comes from.
Treating a missing resolution as a zero surcharge: the net would be wrong in all of those municipalities.
In the 657 checks the correct result is worked out from the legal formulas, especially near the thresholds where mistakes are easy. I also downloaded 120 random municipalities again and compared them with the data: all identical.
Running the code and copying its output into the tests: a bug would become the expected result.
Next step · tax year 2027
A new tax year means copying the two files of the previous year, one for national parameters and one for regional and municipal rates, updating values and sources, registering the year, and regenerating the municipal data with two commands.