TAX & SALARY PLANNING

New Hire Calculator

Go beyond salary: Who Should I Hire, And How Much Will This Cost Me?

⊛ 1 min read | By Brent Morrison | November 2025

Home > Calculators & Tools > Tax & Salary Planning > New Hire Calculator

New Hire Calculator
Current Team Costs
? Total annual gross salary cost for all current employees on payroll.
? Minimum employer contribution is 3%. Select the rate your company pays.
Create Scenario
Employees
*the rest of the year cost uses the start dates that you select when adding new employees to the team. It will pro-rata the cost based on the 12 months to
Subcontractors
Current Team Costs
Gross Wages£0
Employers NIC£0
Employers Pension£0
Freelancer Costs£0
Total Team Costs£0
Annual Total£0
Monthly Total£0
After (Annual) Team Costs
Gross Wages£0
Employers NIC£0
Employers Pension£0
Freelancer Costs£0
Total Team Costs£0
Annual Total£0
Monthly Total£0
Increase in Team Costs
Gross Wages£0
Employers NIC£0
Employers Pension£0
Freelancer Costs£0
Total Team Costs£0
Annual Total£0
Monthly Total£0

The rest of the year cost effect

After
£0
Before
£0
£0 £0

This will increase your costs by

£0

Assumptions

  • Employer NIC rate: 15% on salary above £5,000 per employee (2025/26 rates)
  • Employment Allowance: £10,500 offset against total employer NIC bill
  • Employer pension: 3% on salary above £6,240 per employee (Lower Earnings Limit)
  • Pro-rata calculations based on months remaining from start date to the rolling 12-month year end
  • Subcontractor costs are entered per month (no NIC/pension applies) — total is summed across the 12-month window
  • Per-employee annual cost = salary + employer NIC + employer pension for that individual

Common Questions About Hiring Costs

What are the hidden costs of hiring an employee?
Beyond the gross salary, you must account for Employer National Insurance (currently 15% above the threshold) and mandatory Pension Contributions (minimum 3%). You also need to budget for equipment, software licenses, and potential recruitment fees, which can add 20-30% to the base salary.
How accurate is this New Hire Calculator?
This tool provides a strategic estimate based on current UK tax bands and average overheads. It calculates salary, National Insurance, and pension obligations to give you a realistic "Total Cost of Employment" figure in under 90 seconds, helping you make safer cash flow decisions.
Should I hire a contractor or an employee?
Hiring an employee (PAYE) offers stability and control but comes with higher fixed costs (NI, Pension, Holiday Pay). A contractor offers flexibility and lower overheads but may have higher day rates. Use this calculator to see the full financial commitment of a permanent hire before deciding.

Ready to Future-Proof Your Hiring Decisions?

Use our 90-second financial assessment to pinpoint your current staffing capacity, identify risk areas, and determine the optimal time to hire your next team member.

Get immediate, actionable insights to align your growth strategy with your financial reality.

Assessment takes less than 2 minutes. No credit card required

Brent Morrison. Strategic accountancy partner at OutRise

ABOUT THE AUTHOR

Brent Morrison ACA CTA

Chartered Accountant and Chartered Tax Adviser

Member of the Institute of Chartered Accountants (ICAEW) and Taxation (CIOT) | Director at OutRise | He has over 12 years of experience advising high and fast growth companies across the UK. His approach combines a deep understanding of structuring data and systems, coupled with practical, real-world business experiences.

You May Also Enjoy Reading

Smart Growth for Ambitious UK Businesses

New Hire Cost Analysis${companyLabel}

Based on ${data.currentEmployees || '?'} current employees at ${data.annualSalary || '?'} gross salary, with ${data.newEmployees || '?'} new hire(s) planned.

Team Cost Comparison

Cost ElementCurrentAfterIncrease
Gross Wages${data.currentWages}${data.afterWages}${data.increaseWages}
Employer NIC${data.currentNIC}${data.afterNIC}${data.increaseNIC}
Pension${data.currentPension}${data.afterPension}${data.increasePension}
Freelancer${data.currentFreelancer}${data.afterFreelancer}${data.increaseFreelancer}
Total Annual${data.currentAnnual}${data.afterAnnual}${data.increaseAnnual}
Total Monthly${data.currentMonthly}${data.afterMonthly}${data.increaseMonthly}

Corporation Tax Savings

RateCT SavingNet Cost After CT
19% (Small Profits)${data.ctSaving19}${data.ctNet19}
25% (Main Rate)${data.ctSaving25}${data.ctNet25}
Assumptions: Employer NIC at 15% above threshold. Figures are estimates for planning purposes. Always consult your accountant for specific tax advice.
`; const blob = new Blob([printHTML], { type: 'text/html' }); const url = URL.createObjectURL(blob); const printWindow = window.open(url, '_blank'); if (printWindow) { printWindow.onload = function() { printWindow.print(); }; } fireGA4Event('newhire_pdf_download', { source: CONFIG.SOURCE }); } // ========================================================================= // GATING LOGIC - Blur overlay approach // ========================================================================= /** * Find the calculator wrapper inside the Elementor HTML widget */ function getCalculatorRoot() { // The calculator renders inside an Elementor HTML widget // Look for the .calculator-wrapper that contains our result columns const wrappers = document.querySelectorAll('.calculator-wrapper'); for (let w of wrappers) { if (w.querySelector('.result-col.after')) return w; } return null; } /** * Apply blur gate to the After/Increase columns, bar chart, and CT saving */ function applyBlur() { const root = getCalculatorRoot(); if (!root) return; // Sections to gate const gatedSelectors = [ '.result-col.after', '.result-col.increase', '.cost-effect-card', '#ctSavingCard', '.toggle-row', '.assumptions' ]; gatedSelectors.forEach(sel => { const el = root.querySelector(sel); if (el) { el.style.filter = 'blur(6px)'; el.style.pointerEvents = 'none'; el.style.userSelect = 'none'; el.style.transition = 'filter 0.4s ease'; el.setAttribute('data-gated', 'true'); } }); // Also find the "After" and "Increase" result-header elements and blur them const headers = root.querySelectorAll('.result-header'); headers.forEach(h => { const text = h.textContent.trim(); if (text.includes('After') || text.includes('Increase')) { h.style.filter = 'blur(6px)'; h.style.pointerEvents = 'none'; h.setAttribute('data-gated', 'true'); } }); } /** * Remove blur from gated sections */ function removeBlur() { const gated = document.querySelectorAll('[data-gated="true"]'); gated.forEach(el => { el.style.filter = 'none'; el.style.pointerEvents = ''; el.style.userSelect = ''; el.removeAttribute('data-gated'); }); } /** * Create the CTA button (shown first, before the email form) */ function createCTAButton() { const btn = document.createElement('button'); btn.className = 'outrise-gate-cta'; btn.innerHTML = ` See Full Hiring Cost Analysis `; btn.addEventListener('click', function() { state.formVisible = true; renderOverlay(); fireGA4Event('newhire_cta_clicked', { source: CONFIG.SOURCE }); }); return btn; } /** * Create the email capture form */ function createEmailForm() { const form = document.createElement('div'); form.className = 'outrise-gate-form'; form.innerHTML = `

Almost there!

Enter your details to unlock the full cost breakdown, including after-hire costs, increase analysis, and Corporation Tax savings.

`; return form; } /** * Create the thank-you confirmation with PDF download */ function createThankYou() { const ty = document.createElement('div'); ty.className = 'outrise-gate-thankyou'; ty.innerHTML = `

Thank you!

Your full hiring cost analysis is now unlocked below.

`; return ty; } /** * Render the overlay in the correct position */ function renderOverlay() { // Remove existing overlay const existing = document.getElementById('outrise-nh-overlay'); if (existing) existing.remove(); const root = getCalculatorRoot(); if (!root) return; // Find the results-grid to position the overlay after the Current column const resultsGrid = root.querySelector('.results-grid'); if (!resultsGrid) return; // Create overlay container const overlay = document.createElement('div'); overlay.id = 'outrise-nh-overlay'; overlay.className = 'outrise-gate-overlay'; if (state.hasSubmitted) { overlay.appendChild(createThankYou()); } else if (state.formVisible) { overlay.appendChild(createEmailForm()); } else { overlay.appendChild(createCTAButton()); } // Insert overlay after the results-grid resultsGrid.parentNode.insertBefore(overlay, resultsGrid.nextSibling); // Attach listeners if (state.hasSubmitted) { attachThankYouListeners(); } else if (state.formVisible) { attachFormListeners(); } } /** * Remove overlay */ function removeOverlay() { const overlay = document.getElementById('outrise-nh-overlay'); if (overlay) overlay.remove(); } /** * Gate the results (blur + show overlay) */ function gateResults() { if (state.isGated) return; state.isGated = true; applyBlur(); renderOverlay(); fireGA4Event('newhire_gate_shown', { source: CONFIG.SOURCE }); } /** * Reveal results (remove blur + update overlay to thank-you) */ function revealResults() { removeBlur(); state.hasSubmitted = true; renderOverlay(); // Auto-remove thank-you after 8 seconds setTimeout(function() { removeOverlay(); }, 8000); fireGA4Event('newhire_email_captured', { source: CONFIG.SOURCE }); } /** * Attach form validation and submission listeners */ function attachFormListeners() { const firstName = document.getElementById('outrise-nh-firstName'); const email = document.getElementById('outrise-nh-email'); const consent = document.getElementById('outrise-nh-consent'); const submit = document.getElementById('outrise-nh-submit'); const errorEl = document.getElementById('outrise-nh-error'); if (!firstName || !email || !consent || !submit) return; function validateForm() { const nameValid = firstName.value.trim().length >= 1; const emailValid = /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email.value.trim()); const consentValid = consent.checked; submit.disabled = !(nameValid && emailValid && consentValid); } firstName.addEventListener('input', validateForm); email.addEventListener('input', validateForm); consent.addEventListener('change', validateForm); submit.addEventListener('click', async function() { submit.disabled = true; submit.textContent = 'Unlocking...'; errorEl.style.display = 'none'; const nameVal = firstName.value.trim(); const emailVal = email.value.trim(); // Collect calculator data const calcData = getCalculatorData(); // Build webhook payload const payload = { firstName: nameVal, email: emailVal, consent: true, source: CONFIG.SOURCE, page: window.location.pathname, timestamp: new Date().toISOString(), calculatorData: calcData }; // Send to webhook const success = await sendToWebhook(payload); if (success) { markEmailCaptured(emailVal); revealResults(); } else { // Even if webhook fails, still unlock (don't punish the user) markEmailCaptured(emailVal); revealResults(); console.warn('Webhook submission failed but results unlocked'); } }); } /** * Attach PDF download listener on thank-you screen */ function attachThankYouListeners() { const pdfBtn = document.getElementById('outrise-nh-pdf'); if (pdfBtn) { pdfBtn.addEventListener('click', function() { const data = getCalculatorData(); handlePdfDownload(data); }); } } // ========================================================================= // STYLES // ========================================================================= function injectStyles() { const style = document.createElement('style'); style.textContent = ` .outrise-gate-overlay { background: linear-gradient(135deg, rgba(255,255,255,0.97) 0%, rgba(240,250,249,0.97) 100%); border: 1px solid #22AAA1; border-radius: 12px; padding: 28px 32px; margin: 20px auto; max-width: 440px; box-shadow: 0 4px 24px rgba(34, 170, 161, 0.12); text-align: center; position: relative; z-index: 10; } .outrise-gate-cta { display: inline-flex; align-items: center; justify-content: center; background: linear-gradient(135deg, #22AAA1 0%, #1a8f87 100%); color: white; border: none; border-radius: 8px; padding: 14px 28px; font-size: 15px; font-weight: 600; cursor: pointer; transition: all 0.2s ease; font-family: 'Poppins', sans-serif; } .outrise-gate-cta:hover { background: linear-gradient(135deg, #1a8f87 0%, #158079 100%); transform: translateY(-1px); box-shadow: 0 4px 16px rgba(34, 170, 161, 0.3); } .outrise-gate-form { text-align: left; } .outrise-gate-field { margin-bottom: 10px; } .outrise-gate-field input[type="text"], .outrise-gate-field input[type="email"] { width: 100%; padding: 10px 14px; border: 1px solid #d0d0d0; border-radius: 6px; font-size: 14px; font-family: 'Poppins', sans-serif; transition: border-color 0.2s; box-sizing: border-box; } .outrise-gate-field input:focus { outline: none; border-color: #22AAA1; box-shadow: 0 0 0 3px rgba(34, 170, 161, 0.1); } .outrise-gate-submit { width: 100%; padding: 12px; background: linear-gradient(135deg, #22AAA1 0%, #1a8f87 100%); color: white; border: none; border-radius: 8px; font-size: 15px; font-weight: 600; cursor: pointer; transition: all 0.2s ease; font-family: 'Poppins', sans-serif; } .outrise-gate-submit:disabled { background: #ccc; cursor: not-allowed; transform: none; box-shadow: none; } .outrise-gate-submit:not(:disabled):hover { background: linear-gradient(135deg, #1a8f87 0%, #158079 100%); transform: translateY(-1px); box-shadow: 0 4px 16px rgba(34, 170, 161, 0.3); } .outrise-gate-pdf-btn { display: inline-flex; align-items: center; justify-content: center; background: white; color: #22AAA1; border: 2px solid #22AAA1; border-radius: 8px; padding: 10px 24px; font-size: 14px; font-weight: 600; cursor: pointer; transition: all 0.2s ease; font-family: 'Poppins', sans-serif; } .outrise-gate-pdf-btn:hover { background: #22AAA1; color: white; } .outrise-gate-thankyou { animation: outrise-fadeIn 0.4s ease; } @keyframes outrise-fadeIn { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } } `; document.head.appendChild(style); } // ========================================================================= // INIT // ========================================================================= function init() { injectStyles(); // If user has already captured, don't gate if (hasUserCaptured()) { return; } // Wait for the calculator to render (it's in an HTML widget) const checkInterval = setInterval(function() { const root = getCalculatorRoot(); if (root && root.querySelector('.result-col.after')) { clearInterval(checkInterval); gateResults(); } }, 500); // Safety timeout - stop checking after 15 seconds setTimeout(function() { clearInterval(checkInterval); }, 15000); } // Run when DOM is ready if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', init); } else { // Small delay to ensure HTML widget has rendered setTimeout(init, 800); } })();