Solo 401k Contribution Calculator
Info
Created On: September 2, 2023
Created By:
AI
Model: chatgpt-plugin
Time: 0 seconds
Prompt Tokens: 0
Completion Tokens: 0
Total Token Cost: 0
Get This App On Your Website
Copy Code
1. Copy the code above with the iframe and link.
2. Paste the code into your website.
3. Resize the iframe to fit your website.
Javascript, HTML, CSS Code
Copy
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript"> window.addEventListener('error', function(event) { var message = JSON.parse(JSON.stringify(event.message)); var source = event.filename; var lineno = event.lineno; var colno = event.colno; var error = event.error; window.parent.postMessage({ type: 'iframeError', details: { message: message, source: source, lineno: lineno, colno: colno, error: error ? error.stack : '' } }, '*'); }); window.addEventListener('unhandledrejection', function(event) { window.parent.postMessage({ type: 'iframePromiseRejection', details: { reason: event.reason } }, '*'); }); </script>
<title>Solo 401k Contribution Calculator</title>
<meta name="description" content="Calculate your Solo 401k contributions easily">
<meta name="keywords" content="Solo 401k, contribution, calculator">
<style>
body {
font-family: Arial, sans-serif;
}
.container {
max-width: 800px;
margin: auto;
padding: 20px;
text-align: center;
}
.result {
margin-top: 20px;
}
.dayJobFields {
display: none;
}
</style>
<link rel="canonical" href="https://calculator.tools/prompt/5479/">
<meta charset="utf-8">
</head>
<body>
<div class="container">
<h1>Solo 401k Contribution Calculator</h1>
<p>Year: <input type="number" id="year" placeholder="Year" value="2023"></p>
<p>Business Profit: <input type="number" id="businessProfit" placeholder="Business Profit"></p>
<p>Age: <input type="checkbox" id="age"> Are you 50-years-old or older?</p>
<p>Day Job?: <input type="checkbox" id="dayJob" onclick="toggleDayJobFields()"> Do you also have W2 employment?</p>
<div class="dayJobFields">
<p>Day Job Income: <input type="number" id="dayJobIncome" placeholder="Day Job Income"></p>
<p>Day Job 401k: <input type="number" id="dayJob401k" placeholder="Day Job 401k"></p>
<p>Day Job Catchup: <input type="number" id="dayJobCatchup" placeholder="Day Job Catchup"></p>
</div>
<button onclick="calculateContributions()">Calculate</button>
<div class="result" id="result"></div>
</div>
<script>
function toggleDayJobFields() {
const dayJobFields = document.querySelector('.dayJobFields');
if (document.getElementById('dayJob').checked) {
dayJobFields.style.display = 'block';
} else {
dayJobFields.style.display = 'none';
}
}
function calculateContributions() {
const year = parseInt(document.getElementById('year').value);
const businessProfit = parseFloat(document.getElementById('businessProfit').value);
const age = document.getElementById('age').checked;
const dayJob = document.getElementById('dayJob').checked;
const dayJobIncome = parseFloat(document.getElementById('dayJobIncome').value) || 0;
const dayJob401k = parseFloat(document.getElementById('dayJob401k').value) || 0;
const dayJobCatchup = parseFloat(document.getElementById('dayJobCatchup').value) || 0;
const employeeContributionLimit = 22500;
const combinedLimit = 66000;
const catchupAmount = 7500;
let netEarnings = businessProfit * 0.9235;
let electiveDeferral = Math.min(netEarnings, employeeContributionLimit - dayJob401k);
let profitSharing = Math.min(netEarnings * 0.25, combinedLimit - electiveDeferral);
let catchupMax = age ? catchupAmount : 0;
let afterTaxMax = combinedLimit - (electiveDeferral + profitSharing + catchupMax);
document.getElementById('result').innerHTML = `
<p>Net earnings from self-employment: $${netEarnings.toFixed(2)}</p>
<p>Elective deferral for Employee: $${electiveDeferral.toFixed(2)}</p>
<p>Profit sharing from Employer: $${profitSharing.toFixed(2)}</p>
<p>Catchup max: $${catchupMax.toFixed(2)}</p>
<p>After-tax Non-Roth max: $${afterTaxMax.toFixed(2)}</p>
`;
}
</script>
<script type="text/javascript"> var localStoragePrefix = "ct-{{ cachebreaker }}"; var lastSave = 0; function saveLocal(data) { if (Date.now() - lastSave < 1000) { return; } let cookie = localStoragePrefix + "=" + JSON.stringify(data) + "; path=" + window.location.pathname + "'; SameSite=Strict"; cookie += "; expires=" + new Date(Date.now() + 1000 * 60 * 60 * 24 * 365 * 1000).toUTCString(); document.cookie = cookie; lastSave = Date.now(); } function loadLocal() { var cookiePrefix = localStoragePrefix + "="; var cookieStart = document.cookie.indexOf(cookiePrefix); if (cookieStart > -1) { let cookieEnd = document.cookie.indexOf(";", cookieStart); if (cookieEnd == -1) { cookieEnd = document.cookie.length; } var cookieData = document.cookie.substring(cookieStart + cookiePrefix.length, cookieEnd); return JSON.parse(cookieData); } } </script>
<script type="text/javascript"> window.addEventListener('load', function() { var observer = new MutationObserver(function() { window.parent.postMessage({height: document.documentElement.scrollHeight || document.body.scrollHeight},"*"); }); observer.observe(document.body, {attributes: true, childList: true, subtree: true}); window.parent.postMessage({height: document.documentElement.scrollHeight || document.body.scrollHeight},"*"); }); </script>
</body>
</html>