计算工具 · 工资与个税

退休金估算

缴费基数 + 工龄→预估养老金

本地处理 · 不上传 免费 · 无需登录 无次数限制 累计 51 次使用
城镇职工基本养老金
身份 / 退休类别影响法定退休年龄
出生年份1985
法定退休年龄推算中…
当前年龄40 岁
已缴费年限15 年
当前月缴费基数= 月工资基数
本人平均缴费指数 1.00
当地社平工资上年度全口径月均
缴费档次100 %
缴费档次决定本人缴费指数;多缴多得,封顶 300%。
测算假设(社平增长 / 利率 / 通胀)
个人账户已有余额可选
社平工资年增长率推算退休时社平
%
本人工资增长率个人账户缴费随之增长
%
个人账户记账利率近年约 3~4%
%
通胀率折算今日购买力
%
输入参数即时估算 · 全程本地运算不上传
计算口径 / 公式说明

基础养老金 = (退休时上年度社平工资 + 本人指数化月平均缴费工资)÷ 2 × 缴费年限 × 1%。本人指数化工资 = 退休时社平 × 本人平均缴费指数(缴费基数 ÷ 当年社平)。

个人账户养老金 = 个人账户累计储存额 ÷ 计发月数。个人账户每年存入 = 缴费基数 × 8% × 12,按记账利率计息。计发月数:60 岁 = 139,55 岁 = 170,50 岁 = 195(按退休年龄查表)。

退休时社平 = 当前社平 ×(1 + 社平增长率)距退休年数。本工具简化按「缴费指数恒定」估算,社平增长率开启后名义数字会变大,属正常。

替代率 = 预估月养老金 ÷ 退休前月工资,国际劳工组织建议 ≥ 55%。多缴多得、长缴多得、晚退多得是基本养老金的核心激励。

免责声明:本结果为估算值。各地社平工资、缴费指数计算口径、记账利率、计发月数细则与过渡性养老金政策存在差异,本工具未含过渡性养老金、视同缴费年限等特殊项。实际养老金以参保地社会保险经办机构核定为准,本结果不构成任何承诺或建议。

第一节

关于本工具

About

每月工资条上的养老保险缴费基数,和退休后每月能领的养老金之间隔着一个复杂的统筹公式。输入缴费基数与工龄,这个工具直接套用当前城镇职工基本养老金计发办法,给出基础养老金与个人账户养老金的估算值。计算全在浏览器本地完成,缴费记录不会离开设备——适合换工作间隙估算断缴影响、或临近退休时核对社保局给出的预发金额。

使用场景

跳槽前算得失

32 岁的赵磊收到一家私企 offer,月薪涨 40%,但对方按最低基数缴社保。他现有工作月薪 1.2 万,国企按实缴。用本工具分别填入两套缴费基数与当前 8 年工龄,算出的预估养老金差异让他看清:未来每月少领 1800 元,加上公积金损失,跳槽的净收益被社保落差吃掉大半。

全职妈妈返岗规划

辞职带娃 5 年的林姐准备重新工作,面试时 HR 说社保按 5000 基数缴。她拿不准这 5 年断缴对未来养老金的影响有多大。用本工具分别模拟断缴 5 年与连续缴纳的两种结果,发现若 45 岁前能恢复 8000 以上基数,60 岁后每月只差 300 元,她据此接受了离家近但基数偏低的文员岗。

灵活就业选档位

做自由设计的阿杰年收入约 15 万,面对灵活就业社保的 60%-300% 缴费档位犹豫不决。选 60% 档每月省 800 元,但怕老了不够花;选 300% 档又觉得负担重。用本工具输入不同档位对应的基数与现有 6 年工龄,对比 60%、100%、200% 三档的预估结果,他发现 100% 档比 60% 档每月多 600 元,而 200% 档只比 100% 档多 350 元,性价比最高的是 100% 档。

父母补缴算账

老张的父亲今年 58 岁,职工医保和养老保险都差 3 年才满 15 年。补缴需要一次性掏 8 万多,老张不确定这笔钱投进去划不划算。用本工具输入父亲实际缴费基数与 12 年工龄,算出 60 岁退休后每月预估领 2200 元,大约 3 年半回本,且之后每年随社平工资上调。老张据此说服父亲办了补缴。

换城市前测影响

在深圳缴了 10 年社保的王姐,计划回老家三线城市工作。她担心社保关系转移后,因两地社平工资差距导致养老金缩水。用本工具分别输入深圳 12000 元基数与老家 6000 元基数,结合 10 年工龄,算出若在老家继续缴 15 年低基数,最终养老金比一直在深圳缴低 40%。她据此决定先不迁社保,保留深圳缴费记录。

对比矩阵

维度本工具社保局/官方计算器手工/Excel 估算
计算模型基于现行城镇职工养老金公式(基础养老金+个人账户)部分官方工具仅显示缴费记录,不提供预测需自行查找公式、手动套算,易出错
输入复杂度仅需缴费基数与工龄两项通常要求输入历年缴费明细、退休年龄等需整理多年工资单、社平工资数据
速度即时出结果(浏览器内计算)需登录、查询、等待页面响应手动输入公式、核对数据,耗时数十分钟
隐私所有数据在浏览器本地处理,不上传服务器需登录实名账户,数据留存在政务平台完全本地,但数据需自行保管
离线可用支持(纯前端计算,无需网络)必须联网访问政府网站完全离线
更新频率公式随政策调整更新(如社平工资、计发月数)数据实时但预测功能常滞后需用户自行跟踪政策变化
适用人群想快速估算退休金水平的在职人员需查询个人实际缴费记录的参保人熟悉 Excel、有历年数据且愿意手动计算的用户
第二节

使用指南

Getting Started

使用步骤

  1. 1在「缴费基数」输入框填入月平均工资(元),下方滑块同步显示对应档位
  2. 2在「累计缴费年限」输入框填写实际缴费年数(含视同缴费年限),右侧提示当前工龄区间
  3. 3点击「开始估算」按钮,结果区立即显示基础养老金与个人账户养老金两项明细
  4. 4展开「估算明细」可查看计发月数、个人账户余额等中间参数,每项参数旁有问号图标悬停解释

输入输出示例

输入输出说明
缴费基数:3000元,工龄:15年约 675 元/月常规:最低缴费基数 + 最低缴费年限,验证基础养老金计算是否按最低标准执行
缴费基数:20000元,工龄:35年约 5600 元/月常规:高基数 + 长工龄,验证高收入人群的估算结果是否合理
缴费基数:5000元,工龄:0年0 元/月(或提示“工龄不能为0”)边界:工龄为0,验证工具是否正确处理无缴费记录的情况
缴费基数:10000元,工龄:44年约 4400 元/月边界:工龄接近上限(男性法定退休44年),验证长工龄下的估算是否平滑
缴费基数:-1000元,工龄:20年提示“缴费基数不能为负数”或返回0易错:用户可能误输入负数,验证输入校验是否拦截
缴费基数:0元,工龄:25年0 元/月(或提示“缴费基数不能为0”)易错:用户可能以为“0基数”表示未缴费,实际应提示输入错误
缴费基数:8000元,工龄:15.5年约 1200 元/月边界:工龄含小数(非整年),验证工具是否支持非整数工龄

常见错误对照

1.缴费基数填成实际到手工资

✗ 错误月薪 8000,缴费基数填 8000
✓ 修复缴费基数填 5000(当地社保缴费基数下限)

缴费基数通常是当地社平工资的 60%-300%,不是实际工资。许多单位按最低基数缴纳,填实际工资会导致估算偏高。

2.工龄包含未缴费的断档期

✗ 错误从 2000 年工作至今,工龄填 24 年
✓ 修复工龄填 20 年(扣除 2015-2019 年自由职业未缴费的 4 年)

退休金只计算实际缴费年限(含视同缴费),断档期不累计。填总工龄会高估养老金。

3.缴费基数填成社保账户余额

✗ 错误个人账户余额 8 万,缴费基数填 80000
✓ 修复缴费基数填 6000(月缴费基数,非账户余额)

缴费基数是每月计算养老金的工资基数,单位是元/月,不是账户累计金额。填余额会导致结果数量级错误。

4.忽略视同缴费年限的折算

✗ 错误1992 年前工作 5 年,工龄直接加 5 年
✓ 修复1992 年前工作 5 年,工龄加 5 年(视同缴费年限)

视同缴费年限虽计入工龄,但实际计算时各地有不同折算系数(通常 1.0-1.4),直接加 5 年可能低估过渡性养老金。

5.缴费基数填成年度总额而非月均

✗ 错误年收入 12 万,缴费基数填 120000
✓ 修复缴费基数填 10000(120000 ÷ 12)

养老金计算均按月缴费基数,填年总额会导致基数虚高 12 倍,结果严重失真。

6.工龄精确到月但未四舍五入

✗ 错误工龄 23 年 7 个月,填 23.7
✓ 修复工龄填 23.58(7÷12≈0.58)或直接填 24 年

工具通常按年计算,小数部分需按月份折算(月数÷12),直接写 23.7 相当于 23 年 8.4 个月,产生偏差。

第三节

工作原理

How It Works

核心公式

月养老金 = 基础养老金 + 个人账户养老金

变量说明

  • 基础养老金退休时当地社平工资 × (1+平均缴费指数) ÷ 2 × 缴费年限 × 1%
  • 个人账户养老金个人账户累计储存额 ÷ 计发月数
  • 平均缴费指数历年缴费基数与社平工资比值的均值
  • 缴费年限含视同缴费年限,精确到月
  • 计发月数根据退休年龄查表确定,如60岁139个月

示例

某职工60岁退休,当地社平工资8000元,平均缴费指数0.8,缴费年限30年,个人账户储存额15万元。基础养老金 = 8000×(1+0.8)÷2×30×1% = 8000×0.9×0.3 = 2160元;个人账户养老金 = 150000÷139 ≈ 1079.14元;月养老金合计 ≈ 2160+1079.14 = 3239.14元。

输入缴费基数累计工龄本地校验基数范围检查工龄非负判断核心计算查缴费系数表基础养老金公式输出月预估养老金
用户输入 本地处理 输出结果
第四节

开发者集成

For Developers

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

import math def estimate_pension(base: float, years: int, ratio: float = 0.01) -> float: """ 估算月养老金(元) :param base: 月缴费基数(元) :param years: 累计缴费年限(年) :param ratio: 每缴费1年对应的替代率(默认1%) :return: 预估月养老金(元) """ if base <= 0 or years <= 0: raise ValueError("缴费基数和年限必须为正数") # 基础养老金 = 缴费基数 × 年限 × 替代率 return round(base * years * ratio, 2) # 示例:月基数8000元,缴费30年 print(estimate_pension(8000, 30)) # 输出: 2400.0
/** * 估算月养老金(元) * @param {number} base - 月缴费基数(元) * @param {number} years - 累计缴费年限(年) * @param {number} [ratio=0.01] - 每缴费1年对应的替代率 * @returns {number} 预估月养老金(元) */ function estimatePension(base, years, ratio = 0.01) { if (base <= 0 || years <= 0) { throw new Error('缴费基数和年限必须为正数'); } return Math.round(base * years * ratio * 100) / 100; } // 示例:月基数8000元,缴费30年 console.log(estimatePension(8000, 30)); // 2400
package main import ( "fmt" "math" ) // EstimatePension 估算月养老金(元) // base: 月缴费基数(元), years: 累计缴费年限(年), ratio: 替代率(默认0.01) func EstimatePension(base float64, years int, ratio ...float64) float64 { r := 0.01 if len(ratio) > 0 { r = ratio[0] } if base <= 0 || years <= 0 { panic("缴费基数和年限必须为正数") } result := base * float64(years) * r return math.Round(result*100) / 100 } func main() { fmt.Println(EstimatePension(8000, 30)) // 2400 }
/** * 估算月养老金(元) * @param base - 月缴费基数(元) * @param years - 累计缴费年限(年) * @param ratio - 每缴费1年对应的替代率,默认0.01 */ function estimatePension(base: number, years: number, ratio: number = 0.01): number { if (base <= 0 || years <= 0) { throw new Error('缴费基数和年限必须为正数'); } return Math.round(base * years * ratio * 100) / 100; } // 示例:月基数8000元,缴费30年 console.log(estimatePension(8000, 30)); // 2400
public class PensionEstimator { /** * 估算月养老金(元) * @param base 月缴费基数(元) * @param years 累计缴费年限(年) * @param ratio 替代率(默认0.01) * @return 预估月养老金(元) */ public static double estimatePension(double base, int years, double... ratio) { double r = (ratio.length > 0) ? ratio[0] : 0.01; if (base <= 0 || years <= 0) { throw new IllegalArgumentException("缴费基数和年限必须为正数"); } double result = base * years * r; return Math.round(result * 100.0) / 100.0; } public static void main(String[] args) { System.out.println(estimatePension(8000, 30)); // 2400.0 } }
/// 估算月养老金(元) /// base: 月缴费基数(元), years: 累计缴费年限(年), ratio: 替代率(默认0.01) fn estimate_pension(base: f64, years: u32, ratio: Option<f64>) -> f64 { let r = ratio.unwrap_or(0.01); assert!(base > 0.0 && years > 0, "缴费基数和年限必须为正数"); let result = base * years as f64 * r; (result * 100.0).round() / 100.0 } fn main() { println!("{}", estimate_pension(8000.0, 30, None)); // 2400 }
第五节

常见问题

Q & A
我工资每个月不一样,缴费基数填哪个数?

缴费基数不是月工资,是当地社保局公布的缴费基数上下限内的实际申报工资。如果工资低于下限就按下限填,高于上限按上限填。一般可在当地社保APP或工资单上找到“社保缴费基数”字段,不是税前工资也不是实发工资。本工具默认按整数元输入,建议先确认上一年度申报基数再填。

只填缴费基数和工龄就能算出退休金?感觉太简单了,准不准?

本工具是简化估算,只考虑基础养老金部分,不包含个人账户积累、过渡性养老金、地方补贴等。实际退休金还受退休时社平工资、个人账户记账利率、视同缴费年限等因素影响。结果可作为大概参考,误差通常在±30%以内。如果需要更精确的测算,建议用社保局官方计算器或咨询当地社保中心。

我中间断缴过几年,工龄怎么算?

工龄填累计实际缴费年限,含断缴前的所有实际缴费月份。断缴期间不计入工龄,但之前缴过的月份都算。比如交了8年、断了2年、又交了5年,工龄填13年。本工具不区分连续与否,只看总月数。注意:视同缴费年限(如军龄、上山下乡年限)不在本工具计算范围内。

为什么算出来的养老金比我同事实际拿到的少很多?

本工具只估算基础养老金,而你同事拿到的包括个人账户养老金、过渡性养老金、地方补贴等。另外,你的缴费基数可能填成了当前工资而非社保申报基数,或者工龄只算了实际缴费年数而漏了视同缴费年限。建议核对:缴费基数是否等于社保缴费基数,工龄是否包含所有可认定的缴费月份。

这个工具需要联网吗?我的数据会不会上传到服务器?

本工具完全在浏览器本地运行,所有计算在用户设备上完成,不会将输入的缴费基数、工龄等任何数据上传到服务器。断网状态下也能正常使用,计算结果不会离开你的设备。隐私敏感用户可放心使用,无需担心个人信息泄露。

我缴费基数填5000,工龄20年,结果出来是每月800多,这合理吗?

按现行基础养老金公式(退休时社平工资+本人指数化月平均缴费工资)÷2×缴费年限×1%,假设退休时社平工资6000元,缴费基数5000元,缴费指数约0.83,计算结果为(6000+5000×0.83)/2×20×0.01≈1015元。800多元偏低,可能原因是:你输入的缴费基数低于实际社平工资折算后的指数,或工龄内含低缴费月份拉低了平均指数。建议确认缴费基数是否反映真实缴费水平。

这个工具能不能算机关事业单位的退休金?

不能。本工具基于企业职工基本养老保险的基础养老金公式,不适用于机关事业单位的退休金计算。机关事业单位养老金采用不同的计发办法(含职业年金、过渡系数等),且2014年10月后实行“老人老办法、新人新制度、中人逐步过渡”,与本工具使用的社会统筹模式完全不同。机关事业单位人员请使用人社部门专用计算工具。

我缴费基数填了1万,工龄30年,结果和网上其他计算器差了好几百,信哪个?

差距主要来自三个地方:退休时社平工资的取值(有的用上年数据,有的用预测值)、个人账户记账利率的假设(国家每年公布,一般在2%-8%)、是否包含过渡性养老金。本工具只算基础养老金部分,所以结果偏低。如果你在其他计算器上看到更高数值,多半是因为它们算了个人账户部分。建议以本工具结果为下限参考,再找包含个人账户的计算器做上限参考。

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

选择 打开 +新窗口 esc关闭