Danish Salary Calculator
A privacy-first salary comparison tool for the Danish job market with complete tax system implementation, running 100% client-side.
Services
Tech Stack
The Challenge
Danish workers evaluating job offers face a complex problem: understanding the real difference in take-home pay between opportunities. The Danish tax system includes multiple components that interact in non-obvious ways:
- AM-bidrag (8% labor market contribution) reduces income before other taxes
- Topskat (15% top tax) kicks in above 640,100 DKK after AM-bidrag
- Municipal tax rates vary from 23% to 27.4% across 98 municipalities
- Pension contributions provide tax shields that reduce the Topskat threshold
- §7P share salary offers significant tax advantages for high earners
Existing calculators were either too simplistic (ignoring pension optimization, share income) or required sending sensitive salary data to external servers.
Our Approach
We built a 100% client-side calculation engine that implements the complete Danish tax system without ever transmitting salary data over the network:
- Privacy-first architecture — All calculations run in the browser using a validated, isolated tax engine
- Mobile-native UX — Bottom sheet drawers (Vaul) create an app-like experience on mobile
- Desktop power-user mode — Resizable panes (Allotment) for side-by-side scenario comparison
- Programmatic SEO — 200+ generated pages targeting salary brackets, occupations, and municipality comparisons
- Full bi-lingual support — Danish and English with proper locale routing and hreflang alternates
Key Features
- Complete Tax System: AM-bidrag, Bundskat, Topskat, Kommuneskat, Kirkeskat, and tax ceiling (52.07% max marginal rate)
- 98 Municipality Support: Accurate municipal tax rates with regional organization
- Scenario Comparison: Side-by-side "Current Job vs New Offer" analysis with delta calculations
- Advanced Optimization: §7P share salary tax savings, pension contribution optimization, top tax threshold analysis
- Instant Results: Zero network latency, works offline, no signup required
- SEO Hub Pages: 30 occupation pages, 20 salary bracket pages, 50+ municipality comparisons
Results
- 200+ programmatic SEO pages generated from structured data
- 0 seconds server response time for calculations (100% client-side)
- 85/100 technical SEO score with comprehensive schema.org implementation
- 98 Danish municipalities covered with accurate tax rates
- 2 languages fully supported (Danish + English)
- 10+ schema.org types implemented (FAQPage, SoftwareApplication, Dataset, etc.)
Technical Implementation
This project showcases modern full-stack development with the latest React ecosystem:
| Category | Technologies | |----------|-------------| | Framework | Next.js 16, React 19, TypeScript 5 | | Styling | Tailwind CSS v4, Shadcn UI, Radix UI | | State | Zustand v5 with localStorage persistence | | Charts | Tremor v3, Recharts v3 | | Mobile UX | Vaul (bottom sheets), Motion (animations) | | Desktop UX | Allotment (resizable panes) | | i18n | next-intl v4 with locale routing | | Analytics | GA4 with non-blocking event tracking | | Deployment | Vercel |
The calculation engine was built with testability in mind, allowing us to validate results against official Danish tax authority (SKAT) examples and edge cases.
Screenshots

