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.
Top comments (1)
Some comments may only be visible to logged-in visitors. Sign in to view all comments.