Denmark's 2026 four bracket state tax reform
For years Danish state tax had two steps: bundskat on most income and topskat above a threshold. From 2026 it has four. Two new brackets were inserted, and they are cumulative, so the top of the scale now carries a 20% state surcharge.
The four brackets
| Bracket | Rate | From (personal income) | Roughly, gross salary |
|---|---|---|---|
| Bundskat | 12.01% | above the allowance | n/a |
| Mellemskat (new) | 7.5% | DKK 641,200 | DKK 696,957 |
| Topskat | 7.5% | DKK 777,900 | DKK 845,543 |
| Toptopskat (new) | 5% | DKK 2,592,700 | DKK 2,818,152 |
Read the thresholds carefully
Every Danish threshold is quoted on personal income, which is your pay after the 8% labour market contribution has been taken off. So the mellemskat threshold of DKK 641,200 corresponds to a gross salary of about DKK 696,957. Comparing your gross pay directly against the published figure will tell you that you are below a bracket when you are above it.
They stack
The brackets are cumulative rather than alternatives. Someone above the toptopskat threshold pays mellemskat, topskat and toptopskat all at once on that slice, a combined state surcharge of 20%, plus bundskat at 12.01% and municipal tax of roughly 25%. That is what produces a Danish marginal rate in the high fifties once the labour market contribution is counted.
Who is actually affected
The reform's real bite is mellemskat. Topskat already existed, and toptopskat starts so high that very few people reach it. Mellemskat, by contrast, inserts a new 7.5% step at a gross salary of roughly DKK 696,957, catching a band of earners who previously paid only bundskat and municipal tax on that income.
What it does not change
The 8% labour market contribution, the personfradrag and the employment deductions are all unchanged in structure. In particular the employment and job deductions still reduce municipal tax only, never the bracket taxes. The employment deductions guide explains why that distinction matters.
The Denmark salary calculator shows each bracket as its own line once you pass its threshold. Sources are on the methodology page.