跳槽谈薪谈崩了
面试通过,HR 给了一个总包数字,但说「税前 25k,五险一金按最低基数交」。候选人上一份工作公积金按 12% 顶格交,每月到手少了近 2000 块。用本工具分别按「最低基数」和「实际工资」各算一次,看到公积金账户差异和个税变化,当场要求 HR 把公积金比例写进 offer。
每月工资条到手,扣除项往往比工资本身更让人困惑——养老、医疗、失业、公积金,各自按什么基数扣、扣多少比例,很少有人能一眼算清。输入税前工资和所在城市,这个工具逐项拆解五险一金的个人与单位缴纳明细,并给出税后实发金额。计算完全在浏览器内完成,数据不上传服务器,适合发薪日核对、跳槽谈薪前估算到手收入。
面试通过,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) |
|---|---|---|---|
| 速度 | 输入即出结果,无等待 | 需加载页面,偶有延迟 | 手动查表/公式,数分钟 |
| 隐私 | 纯浏览器计算,数据不上传服务器 | 数据需提交至服务器处理 | 完全离线,无网络风险 |
| 离线可用 | 支持(首次加载后断网仍可用) | 需联网,断网无法使用 | 完全离线 |
| 五险一金比例 | 自动按城市/年度更新 | 需手动选择城市版本 | 需自行查找并手动录入比例 |
| 特殊规则 | 支持年终奖/个税专项附加扣除 | 部分支持,需注册登录 | 需自行理解税法规则 |
| 注册要求 | 无需注册,打开即用 | 部分功能需手机号注册 | 无注册概念 |
| 输入 | 输出 | 说明 |
|---|---|---|
| 税前月薪 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号),集中计入当月会导致税率跳档、多缴个税。
税后工资 = 税前工资 - 五险一金个人部分 - 个税
税前工资应发工资总额(元)五险一金个人部分养老/医疗/失业/公积金个人缴存合计个税应纳税所得额 × 税率 - 速算扣除数税前工资 15000 元,五险一金个人部分 1575 元(养老 8%+医疗 2%+失业 0.5%+公积金 7%),应纳税所得额 = 15000 - 1575 - 5000 = 8425 元,适用 10% 税率、速算扣除 210,个税 = 8425×10% - 210 = 632.5 元,税后工资 = 15000 - 1575 - 632.5 = 12792.5 元。
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
// }
}税前工资应填写应发工资总额,也就是基本工资、岗位津贴、绩效奖金、加班费、提成等所有货币性收入加起来的数字,不是扣除社保后的实发数。本计算器只按你填的税前总额计算五险一金和个人所得税,不区分工资构成。如果公司有餐补、交通补贴等免税项目,建议先确认哪些计入社保缴费基数,再填入对应金额。
常见原因有:①社保公积金基数不同——计算器默认按税前工资全额做基数,但公司可能按当地最低基数或封顶线缴纳;②个税专项附加扣除没算——赡养老人、子女教育、房贷利息等抵扣项每月最多可减几千元应纳税所得额;③公司有补充公积金或企业年金。建议先核对社保基数和专项扣除项,再手动调整计算器里的缴存比例。
本计算器支持自定义各险种缴费比例。默认比例参考一线城市常见值:养老个人8%公司16%,医疗个人2%公司8%,失业个人0.5%公司0.5%,工伤和生育由公司承担(0.5%-1.2%),公积金个人和公司各5%-12%。你可以在输入区直接修改每个险种的百分比,结果会实时更新。如果不确定本地比例,建议先查当地社保局官网。
社保基数一般按劳动合同约定的工资总额确定,试用期工资80%通常不低于当地最低工资,但基数仍应为转正后的全额(除非公司按实际发放数申报)。建议先问HR试用期社保基数按哪个数报,计算时填入那个基数。如果按80%报,就把税前工资填成试用期实际金额,同时确认基数也改成对应值,否则个税会算错。
本计算器只处理单月工资薪金,不支持合并年终奖。年终奖目前可选择单独计税(除以12找税率)或并入综合所得,两种方式税负不同。建议先用本工具算月薪扣税,再用其他年终奖计算器算奖金部分,最后相加。注意:每人每年只能选一次年终奖计税方式,且同一年不能部分奖金单独、部分并入。
是的,实发工资=税前工资-个人承担的五险一金-个人所得税。但需注意:①企业代扣代缴的社保和个税会在发薪日同步扣除,实发即到手金额;②如果公司有工会费、企业年金个人部分、缺勤扣款等额外扣项,实发还会再少;③部分地区社保基数有上下限(如北京2024养老基数上限33891元),超出部分不计入缴费,计算器已内置常见城市限值。
月工资低于5000元(年6万)通常不需要缴个税,因为个税起征点就是5000元/月。但五险一金个人部分仍会从工资中扣除,所以实发工资=税前-社保公积金。如果你的税前工资正好在5000元附近,且社保公积金扣除后低于5000,个税为0。另外,如果有劳务报酬、稿酬等其他收入,全年综合所得超过6万仍需汇算清缴。
本计算器提供北京、上海、广州、深圳、杭州、成都等主要城市的社保比例和基数上下限预设,你可以在输入区下拉选择城市。换城市后,养老保险缴费比例不变(个人8%),但医疗、失业比例和基数限值不同。例如上海2024医疗个人2%公司10%,而深圳医疗个人2%公司6%。选择对应城市后,计算器会自动应用当地参数。
本计算器按单月工资计算,不是按年薪。年薪制通常按月预缴、年底汇算,每月扣除额相同但累计收入会触发税率跳档。例如月薪3万,1月税率10%,12月可能到20%,全年实际缴税比简单×12多。建议用本工具按月薪逐月计算,或者使用页面上的「年终奖综合所得计算」关联工具(如果存在),按全年收入做汇算。
隐私保证所有计算与处理均在你的浏览器本地完成,输入数据不会上传服务器,也不会保存或共享。