Microsoft 365 Plan Components
What is actually inside each plan. Tick the capabilities you need and see the cheapest plan that includes all of them, then compare Business Basic through E5 line by line.
Every plan, side by side
Monthly price per user on annual commitment. Ticks show what each plan includes.
Reading the plans
Business vs Enterprise
Business Basic, Standard and Premium are built for organizations up to 300 people. Office 365 and Microsoft 365 E-plans have no seat limit and add Windows Enterprise rights and larger mailboxes.
Office 365 vs Microsoft 365
Office 365 plans cover apps, mail and collaboration. Microsoft 365 plans add Intune, Entra ID and Windows, so devices and identities are managed and secured too.
Frontline plans
F3 is for people who share devices or work mostly on phones: web and mobile apps, small mailboxes, but full device management and Conditional Access.
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 }; })(); window.C2N_PLANS = { plans: [ ['bb', 'Business Basic', 'Microsoft 365 Business Basic'], ['bs', 'Business Standard', 'Microsoft 365 Business Standard'], ['bp', 'Business Premium', 'Microsoft 365 Business Premium'], ['f3', 'Microsoft 365 F3', 'Microsoft 365 F3'], ['o1', 'Office 365 E1', 'Office 365 E1'], ['o3', 'Office 365 E3', 'Office 365 E3'], ['e3', 'Microsoft 365 E3', 'Microsoft 365 E3'], ['e5', 'Microsoft 365 E5', 'Microsoft 365 E5']], groups: [ ['Apps and storage', [ ['webapps', 'Office web and mobile apps', { bb: 1, bs: 1, bp: 1, f3: 1, o1: 1, o3: 1, e3: 1, e5: 1 }], ['desktop', 'Desktop Office apps (Word, Excel, Outlook)', { bs: 1, bp: 1, o3: 1, e3: 1, e5: 1 }], ['mailbox', 'Mailbox size', { bb: '50 GB', bs: '50 GB', bp: '50 GB', f3: '2 GB', o1: '50 GB', o3: '100 GB', e3: '100 GB', e5: '100 GB' }], ['onedrive', 'OneDrive storage', { bb: '1 TB', bs: '1 TB', bp: '1 TB', f3: '2 GB', o1: '1 TB', o3: '1 TB+', e3: '1 TB+', e5: '1 TB+' }], ['seats', 'Seat limit', { bb: '300', bs: '300', bp: '300', f3: 'None', o1: 'None', o3: 'None', e3: 'None', e5: 'None' }]]], ['Identity and devices', [ ['p1', 'Conditional Access (Entra ID P1)', { bp: 1, f3: 1, e3: 1, e5: 1 }], ['p2', 'Risk-based access and PIM (Entra ID P2)', { e5: 1 }], ['intune', 'Device management (Intune)', { bp: 1, f3: 1, e3: 1, e5: 1 }], ['winent', 'Windows Enterprise rights', { e3: 1, e5: 1 }]]], ['Security', [ ['mde', 'Endpoint protection', { bp: 'Defender for Business', e3: 'Defender for Endpoint P1', e5: 'Defender for Endpoint P2' }], ['mdo', 'Email threat protection', { bp: 'Defender for Office P1', e5: 'Defender for Office P2' }], ['mdi', 'Identity threat detection (Defender for Identity)', { e5: 1 }], ['mca', 'Cloud app discovery (Defender for Cloud Apps)', { e5: 1 }]]], ['Compliance', [ ['labels', 'Sensitivity labels (manual)', { bp: 1, o3: 1, e3: 1, e5: 1 }], ['autolabel', 'Automatic labeling', { e5: 1 }], ['dlp', 'Data loss prevention (email and files)', { bp: 1, o3: 1, e3: 1, e5: 1 }], ['ediscovery', 'eDiscovery and litigation hold', { bp: 'Standard', o3: 'Standard', e3: 'Standard', e5: 'Premium' }], ['irm', 'Insider Risk Management', { e5: 1 }]]], ['Voice and analytics', [ ['phone', 'Teams Phone', { e5: 1 }], ['pbi', 'Power BI Pro', { e5: 1 }]]]] }; (function () { var P = {"Microsoft 365 Business Basic":{"c":[84,7.35,8.4]},"Microsoft 365 Business Standard":{"c":[168,14.7,16.8]},"Microsoft 365 Business Premium":{"c":[264,23.1,26.4]},"Microsoft 365 F3":{"c":[120,10.5,12]},"Office 365 E1":{"c":[120,10.5,12]},"Office 365 E3":{"c":[312,27.3,31.2]},"Microsoft 365 E3":{"c":[468,40.95,46.8]},"Microsoft 365 E5":{"c":[720,63,72]}}; var M = C2N_PLANS, f = document.getElementById('pc'), box = document.getElementById('pc-need'), $ = C2N.money; var FEATS = [], BIZ = { bb: 1, bs: 1, bp: 1 }; M.groups.forEach(function (g) { g[1].forEach(function (r) { if (['mailbox', 'onedrive', 'seats'].indexOf(r[0]) < 0) FEATS.push(r); }); }); function price(pl) { return P[pl[2]].c[0] / 12; } function cell(v) { return v === 1 ? '<span class="c2n-cx-ok">✓</span>' : v ? C2N.esc(v) : '<span style="color:#C9C3BA">—</span>'; } box.innerHTML = FEATS.map(function (r) { return '<label><input type="checkbox" data-k="' + r[0] + '"> ' + r[1] + '</label>'; }).join(''); box.addEventListener('input', function (e) { e.stopPropagation(); }); box.addEventListener('change', function (e) { e.stopPropagation(); f.need.value = [].filter.call(box.querySelectorAll('input'), function (c) { return c.checked; }).map(function (c) { return c.dataset.k; }).join(','); f.need.dispatchEvent(new Event('input', { bubbles: true })); }); document.getElementById('pc-matrix').innerHTML = '<tr><th>Capability</th>' + M.plans.map(function (p) { return '<th class="n">' + p[1] + '</th>'; }).join('') + '</tr>' + '<tr class="t"><td>Price per user / month</td>' + M.plans.map(function (p) { return '<td class="n">' + $(price(p), 2) + '</td>'; }).join('') + '</tr>' + M.groups.map(function (g) { return '<tr><th colspan="' + (M.plans.length + 1) + '">' + g[0] + '</th></tr>' + g[1].map(function (r) { return '<tr><td>' + r[1] + '</td>' + M.plans.map(function (p) { return '<td class="n">' + cell(r[2][p[0]]) + '</td>'; }).join('') + '</tr>'; }).join(''); }).join(''); C2N.mount(f, function (v) { var need = v.need ? v.need.split(',') : []; [].forEach.call(box.querySelectorAll('input'), function (c) { c.checked = need.indexOf(c.dataset.k) >= 0; }); var fits = M.plans.filter(function (p) { return (v.seats <= 300 || !BIZ[p[0]]) && need.every(function (k) { return FEATS.filter(function (r) { return r[0] === k; })[0][2][p[0]]; }); }).sort(function (a, b) { return price(a) - price(b); }); var top = fits[0], seats = Math.max(1, v.seats); C2N.render(document.getElementById('pc-out'), { title: 'Plan components', lead: top ? '<strong>' + top[1] + '</strong> is the cheapest plan that includes everything you ticked' + (need.length ? '' : ' (nothing ticked yet)') + ', at ' + $(price(top), 2) + ' per user per month.' : 'No single plan includes all of that. Start from E5 or ask us about add-ons.', kpis: top ? [['Cheapest fit', top[1], $(price(top), 2) + ' per user / month'], ['For ' + seats + ' seats', $(price(top) * seats), 'per month, ' + $(price(top) * seats * 12) + ' a year']] : null, head: ['Plans that fit', 'Per user / mo', seats + ' seats / mo'], rows: fits.length ? fits.slice(0, 4).map(function (p) { return [p[1], $(price(p), 2), $(price(p) * seats)]; }) : [['None', '', '']], note: 'Microsoft US list price, Commercial, annual commitment, current month. Summary of included services; the Microsoft Product Terms govern.', cta: ['Request a quote', '/tools/forms/?f=quote&items=' + encodeURIComponent(top ? seats + ' x ' + top[2] : 'Plan advice')] }); }); })();