E5 vs E3 + Add-ons Calculator
E5 is E3 plus a bundle. If you only need two or three of the extras, buying them on top of E3 can cost less. Tick the capabilities you would actually use and see which route wins, per user and for your headcount.
What E5 adds over E3
Identity: Entra ID P2
Risk-based Conditional Access, Identity Protection and Privileged Identity Management. E3 includes Entra ID P1 only.
Security: Defender for Endpoint P2, Office 365 P2, Identity and Cloud Apps
Full endpoint detection and response, automated investigation of email attacks, on-premises AD threat detection, and shadow-IT discovery. E3 includes Defender for Endpoint P1.
Compliance: Purview E5 features
Automatic sensitivity labeling, eDiscovery (Premium) and Audit (Premium), and Insider Risk Management.
Voice and analytics: Teams Phone and Power BI Pro
E5 includes the Teams Phone license (calling plans are still extra) and Power BI Pro for every user.
window.C2N = (function () { function esc(s) { return String(s).replace(/[&<>"]/g, function (c) { return { '&': '&', '<': '<', '>': '>', '"': '"' }[c]; }); } function fire(el) { el.dispatchEvent(new Event('input', { bubbles: true })); el.dispatchEvent(new Event('change', { bubbles: true })); } function enhance(form) { [].forEach.call(form.querySelectorAll('select[data-seg]'), function (sel) { var seg = document.createElement('div'); seg.className = 'c2n-seg'; seg.setAttribute('role', 'radiogroup'); seg.style.gridTemplateColumns = 'repeat(' + Math.min(sel.options.length, +sel.dataset.seg || sel.options.length) + ',1fr)'; [].forEach.call(sel.options, function (o) { var b = document.createElement('button'); b.type = 'button'; b.textContent = o.textContent; b.dataset.v = o.value; b.setAttribute('role', 'radio'); b.addEventListener('click', function () { sel.value = o.value; sync(form); fire(sel); }); seg.appendChild(b); }); sel.hidden = true; sel.parentNode.insertBefore(seg, sel.nextSibling); }); [].forEach.call(form.querySelectorAll('input[data-range]'), function (num) { var r = num.dataset.range.split(','), rg = document.createElement('input'); rg.type = 'range'; rg.min = r[0]; rg.max = r[1]; rg.step = r[2] || 1; rg.className = 'c2n-range'; rg.setAttribute('aria-label', num.name); rg.addEventListener('input', function (e) { e.stopPropagation(); num.value = rg.value; fire(num); }); num.parentNode.appendChild(rg); }); } function sync(form) { [].forEach.call(form.querySelectorAll('select[data-seg]'), function (sel) { [].forEach.call(sel.nextSibling.children, function (b) { var on = b.dataset.v === sel.value; b.classList.toggle('on', on); b.setAttribute('aria-checked', on); }); }); [].forEach.call(form.querySelectorAll('input[data-range]'), function (num) { num.parentNode.querySelector('.c2n-range').value = num.value; }); } function render(el, r) { var h = '<div class="c2n-cx-bar"><span>Results · ' + esc(r.title) + (r.unit === undefined ? ' · USD' : r.unit) + '</span><span class="c2n-cx-live">Live</span></div>'; if (r.lead) h += '<p class="c2n-cx-lead">' + r.lead + '</p>'; if (r.kpis) h += '<div class="c2n-cx-kpis">' + r.kpis.map(function (k, i) { return '<div class="c2n-cx-kpi' + (i ? '' : ' on') + '"><small>' + esc(k[0]) + '</small><b>' + k[1] + '</b><span>' + (k[2] || '') + '</span></div>'; }).join('') + '</div>'; if (r.rows) { var cell = function (tag) { return function (c, i) { return '<' + tag + (i ? ' class="n"' : '') + '>' + c + '</' + tag + '>'; }; }; h += '<div class="c2n-cx-scroll"><table class="c2n-cx-table">' + (r.head ? '<tr>' + r.head.map(cell('th')).join('') + '</tr>' : '') + r.rows.map(function (row) { return '<tr>' + row.map(cell('td')).join('') + '</tr>'; }).join('') + (r.total ? '<tr class="t">' + r.total.map(cell('td')).join('') + '</tr>' : '') + '</table></div>'; } h += '<div class="c2n-cx-foot"><p>' + (r.note || '') + '</p>' + (r.cta ? '<a class="c2n-cx-btn" href="' + esc(r.cta[1]) + '">' + esc(r.cta[0]) + '</a>' : '') + '</div>'; el.innerHTML = h; } function money(n, d) { return (n < 0 ? '-$' : '$') + Math.abs(n).toLocaleString('en-US', { minimumFractionDigits: d || 0, maximumFractionDigits: d || 0 }); } function values(form) { var v = {}; [].forEach.call(form.elements, function (el) { if (el.name) v[el.name] = el.type === 'number' ? Math.max(0, +el.value || 0) : el.value; }); return v; } function restore(form) { var q = new URLSearchParams(location.search); [].forEach.call(form.elements, function (el) { if (el.name) { if (q.has(el.name)) el.value = q.get(el.name); } }); } function save(form) { var o = {}; [].forEach.call(form.elements, function (el) { if (el.name) o[el.name] = el.value; }); history.replaceState(null, '', '?' + new URLSearchParams(o)); } function mount(form, calc) { enhance(form); restore(form); var run = function () { sync(form); calc(values(form)); save(form); }; form.addEventListener('input', run); form.addEventListener('submit', function (e) { e.preventDefault(); }); run(); } return { mount: mount, render: render, money: money, esc: esc, sync: sync, enhance: enhance }; })(); (function () { var P = {"Microsoft 365 E3":{"c":[468,40.95,46.8]},"Microsoft 365 E3 (Non-Profit Pricing)":{"n":[117,10.24,11.7]},"Microsoft 365 E5":{"c":[720,63,72]},"Microsoft 365 E5 (Non-Profit Pricing)":{"n":[288,25.2,28.8]},"Microsoft Entra ID P2":{"c":[120,10.5,12]},"Microsoft Entra ID P2 (Non-Profit Pricing)":{"n":[48,4.2,4.8]},"Microsoft Defender for Endpoint P2":{"c":[62.4,5.46,6.24]},"Microsoft Defender for Endpoint P2 (Non-Profit Pricing)":{"n":[25.2,2.21,2.52]},"Microsoft Defender for Office 365 (Plan 2)":{"c":[60,5.25,6]},"Microsoft Defender for Office 365 (Plan 2) (Non-Profit Pricing)":{"n":[24,2.1,2.4]},"Microsoft Defender for Identity":{"c":[66,5.78,6.6]},"Microsoft Defender for Identity (Non-Profit Pricing)":{"n":[26.4,2.31,2.64]},"Microsoft Defender for Cloud Apps":{"c":[42,3.68,4.2]},"Microsoft Defender for Cloud Apps (Non-Profit Pricing)":{"n":[10.56,0.92,1.06]},"Microsoft 365 E5 Information Protection and Governance":{"c":[84,7.35,8.4]},"Microsoft 365 E5 Information Protection and Governance (Non-Profit Pricing)":{"n":[33.6,2.94,3.36]},"Microsoft 365 E5 eDiscovery and Audit":{"c":[72,6.3,7.2]},"Microsoft 365 E5 eDiscovery and Audit (Non-Profit Pricing)":{"n":[28.8,2.52,2.88]},"Microsoft 365 E5 Insider Risk Management":{"c":[72,6.3,7.2]},"Microsoft 365 E5 Insider Risk Management (Non-Profit Pricing)":{"n":[28.8,2.52,2.88]},"Microsoft Teams Phone Standard":{"c":[120,10.5,12]},"Microsoft Teams Phone Standard (Non-Profit Pricing)":{"n":[48,4.2,4.8]},"Power BI Pro":{"c":[168,14.7,16.8]},"Power BI Pro (Non-Profit Pricing)":{"n":[50.4,4.41,5.04]}}; var ADDS = [['p2', 'Entra ID P2', 'Microsoft Entra ID P2'], ['mde', 'Defender for Endpoint P2', 'Microsoft Defender for Endpoint P2'], ['mdo', 'Defender for Office 365 P2', 'Microsoft Defender for Office 365 (Plan 2)'], ['mdi', 'Defender for Identity', 'Microsoft Defender for Identity'], ['mca', 'Defender for Cloud Apps', 'Microsoft Defender for Cloud Apps'], ['ipg', 'Purview Information Protection', 'Microsoft 365 E5 Information Protection and Governance'], ['edi', 'Purview eDiscovery and Audit', 'Microsoft 365 E5 eDiscovery and Audit'], ['irm', 'Purview Insider Risk', 'Microsoft 365 E5 Insider Risk Management'], ['tp', 'Teams Phone Standard', 'Microsoft Teams Phone Standard'], ['pbi', 'Power BI Pro', 'Power BI Pro']]; var f = document.getElementById('e5'), box = document.getElementById('e5-adds'), $ = C2N.money; function mo(name, seg) { var r = (P[seg === 'n' ? name + ' (Non-Profit Pricing)' : name] || {})[seg]; return r ? r[0] / 12 : 0; } box.innerHTML = ADDS.map(function (a) { return '<label><input type="checkbox" data-k="' + a[0] + '"> ' + a[1] + '<em></em></label>'; }).join(''); box.addEventListener('input', function (e) { e.stopPropagation(); }); box.addEventListener('change', function (e) { e.stopPropagation(); f.adds.value = [].filter.call(box.querySelectorAll('input'), function (c) { return c.checked; }).map(function (c) { return c.dataset.k; }).join(','); f.adds.dispatchEvent(new Event('input', { bubbles: true })); }); C2N.mount(f, function (v) { var picked = v.adds ? v.adds.split(',') : [], users = Math.max(1, v.users); var e3 = mo('Microsoft 365 E3', v.seg), e5 = mo('Microsoft 365 E5', v.seg), total = e3, rows = [['Microsoft 365 E3', $(e3, 2), $(e3 * users * 12)]]; ADDS.forEach(function (a, i) { var p = mo(a[2], v.seg), c = box.querySelectorAll('input')[i]; c.checked = picked.indexOf(a[0]) >= 0; c.parentNode.querySelector('em').textContent = $(p, 2); if (c.checked) { total += p; rows.push(['+ ' + a[1], $(p, 2), $(p * users * 12)]); } }); var e3wins = total <= e5, diff = Math.abs(e5 - total) * users * 12; C2N.render(document.getElementById('e5-out'), { title: 'E5 vs E3', lead: '<strong>' + (e3wins ? 'E3 + add-ons' : 'E5') + ' costs less</strong> by ' + $(diff) + ' a year for ' + users + ' users. ' + (e3wins ? 'Each extra capability you tick moves you closer to E5.' : 'At this point E5 also brings every other capability on the list.'), kpis: [['E3 + add-ons', $(total, 2), 'per user per month'], ['Microsoft 365 E5', $(e5, 2), 'per user per month']], head: ['License', 'Per user / mo', users + ' users / yr'], rows: rows, total: ['E3 route vs E5 (' + $(e5 * users * 12) + ')', $(total, 2), $(total * users * 12)], note: 'Standalone add-ons at Microsoft US list price, annual commitment, current month. Bundles such as E5 Security can change the math; ask us to price them.', cta: ['Request a quote', '/tools/forms/?f=quote&items=' + encodeURIComponent(users + ' users: ' + (e3wins ? 'Microsoft 365 E3 + ' + ADDS.filter(function (a) { return picked.indexOf(a[0]) >= 0; }).map(function (a) { return a[1]; }).join(', ') : 'Microsoft 365 E5'))] }); }); })();