How Income Tax Works in Korea — Building a Take-Home Pay Calculator
Most salary calculators in Korea just give you a number. Here's how to build one that shows the full breakdown — and why the math is more complex than it looks.
The Four Social Insurance Deductions
Korean employers deduct four mandatory contributions from gross salary:
| Insurance | Employee Rate (2024) |
|---|---|
| National Pension | 4.5% |
| Health Insurance | 3.545% |
| Long-term Care | 12.95% of health premium |
| Employment Insurance | 0.9% |
function calculateInsurance(monthlyGross) { const pension = monthlyGross * 0.045; const health = monthlyGross * 0.03545; const ltc = health * 0.1295; const employment = monthlyGross * 0.009; return { pension, health, ltc, employment }; } Income Tax — The Simplified Table Method
Korea uses simplified withholding tax tables (간이세액표) for monthly payroll. The exact amount depends on:
- Monthly taxable income (gross minus non-taxable items)
- Number of dependents
Rather than implementing the full progressive tax brackets, payroll systems use pre-computed tables. For a calculator, the bracket approach is more transparent:
const TAX_BRACKETS = [ { limit: 14_000_000, rate: 0.06, deduction: 0 }, { limit: 50_000_000, rate: 0.15, deduction: 1_260_000 }, { limit: 88_000_000, rate: 0.24, deduction: 5_760_000 }, { limit: 150_000_000, rate: 0.35, deduction: 15_440_000 }, { limit: 300_000_000, rate: 0.38, deduction: 19_940_000 }, { limit: 500_000_000, rate: 0.40, deduction: 25_940_000 }, { limit: 1_000_000_000, rate: 0.42, deduction: 35_940_000 }, { limit: Infinity, rate: 0.45, deduction: 65_940_000 }, ]; function calculateIncomeTax(annualTaxable, dependents) { const bracket = TAX_BRACKETS.find(b => annualTaxable <= b.limit); const annualTax = annualTaxable * bracket.rate - bracket.deduction; const dependentDeduction = 1_500_000 * dependents; const finalTax = Math.max(0, annualTax - dependentDeduction); return finalTax / 12; // Monthly } Local Income Tax
Local income tax (지방소득세) is simply 10% of the national income tax:
const localTax = incomeTax * 0.1; Putting It Together
function calculateTakeHome(annualSalary, dependents = 1) { const monthly = annualSalary / 12; const insurance = calculateInsurance(monthly); const totalInsurance = Object.values(insurance).reduce((a, b) => a + b, 0); const annualTaxable = annualSalary - totalInsurance * 12; const incomeTax = calculateIncomeTax(annualTaxable, dependents); const localTax = incomeTax * 0.1; const totalDeductions = totalInsurance + incomeTax + localTax; const takeHome = monthly - totalDeductions; return { monthly, takeHome, totalDeductions, insurance, incomeTax, localTax }; } Calculate your take-home pay at toolzip.app/tools/salary-calculator.