401(k) Match Optimizer
optimize_401k_matchCalculation, not advice. Verify with a professional before acting. Deterministic 401(k) employer-match optimizer. Given your annual salary, pay frequency, current contribution percent, and your employer's match formula (as a named preset or a custom tier list), computes:
the annual match you receive today;
the maximum match available (full match entitlement);
the match forfeited at your current rate;
the minimum contribution percent to receive the full match;
whether front-loading contributions would forfeit match at a no-true-up plan; and
a per-period schedule showing level vs. front-load paths side by side.
Pick this to size 401(k) contributions against the employer match formula; pick compare_payoff_vs_invest when the question is putting an extra monthly amount toward a debt versus investing it (that tool takes no employer-match input), not how much of the match to receive.
IRS limits (402(g) elective deferral, 401(a)(17) compensation cap, 415(c) annual additions) are applied and cited in provenance. Catch-up contribution ceilings for ages 50+ and 60-63 (SECURE 2.0) are computed when participant_age is provided; when a catch-up allowance applies, applied_caps[].cap_name reads '402(g) elective deferral plus 414(v) catch-up' and limit_value carries the combined ceiling, not the bare 402(g) amount.
HEAVY tool: use output='summary' (default) for the headline scalars or output='inline' for the full per-period schedule.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| output | No | Valid values: 'summary' (default), 'inline'. Response envelope. 'summary': headline scalars, period_schedule stripped. 'inline': full payload including period_schedule[]. | |
| chart_title | No | Override for the chart title. Reserved for the chart pipeline. Must not contain em-dashes or en-dashes. Max 120 characters. Optional. | |
| has_true_up | No | Whether the plan provides an annual true-up. false is the conservative assumption: surfaces front-loading forfeiture risk. Optional; defaults to false when omitted. | |
| match_tiers | No | Custom match-formula tier list. Example: [{"match_frac": 1.0, "up_to_deferral_pct": 3}, {"match_frac": 0.5, "up_to_deferral_pct": 2}] = safe_harbor_basic. Exactly one of match_preset or match_tiers is required. Optional; omit when supplying match_preset. | |
| match_preset | No | Named match-formula preset: 'safe_harbor_basic' (100% of first 3% + 50% of next 2%), 'safe_harbor_enhanced_simple' (100% of first 4%), 'qaca' (100% of first 1% + 50% of next 5%), 'fifty_pct_of_first_six_pct' (50% of first 6%). Exactly one of match_preset or match_tiers is required. Optional; omit when supplying match_tiers. | |
| annual_salary | Yes | Annual gross salary. Decimal > 0. REQUIRED, no default. | |
| participant_age | No | Determines which catch-up limit applies (age 50+, or age 60-63 SECURE 2.0 super catch-up). Integer >= 0. Optional; omit when age is unknown or participant is under 50. | |
| contribution_pct | Yes | Current employee contribution as a percent of gross pay. Decimal in [0, 100]. REQUIRED, no default. | |
| pay_periods_per_year | Yes | Pay periods per year (12=monthly, 24=semi-monthly, 26=biweekly, 52=weekly). Integer in [1, 365]. REQUIRED, no default. |