.ir35-calc-container {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
max-width: 900px;
margin: 20px auto;
padding: 30px;
border: 1px solid #e1e4e8;
border-radius: 12px;
background-color: #ffffff;
box-shadow: 0 4px 20px rgba(0,0,0,0.08);
color: #333;
}
.ir35-calc-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 25px;
}
.ir35-input-section {
background: #f8f9fa;
padding: 20px;
border-radius: 8px;
}
.ir35-calc-container h2 {
margin-top: 0;
color: #1a2b49;
font-size: 24px;
border-bottom: 2px solid #0056b3;
padding-bottom: 10px;
margin-bottom: 20px;
}
.ir35-form-group {
margin-bottom: 15px;
}
.ir35-form-group label {
display: block;
font-weight: 600;
margin-bottom: 5px;
font-size: 14px;
}
.ir35-form-group input {
width: 100%;
padding: 10px;
border: 1px solid #ccc;
border-radius: 4px;
font-size: 16px;
box-sizing: border-box;
}
.ir35-calc-btn {
width: 100%;
background-color: #0056b3;
color: white;
padding: 15px;
border: none;
border-radius: 6px;
font-size: 18px;
font-weight: bold;
cursor: pointer;
transition: background-color 0.2s;
margin-top: 10px;
}
.ir35-calc-btn:hover {
background-color: #004494;
}
.ir35-results-section {
display: none;
margin-top: 25px;
padding: 20px;
border-radius: 8px;
background: #fff;
border: 1px solid #e1e4e8;
}
.comparison-table {
width: 100%;
border-collapse: collapse;
margin-top: 15px;
}
.comparison-table th {
background: #f1f4f8;
text-align: left;
padding: 12px;
border-bottom: 2px solid #dee2e6;
}
.comparison-table td {
padding: 12px;
border-bottom: 1px solid #eee;
}
.highlight-row {
background-color: #f0f7ff;
font-weight: bold;
}
.outside-text { color: #28a745; }
.inside-text { color: #dc3545; }
.ir35-article {
margin-top: 40px;
line-height: 1.6;
}
.ir35-article h3 {
color: #1a2b49;
margin-top: 25px;
}
@media (max-width: 600px) {
.ir35-calc-grid {
grid-template-columns: 1fr;
}
}
Contractor IR35 Rate Comparison Calculator
Annual Comparison Summary
| Metric |
Outside IR35 |
Inside IR35 |
| Gross Annual Revenue |
£0 |
£0 |
| Business Costs / Deductions |
£0 |
£0 |
| Total Tax Paid |
£0 |
£0 |
| Net Annual Take-Home |
£0 |
£0 |
| Monthly Take-Home |
£0 |
£0 |
Pro Tip: To match your Outside IR35 take-home while working Inside IR35, you would need an estimated day rate of £0.
How to Use the IR35 Rate Calculator
This tool is designed for UK contractors to understand the financial impact of the Off-Payroll Working rules (IR35). By entering your daily rate, the calculator compares the take-home pay between a Limited Company setup (Outside IR35) and an Umbrella Company setup (Inside IR35).
Input Parameters:
- Daily Rate: The gross amount agreed with the client or agency.
- Days/Weeks: Used to calculate the annual contract value. 230 days (46 weeks) is a standard conservative estimate allowing for holidays.
- Expenses: Only applicable Outside IR35 (e.g., equipment, professional insurance, software).
- Umbrella Margin: The fee charged by the payroll provider for Inside IR35 engagements.
Understanding the Logic
Outside IR35 Logic: We assume a tax-efficient strategy where the director takes a salary up to the Personal Allowance (£12,570) and the remainder as dividends. Calculation accounts for 19-25% Corporation Tax and current Dividend Tax rates.
Inside IR35 Logic: This follows the "deemed employee" model. The "Assignment Rate" must cover Employer National Insurance (13.8%), the Apprenticeship Levy (0.5%), and the Umbrella margin before arriving at the Gross Taxable Pay. Then, standard PAYE and Employee National Insurance are applied.
Example Comparison
If you have a day rate of £500 working 46 weeks a year:
- Outside IR35: Your annual revenue is £115,000. After accounting for corporation tax and dividend tax, your take-home pay is significantly higher because you are not subject to Employer NI.
- Inside IR35: Out of that same £115,000, nearly 14% is immediately diverted to Employer NI and the Levy. Your taxable gross is lower, and you pay full PAYE taxes.
Typically, a contractor needs a 25% to 35% higher day rate inside IR35 to achieve the same net take-home pay as an outside IR35 contract.
function calculateIR35() {
var dayRate = parseFloat(document.getElementById('dayRate').value) || 0;
var daysPerWeek = parseFloat(document.getElementById('daysPerWeek').value) || 0;
var weeksPerYear = parseFloat(document.getElementById('weeksPerYear').value) || 0;
var annualExpenses = (parseFloat(document.getElementById('expenses').value) || 0) * 12;
var umbrellaMargin = (parseFloat(document.getElementById('umbrellaMargin').value) || 0) * weeksPerYear;
var totalRevenue = dayRate * daysPerWeek * weeksPerYear;
if (totalRevenue 50000 ? 0.25 : 0.19;
var corpTax = outsideProfit * corpTaxRate;
var postTaxProfit = outsideProfit – corpTax;
// Dividend Tax (Basic 8.75%, Higher 33.75%)
var divAllowance = 500;
var basicRateLimit = 50270 – personalAllowance;
var dividendTax = 0;
var taxableDividends = postTaxProfit – divAllowance;
if (taxableDividends > 0) {
if (taxableDividends personalAllowance) {
var niUpper = 50270;
if (grossInside personalAllowance) {
if (grossInside <= 50270) {
payeTax = (grossInside – personalAllowance) * 0.20;
} else if (grossInside <= 125140) {
payeTax = (37700 * 0.20) + ((grossInside – 50270) * 0.40);
} else {
payeTax = (37700 * 0.20) + (74870 * 0.40) + ((grossInside – 125140) * 0.45);
}
}
var netInside = grossInside – employeeNI – payeTax;
// Update UI
document.getElementById('resultsArea').style.display = 'block';
document.getElementById('resGrossOutside').innerText = '£' + totalRevenue.toLocaleString();
document.getElementById('resGrossInside').innerText = '£' + totalRevenue.toLocaleString();
document.getElementById('resCostsOutside').innerText = '£' + (annualExpenses + corpTax).toLocaleString(undefined, {maximumFractionDigits:0});
document.getElementById('resCostsInside').innerText = '£' + (employerNI + apprLevy + umbrellaMargin).toLocaleString(undefined, {maximumFractionDigits:0});
document.getElementById('resTaxOutside').innerText = '£' + dividendTax.toLocaleString(undefined, {maximumFractionDigits:0});
document.getElementById('resTaxInside').innerText = '£' + (payeTax + employeeNI).toLocaleString(undefined, {maximumFractionDigits:0});
document.getElementById('resNetOutside').innerText = '£' + netOutside.toLocaleString(undefined, {maximumFractionDigits:0});
document.getElementById('resNetInside').innerText = '£' + netInside.toLocaleString(undefined, {maximumFractionDigits:0});
document.getElementById('resMonthlyOutside').innerText = '£' + (netOutside / 12).toLocaleString(undefined, {maximumFractionDigits:0});
document.getElementById('resMonthlyInside').innerText = '£' + (netInside / 12).toLocaleString(undefined, {maximumFractionDigits:0});
// Required Uplift Calculation (Estimated)
var ratio = netOutside / netInside;
var upliftedRate = dayRate * ratio;
document.getElementById('requiredRate').innerText = '£' + Math.round(upliftedRate).toLocaleString();
window.scrollTo({
top: document.getElementById('resultsArea').offsetTop – 50,
behavior: 'smooth'
});
}