Calculator here:

#calculator-container { max-width: 600px; margin: 20px auto; } #calculator-loading { text-align: center; padding: 20px; color: #666; background: #f8f9fa; border-radius: 4px; margin-bottom: 20px; } .refresh-hint { display: none; margin-top: 10px; padding: 8px; background-color: #fff3cd; border: 1px solid #ffeeba; border-radius: 4px; color: #856404; } .show-refresh .refresh-hint { display: block; } #salary-calculator { background: white; border-radius: 4px; box-shadow: 0 1px 3px rgba(0,0,0,0.1); padding: 30px; display: none; } #salary-calculator.loaded { display: block; } #salary-calculator h2 { text-align: center !important; color: #262626 !important; margin-bottom: 20px !important; font-size: 32px !important; font-weight: 700 !important; border: none !important; padding: 0 !important; line-height: 1.2 !important; } #salary-calculator .input-group { margin-bottom: 15px !important; } #salary-calculator label { display: block !important; margin-bottom: 5px !important; color: #555 !important; font-size: 14px !important; line-height: 1.4 !important; } #salary-calculator input[type=”number”], #salary-calculator select { width: 100% !important; padding: 12px !important; border: 1px solid #e5e5e5 !important; border-radius: 4px !important; font-size: 16px !important; box-sizing: border-box !important; transition: border-color 0.2s !important; background: white !important; } #salary-calculator input[type=”number”]:focus, #salary-calculator select:focus { outline: none !important; border-color: #00bfa5 !important; } #salary-calculator input[type=”number”]:hover, #salary-calculator select:hover { border-color: #00bfa5 !important; } #salary-calculator .results-panel { margin: 20px 0 !important; padding: 20px !important; background-color: #f7f7f7 !important; border-radius: 4px !important; border: 1px solid #e5e5e5 !important; } #salary-calculator .results-grid { display: flex !important; justify-content: space-between !important; gap: 20px !important; } #salary-calculator .result-label { color: #555 !important; font-size: 14px !important; margin-bottom: 5px !important; } #salary-calculator .result-value { font-size: 24px !important; font-weight: bold !important; color: #333 !important; } #salary-calculator .result-value.net { color: #00bfa5 !important; } #salary-calculator .projection-section { margin-top: 30px !important; } #salary-calculator h3 { color: #333 !important; margin-bottom: 15px !important; font-size: 18px !important; font-weight: 600 !important; border: none !important; padding: 0 !important; line-height: 1.2 !important; } #salary-calculator table { width: 100% !important; border-collapse: collapse !important; text-align: left !important; margin: 0 !important; background: none !important; } #salary-calculator th { padding: 12px !important; border-bottom: 2px solid #ddd !important; font-size: 14px !important; background-color: #f7f7f7 !important; font-weight: 600 !important; text-align: left !important; } #salary-calculator td { padding: 12px !important; border-bottom: 1px solid #ddd !important; font-size: 14px !important; background: none !important; } #salary-calculator th:not(:first-child), #salary-calculator td:not(:first-child) { text-align: right !important; } #salary-calculator .text-success { color: #00bfa5 !important; } #salary-calculator .text-danger { color: #f44336 !important; } #salary-calculator .footnote { margin-top: 10px !important; font-size: 12px !important; color: #666 !important; line-height: 1.4 !important; }
Loading calculator…
If the calculator doesn’t load within a few seconds, please refresh the page.

Here’s how much you might earn

London (GBP) Other UK Locations (GBP)
Your Gross Salary:
3,541.47 GBP
Your Take-Home Pay:
2,833.18 GBP

Your Growth Potential Over 6 Years

Year Gross Net Experience Bonus
* Net salary is an estimate based on tax regulations as of 2024. It doesn’t include additional benefits or allowances you may receive. Projections include an estimated annual inflation rate of 2.5%. This calculator gives you a good idea of potential earnings, but the actual offer may vary based on your specific skills and experience.
(function() { // Country-specific data for UK only const countryData = { ‘uk_lon’: { baseSalary: 3541.47, currency: ‘GBP’, taxRates: { zusRetirement: 0.12, zusDisability: 0.0, zusSickness: 0.0, healthInsurance: 0.0, taxRate1: 0.20, taxRate2: 0.40, annualTaxThreshold: 50270, monthlyTaxFreeReduction: 1047.50/12 } }, ‘uk_other’: { baseSalary: 3079.54, currency: ‘GBP’, taxRates: { zusRetirement: 0.12, zusDisability: 0.0, zusSickness: 0.0, healthInsurance: 0.0, taxRate1: 0.20, taxRate2: 0.40, annualTaxThreshold: 50270, monthlyTaxFreeReduction: 1047.50/12 } } }; // Global constants const EXTERNAL_RATE = 0.03; const INFLATION_RATE = 0.025; function calculateNetSalary(grossMonthly, countryCode) { const taxRates = countryData[countryCode].taxRates; const annualGross = grossMonthly * 12; // Social security contributions (equivalent to ZUS in Poland) const socialBase = grossMonthly; const retirementContribution = socialBase * taxRates.zusRetirement; const disabilityContribution = socialBase * taxRates.zusDisability; const sicknessContribution = socialBase * taxRates.zusSickness; const totalSocialContributions = retirementContribution + disabilityContribution + sicknessContribution; // Health insurance const healthBase = grossMonthly – totalSocialContributions; const healthInsurance = healthBase * taxRates.healthInsurance; // Tax calculation let taxBase = 0; let deductionRate = 0.99; // Default work-related expense rate // UK uses personal allowance differently deductionRate = 1.0; taxBase = Math.round((grossMonthly – totalSocialContributions) * deductionRate); // Tax calculation depending on country type let tax = 0; // Progressive tax if (annualGross 0) { tax -= taxRates.monthlyTaxFreeReduction; } } else { const monthlyThreshold = taxRates.annualTaxThreshold / 12; tax = (monthlyThreshold * taxRates.taxRate1) + ((taxBase – monthlyThreshold) * taxRates.taxRate2); if (taxRates.monthlyTaxFreeReduction > 0) { tax -= taxRates.monthlyTaxFreeReduction; } } // Ensure tax isn’t negative tax = Math.max(0, tax); // Calculate net salary const netSalary = grossMonthly – totalSocialContributions – healthInsurance – tax; return Math.round(netSalary * 100) / 100; } function calculateSalaryForYear(externalYears, internalYears, countryCode) { const baseCountrySalary = countryData[countryCode].baseSalary; // Calculate base with inflation const inflatedBase = baseCountrySalary * Math.pow(1 + INFLATION_RATE, internalYears); // Calculate external experience bonus (3% per year) const externalBonus = externalYears * EXTERNAL_RATE; // Calculate cumulative internal bonus let internalBonus = 0; for (let year = 0; year < internalYears; year++) { if (year < 5) { internalBonus += 0.07; // First 5 years: 7% each } else if (year < 10) { internalBonus += 0.05; // Next 5 years: 5% each } else if (year < 15) { internalBonus += 0.03; // Next 5 years: 3% each } else { internalBonus += 0.02; // After that: 2% each } } const totalMultiplier = 1 + externalBonus + internalBonus; return inflatedBase * totalMultiplier; } function formatMoney(amount, currency) { let formattedValue = amount.toFixed(2).replace(/\B(?=(\d{3})+(?!\d))/g, ","); return `${formattedValue} ${currency}`; } function updateSalary() { const externalYears = Math.max(0, parseInt(document.getElementById('external-years').value) || 0); const countryCode = document.getElementById('location').value; const currency = countryData[countryCode].currency; // Update starting salary const startingSalaryGross = calculateSalaryForYear(externalYears, 0, countryCode); const startingSalaryNet = calculateNetSalary(startingSalaryGross, countryCode); document.getElementById('result-gross').textContent = formatMoney(startingSalaryGross, currency); document.getElementById('result-net').textContent = formatMoney(startingSalaryNet, currency); // Generate projection table let tableHTML = ''; // Calculate base salary without any bonuses const baseGrossSalary = countryData[countryCode].baseSalary; for (let year = 0; year <= 6; year++) { const grossSalary = calculateSalaryForYear(externalYears, year, countryCode); const netSalary = calculateNetSalary(grossSalary, countryCode); // Calculate the same salary but without inflation to isolate the experience bonus const inflatedBase = baseGrossSalary * Math.pow(1 + INFLATION_RATE, year); const experienceBonus = ((grossSalary – inflatedBase) / inflatedBase) * 100; tableHTML += ` Year ${year} ${formatMoney(grossSalary, currency)} ${formatMoney(netSalary, currency)} ${experienceBonus === 0 ? ‘-‘ : ‘+’ + experienceBonus.toFixed(1) + ‘%’} `; } document.getElementById(‘projection-table’).innerHTML = tableHTML; } // Initialize the calculator function initializeCalculator() { const externalYearsInput = document.getElementById(‘external-years’); const locationSelect = document.getElementById(‘location’); const calculatorElement = document.getElementById(‘salary-calculator’); const loadingElement = document.getElementById(‘calculator-loading’); if (externalYearsInput && locationSelect && calculatorElement && loadingElement) { // Hide loading, show calculator loadingElement.style.display = ‘none’; calculatorElement.classList.add(‘loaded’); // Set up event listeners externalYearsInput.addEventListener(‘input’, updateSalary); locationSelect.addEventListener(‘change’, updateSalary); // Initial calculation updateSalary(); return true; } return false; } // Try to initialize immediately if (!initializeCalculator()) { // If initial attempt fails, retry a few times let attempts = 0; const maxAttempts = 5; const retryInterval = setInterval(() => { attempts++; if (initializeCalculator() || attempts >= maxAttempts) { clearInterval(retryInterval); if (attempts >= maxAttempts) { // Show refresh hint if all attempts fail const loadingElement = document.getElementById(‘calculator-loading’); if (loadingElement) { loadingElement.classList.add(‘show-refresh’); } } } }, 1000); } })();

End of calculator πŸŽ‰

Stay updated

Stay up-to-date with us and join 403 people who care about animals in the farming industry.

Open Cages

UK Charity