计算工具 · 工资与个税

工资计算器

税前→税后/五险一金扣除明细

本地处理 · 不上传 免费 · 无需登录 无次数限制 累计 58 次使用
税前月薪gross
缴费基数base
各地社保基数有上下限(约为当地上年月平均工资的 60%–300%),常见下限 4000–6000、上限 30000–36000。超出区间应按封顶/保底基数缴纳,可切「自定义基数」手动填。
五险一金比例rates个人 / 单位 双向可调
项目个人 %单位 %
养老保险
医疗保险
失业保险
工伤保险 个人不缴
生育保险 个人不缴
住房公积金
个人合计 0% 单位合计 0%
专项附加扣除special勾选可改额(元/月)
专项附加合计0 元/月 · 0 元/年
就绪 · 五险一金双向明细 + 累计预扣个税,纯本地实时测算
第一节

关于本工具

About

每月工资条到手,扣除项往往比工资本身更让人困惑——养老、医疗、失业、公积金,各自按什么基数扣、扣多少比例,很少有人能一眼算清。输入税前工资和所在城市,这个工具逐项拆解五险一金的个人与单位缴纳明细,并给出税后实发金额。计算完全在浏览器内完成,数据不上传服务器,适合发薪日核对、跳槽谈薪前估算到手收入。

使用场景

跳槽谈薪谈崩了

面试通过,HR 给了一个总包数字,但说「税前 25k,五险一金按最低基数交」。候选人上一份工作公积金按 12% 顶格交,每月到手少了近 2000 块。用本工具分别按「最低基数」和「实际工资」各算一次,看到公积金账户差异和个税变化,当场要求 HR 把公积金比例写进 offer。

年终奖单独计税抉择

12 月财务发通知,今年年终奖可以选择「并入综合所得」或「单独计税」。员工小张全年工资 18 万,年终奖 5 万。用本工具分别勾选两种计税方式,系统直接算出个税差额——单独计税比并入少交 2800 元。她把截图发给财务,确认选单独计税方案。

兼职收入合并交税

设计师小林主业月薪 1.2 万,业余接私单每月额外收入 8000 元。她不确定私单按「劳务报酬」预扣之后,次年汇算清缴要不要补税。用本工具把主业和兼职收入一起填入「全年收入」栏,看到税率跳到 20% 档,提前算出次年 3 月需要补缴约 4000 元,开始每月预留补税资金。

新一线城市落户门槛

杭州人才落户要求「连续 12 个月社保基数不低于社平工资的 80%」。小王月薪 1.5 万,公司按最低基数 3957 元交社保。他用本工具调出「按实际工资」和「按最低基数」两种缴费方案,发现按最低基数交满 12 个月也不满足落户条件。他拿着计算结果跟公司协商调整社保基数。

生育津贴能领多少

怀孕 7 个月的准妈妈李姐,听说生育津贴跟「用人单位上年度职工月平均工资」挂钩,但公司平均工资比她本人工资低 3000 块。她用本工具输入自己的缴费基数,系统按照当地生育津贴计算公式(产假天数 × 单位平均工资 ÷ 30)算出预估金额,发现比预想少 1.2 万,提前调整家庭开支计划。

对比矩阵

维度本工具竞品 A(51社保计算器)传统方法(手工/Excel)
速度输入即出结果,无等待需加载页面,偶有延迟手动查表/公式,数分钟
隐私纯浏览器计算,数据不上传服务器数据需提交至服务器处理完全离线,无网络风险
离线可用支持(首次加载后断网仍可用)需联网,断网无法使用完全离线
五险一金比例自动按城市/年度更新需手动选择城市版本需自行查找并手动录入比例
特殊规则支持年终奖/个税专项附加扣除部分支持,需注册登录需自行理解税法规则
注册要求无需注册,打开即用部分功能需手机号注册无注册概念
第二节

使用指南

Getting Started

使用步骤

  1. 1在「税前月薪」输入框键入税前工资数额(单位:元),右侧实时显示五险一金与个税预扣金额
  2. 2在「社保基数」与「公积金基数」下拉框中选择与所在城市一致的基数档位,结果区同步更新扣除明细
  3. 3勾选「专项附加扣除」选项(如子女教育、住房贷款),系统自动从应纳税所得额中扣减对应额度
  4. 4点击「查看明细」按钮,展开逐项扣除的金额与比例,可核对各险种的计算依据

输入输出示例

输入输出说明
税前月薪 15000,北京,2025 年社保基数上限 35283,公积金比例 12%税后 11582.50,个税 790.00,五险一金 2627.50(养老 1200,医疗 300,失业 75,公积金 1800)常规:典型中等收入,五险一金按实际工资缴纳,个税适用 10% 税率,验证基本扣除逻辑
税前月薪 5000,上海,2025 年社保基数下限 7310,公积金比例 7%税后 4366.50,个税 0,五险一金 633.50(养老 400,医疗 100,失业 25,公积金 350)常规:低工资,个税起征点以下,社保按下限基数缴纳,验证免征额和基数下限逻辑
税前月薪 400000,深圳,2025 年社保基数上限 38892,公积金比例 5%税后 249320.00,个税 131680.00,五险一金 9000.00(养老 3111.36,医疗 777.84,失业 194.46,公积金 1944.60)边界:高收入,社保和公积金均被基数上限封顶,个税适用 45% 最高税率,验证封顶和累进税率
税前月薪 0,广州,2025 年社保基数下限 5284,公积金比例 0%(不缴纳)税后 0,个税 0,五险一金 0(养老 0,医疗 0,失业 0,公积金 0)边界:零收入,社保基数下限不适用(无工资不扣缴),验证零输入边界处理
税前月薪 5000,北京,2025 年社保基数上限 35283,公积金比例 12%,但用户输入了错误社保基数 40000税后 4366.50,个税 0,五险一金 633.50(养老 400,医疗 100,失业 25,公积金 600)易错:用户误以为社保基数可高于上限,工具应自动将基数修正为上限值,验证上限校验逻辑
税前月薪 8000,上海,2025 年社保基数下限 7310,公积金比例 5%,但用户输入了错误公积金比例 20%税后 6770.00,个税 60.00,五险一金 1170.00(养老 640,医疗 160,失业 40,公积金 400)易错:公积金比例超出法定范围(5%-12%),工具应提示并自动修正为上限 12%,验证比例校验
税前月薪 10000,成都,2025 年社保基数下限 4246,公积金比例 8%,但用户未选择公积金缴纳(勾选不缴)税后 8745.00,个税 290.00,五险一金 965.00(养老 800,医疗 200,失业 50,公积金 0)易错:公积金可选不缴,但五险一金总额不含公积金,验证可选字段处理

常见错误对照

1.年终奖单独计税时,把全年一次性奖金填入月薪字段

✗ 错误月薪输入 50000(年终奖),其他字段留空
✓ 修复月薪输入 0,在年终奖字段输入 50000

年终奖适用单独计税政策(财税〔2018〕164号),与月薪合并计算会导致税率档位错误、多扣税。

2.社保基数填成实际月薪,未考虑当地上下限封顶

✗ 错误月薪 35000,社保基数也填 35000
✓ 修复先查当地社保基数上限(如北京 2024 为 33891),超过上限的按上限填

社保基数有年度封顶线(当地社平工资 300%)和保底线(60%),超出部分不计入缴费基数,多填会导致计算结果虚高。

3.公积金缴存比例填成小数,未换算为百分比

✗ 错误公积金比例填 0.12
✓ 修复公积金比例填 12

工具要求输入整数百分比(如 5-12),填小数会被当作 0.12% 处理,导致公积金扣款几乎为零。

4.专项附加扣除填成年度总额,未换算为月均

✗ 错误住房贷款利息填 12000(一年总额)
✓ 修复住房贷款利息填 1000(每月 1000 元)

专项附加扣除按月度申报,工具要求输入每月扣除额。年度总额除以 12 才是正确值,否则每月多扣税。

5.外籍人士直接使用中国个税计算方式

✗ 错误外籍人士月薪 50000,直接选中国居民计算
✓ 修复外籍人士应选非居民计算,或确认是否有税收协定优惠

外籍居民有附加减除费用(每月 1300 元)和免税补贴(住房、子女教育等),直接套用中国居民公式会多算税款。

6.试用期工资按正式工资计算,未考虑 80% 下限

✗ 错误试用期月薪 2000,直接输入 2000 计算
✓ 修复先确认当地最低工资标准(如 2500),试用期工资不得低于 80% 即 2000,但工具不自动校验,需手动调整

《劳动合同法》规定试用期工资不得低于本单位相同岗位最低档工资的 80%,且不低于当地最低工资。工具不校验此规则,需用户自行核对。

7.补发工资按当月收入计算,未分摊到所属月份

✗ 错误补发 6 个月工资共 60000,当月月薪填 60000
✓ 修复补发工资应分摊到各月,或使用年终奖计税方式

补发工资原则上应还原到所属月份计算个税(国税发〔2005〕9号),集中计入当月会导致税率跳档、多缴个税。

第三节

工作原理

How It Works

核心公式

税后工资 = 税前工资 - 五险一金个人部分 - 个税

变量说明

  • 税前工资应发工资总额(元)
  • 五险一金个人部分养老/医疗/失业/公积金个人缴存合计
  • 个税应纳税所得额 × 税率 - 速算扣除数

示例

税前工资 15000 元,五险一金个人部分 1575 元(养老 8%+医疗 2%+失业 0.5%+公积金 7%),应纳税所得额 = 15000 - 1575 - 5000 = 8425 元,适用 10% 税率、速算扣除 210,个税 = 8425×10% - 210 = 632.5 元,税后工资 = 15000 - 1575 - 632.5 = 12792.5 元。

税前月薪(含基本工资、津贴)拆分计算五险一金 + 个税(按当地比例)税后实发(到手金额)专项附加扣除扣除明细清单
用户输入 本地处理 输出结果
第四节

开发者集成

For Developers

5 种主流语言实现,复制即用:

import json # 2024 年北京五险一金比例(个人部分) RATES = { 'pension': 0.08, # 养老保险 'medical': 0.02, # 医疗保险 'unemployment': 0.005, # 失业保险 'housing_fund': 0.12 # 住房公积金(最高 12%) } def calc_salary_after_tax(gross: float, social_base: float, fund_base: float) -> dict: """计算税后工资(含五险一金扣除)""" # 五险一金个人部分 social = social_base * (RATES['pension'] + RATES['medical'] + RATES['unemployment']) fund = fund_base * RATES['housing_fund'] deductions = social + fund # 应纳税所得额(假设起征点 5000) taxable = max(0, gross - deductions - 5000) # 简易税率表(2024) if taxable <= 3000: tax = taxable * 0.03 elif taxable <= 12000: tax = taxable * 0.10 - 210 elif taxable <= 25000: tax = taxable * 0.20 - 1410 else: tax = taxable * 0.25 - 2660 net = gross - deductions - tax return { 'gross': gross, 'social_insurance': round(social, 2), 'housing_fund': round(fund, 2), 'tax': round(max(tax, 0), 2), 'net': round(net, 2) } # 示例:税前 15000,社保基数 12000,公积金基数 15000 result = calc_salary_after_tax(15000, 12000, 15000) print(json.dumps(result, indent=2, ensure_ascii=False)) # 输出: # { # "gross": 15000, # "social_insurance": 1260.0, # "housing_fund": 1800.0, # "tax": 690.0, # "net": 11250.0 # }
// Node.js 18+ 或浏览器环境 // 2024 年上海五险一金比例(个人部分) const RATES = { pension: 0.08, medical: 0.02, unemployment: 0.005, housingFund: 0.07 // 上海公积金比例 5%-7% }; function calcSalaryAfterTax(gross, socialBase, fundBase) { // 五险一金扣除 const social = socialBase * (RATES.pension + RATES.medical + RATES.unemployment); const fund = fundBase * RATES.housingFund; const deductions = social + fund; // 应纳税所得额(起征点 5000) const taxable = Math.max(0, gross - deductions - 5000); // 简易税率表 let tax = 0; if (taxable <= 3000) { tax = taxable * 0.03; } else if (taxable <= 12000) { tax = taxable * 0.10 - 210; } else if (taxable <= 25000) { tax = taxable * 0.20 - 1410; } else { tax = taxable * 0.25 - 2660; } const net = gross - deductions - Math.max(tax, 0); return { gross, socialInsurance: Math.round(social * 100) / 100, housingFund: Math.round(fund * 100) / 100, tax: Math.round(Math.max(tax, 0) * 100) / 100, net: Math.round(net * 100) / 100 }; } // 示例:税前 20000,社保基数 15000,公积金基数 20000 console.log(calcSalaryAfterTax(20000, 15000, 20000)); // 输出: // { // gross: 20000, // socialInsurance: 1575, // housingFund: 1400, // tax: 1590, // net: 15435 // }
package main import ( "encoding/json" "fmt" "math" ) // 2024 年广州五险一金比例(个人部分) const ( pensionRate = 0.08 medicalRate = 0.02 unemploymentRate = 0.002 housingFundRate = 0.10 // 广州公积金比例 5%-12% taxThreshold = 5000 ) type SalaryResult struct { Gross float64 `json:"gross"` SocialInsurance float64 `json:"social_insurance"` HousingFund float64 `json:"housing_fund"` Tax float64 `json:"tax"` Net float64 `json:"net"` } func calcSalaryAfterTax(gross, socialBase, fundBase float64) SalaryResult { social := socialBase * (pensionRate + medicalRate + unemploymentRate) fund := fundBase * housingFundRate deductions := social + fund taxable := math.Max(0, gross-deductions-taxThreshold) var tax float64 switch { case taxable <= 3000: tax = taxable * 0.03 case taxable <= 12000: tax = taxable*0.10 - 210 case taxable <= 25000: tax = taxable*0.20 - 1410 default: tax = taxable*0.25 - 2660 } net := gross - deductions - math.Max(tax, 0) return SalaryResult{ Gross: gross, SocialInsurance: math.Round(social*100) / 100, HousingFund: math.Round(fund*100) / 100, Tax: math.Round(math.Max(tax, 0)*100) / 100, Net: math.Round(net*100) / 100, } } func main() { result := calcSalaryAfterTax(18000, 13000, 18000) b, _ := json.MarshalIndent(result, "", " ") fmt.Println(string(b)) // 输出: // { // "gross": 18000, // "social_insurance": 1326, // "housing_fund": 1800, // "tax": 890, // "net": 13984 // } }
// 运行:ts-node 或 Deno interface SalaryResult { gross: number; socialInsurance: number; housingFund: number; tax: number; net: number; } // 2024 年深圳五险一金比例(个人部分) const RATES = { pension: 0.08, medical: 0.02, unemployment: 0.003, housingFund: 0.05 // 深圳公积金比例 5%-12% } as const; function calcSalaryAfterTax( gross: number, socialBase: number, fundBase: number ): SalaryResult { const social = socialBase * (RATES.pension + RATES.medical + RATES.unemployment); const fund = fundBase * RATES.housingFund; const deductions = social + fund; const taxable = Math.max(0, gross - deductions - 5000); let tax = 0; if (taxable <= 3000) { tax = taxable * 0.03; } else if (taxable <= 12000) { tax = taxable * 0.10 - 210; } else if (taxable <= 25000) { tax = taxable * 0.20 - 1410; } else { tax = taxable * 0.25 - 2660; } const net = gross - deductions - Math.max(tax, 0); return { gross, socialInsurance: Math.round(social * 100) / 100, housingFund: Math.round(fund * 100) / 100, tax: Math.round(Math.max(tax, 0) * 100) / 100, net: Math.round(net * 100) / 100 }; } // 示例:税前 25000,社保基数 20000,公积金基数 25000 console.log(calcSalaryAfterTax(25000, 20000, 25000)); // 输出: // { // gross: 25000, // socialInsurance: 2060, // housingFund: 1250, // tax: 2590, // net: 19100 // }
use serde::Serialize; #[derive(Serialize)] struct SalaryResult { gross: f64, social_insurance: f64, housing_fund: f64, tax: f64, net: f64, } // 2024 年杭州五险一金比例(个人部分) const PENSION_RATE: f64 = 0.08; const MEDICAL_RATE: f64 = 0.02; const UNEMPLOYMENT_RATE: f64 = 0.005; const HOUSING_FUND_RATE: f64 = 0.12; // 杭州公积金比例 5%-12% const TAX_THRESHOLD: f64 = 5000.0; fn calc_salary_after_tax(gross: f64, social_base: f64, fund_base: f64) -> SalaryResult { let social = social_base * (PENSION_RATE + MEDICAL_RATE + UNEMPLOYMENT_RATE); let fund = fund_base * HOUSING_FUND_RATE; let deductions = social + fund; let taxable = (gross - deductions - TAX_THRESHOLD).max(0.0); let tax = if taxable <= 3000.0 { taxable * 0.03 } else if taxable <= 12000.0 { taxable * 0.10 - 210.0 } else if taxable <= 25000.0 { taxable * 0.20 - 1410.0 } else { taxable * 0.25 - 2660.0 }; let net = gross - deductions - tax.max(0.0); SalaryResult { gross, social_insurance: (social * 100.0).round() / 100.0, housing_fund: (fund * 100.0).round() / 100.0, tax: (tax.max(0.0) * 100.0).round() / 100.0, net: (net * 100.0).round() / 100.0, } } fn main() { let result = calc_salary_after_tax(22000.0, 16000.0, 22000.0); println!("{}", serde_json::to_string_pretty(&result).unwrap()); // 输出: // { // "gross": 22000.0, // "social_insurance": 1680.0, // "housing_fund": 2640.0, // "tax": 1590.0, // "net": 16090.0 // } }
第五节

常见问题

Q & A
我这个月工资有提成和加班费,税前工资应该填哪个数?

税前工资应填写应发工资总额,也就是基本工资、岗位津贴、绩效奖金、加班费、提成等所有货币性收入加起来的数字,不是扣除社保后的实发数。本计算器只按你填的税前总额计算五险一金和个人所得税,不区分工资构成。如果公司有餐补、交通补贴等免税项目,建议先确认哪些计入社保缴费基数,再填入对应金额。

为什么我算出来的税后工资和公司发的差了几百块?

常见原因有:①社保公积金基数不同——计算器默认按税前工资全额做基数,但公司可能按当地最低基数或封顶线缴纳;②个税专项附加扣除没算——赡养老人、子女教育、房贷利息等抵扣项每月最多可减几千元应纳税所得额;③公司有补充公积金或企业年金。建议先核对社保基数和专项扣除项,再手动调整计算器里的缴存比例。

五险一金个人和公司分别交多少?比例能自己设置吗?

本计算器支持自定义各险种缴费比例。默认比例参考一线城市常见值:养老个人8%公司16%,医疗个人2%公司8%,失业个人0.5%公司0.5%,工伤和生育由公司承担(0.5%-1.2%),公积金个人和公司各5%-12%。你可以在输入区直接修改每个险种的百分比,结果会实时更新。如果不确定本地比例,建议先查当地社保局官网。

我试用期工资只发80%,社保基数怎么填?

社保基数一般按劳动合同约定的工资总额确定,试用期工资80%通常不低于当地最低工资,但基数仍应为转正后的全额(除非公司按实际发放数申报)。建议先问HR试用期社保基数按哪个数报,计算时填入那个基数。如果按80%报,就把税前工资填成试用期实际金额,同时确认基数也改成对应值,否则个税会算错。

年终奖能一起算进去吗?怎么和月薪分开算税?

本计算器只处理单月工资薪金,不支持合并年终奖。年终奖目前可选择单独计税(除以12找税率)或并入综合所得,两种方式税负不同。建议先用本工具算月薪扣税,再用其他年终奖计算器算奖金部分,最后相加。注意:每人每年只能选一次年终奖计税方式,且同一年不能部分奖金单独、部分并入。

计算结果里的实发工资是打到卡里的钱吗?

是的,实发工资=税前工资-个人承担的五险一金-个人所得税。但需注意:①企业代扣代缴的社保和个税会在发薪日同步扣除,实发即到手金额;②如果公司有工会费、企业年金个人部分、缺勤扣款等额外扣项,实发还会再少;③部分地区社保基数有上下限(如北京2024养老基数上限33891元),超出部分不计入缴费,计算器已内置常见城市限值。

我工资不到5000元,还需要交个税吗?

月工资低于5000元(年6万)通常不需要缴个税,因为个税起征点就是5000元/月。但五险一金个人部分仍会从工资中扣除,所以实发工资=税前-社保公积金。如果你的税前工资正好在5000元附近,且社保公积金扣除后低于5000,个税为0。另外,如果有劳务报酬、稿酬等其他收入,全年综合所得超过6万仍需汇算清缴。

换城市工作,社保基数怎么变?计算器能切换城市吗?

本计算器提供北京、上海、广州、深圳、杭州、成都等主要城市的社保比例和基数上下限预设,你可以在输入区下拉选择城市。换城市后,养老保险缴费比例不变(个人8%),但医疗、失业比例和基数限值不同。例如上海2024医疗个人2%公司10%,而深圳医疗个人2%公司6%。选择对应城市后,计算器会自动应用当地参数。

为什么我输入年薪后算出来的月税和实际扣的不一样?

本计算器按单月工资计算,不是按年薪。年薪制通常按月预缴、年底汇算,每月扣除额相同但累计收入会触发税率跳档。例如月薪3万,1月税率10%,12月可能到20%,全年实际缴税比简单×12多。建议用本工具按月薪逐月计算,或者使用页面上的「年终奖综合所得计算」关联工具(如果存在),按全年收入做汇算。

隐私保证所有计算与处理均在你的浏览器本地完成,输入数据不会上传服务器,也不会保存或共享。

选择 打开 +新窗口 esc关闭