Windows 365 vs Azure Virtual Desktop
Fixed price per person, or pay for the Azure you use. Windows 365 is a Cloud PC at a flat monthly price. Azure Virtual Desktop uses license rights you probably already own plus Azure compute you size yourself. Compare them per user, monthly and yearly.
Which fits
Windows 365
One Cloud PC per person, always on, managed in Intune like a laptop. Predictable price, no Azure skills needed. Best for steady, full-time users.
Azure Virtual Desktop
Many users share session hosts that scale up and down with demand. Cheaper at scale and for shift or part-time users, but you design, patch and tune the environment.
Licensing you need either way
Users need a qualifying Microsoft 365 plan (for example Business Premium, E3 or E5) for AVD access rights and for Windows 365 Enterprise. Windows 365 Business works with any Microsoft 365 business plan.
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 = {"Windows 365 Business 2 vCPU, 4 GB, 128 GB":{"c":[302.4,26.46,28]},"Windows 365 Business 2 vCPU, 8 GB, 128 GB":{"c":[388.8,34.02,36]},"Windows 365 Business 4 vCPU, 16 GB, 128 GB":{"c":[604.8,52.92,56]},"Windows 365 Business 8 vCPU, 32 GB, 128 GB":{"c":[1097.28,96.01,101.6]},"Windows 365 Enterprise 2 vCPU, 4 GB, 128 GB":{"c":[334.8,29.3,31]},"Windows 365 Enterprise 2 vCPU, 8 GB, 128 GB":{"c":[442.8,38.75,41]},"Windows 365 Enterprise 4 vCPU, 16 GB, 128 GB":{"c":[712.8,62.37,66]},"Windows 365 Enterprise 8 vCPU, 32 GB, 128 GB":{"c":[1328.4,116.24,123]}}; var $ = C2N.money; C2N.mount(document.getElementById('wa'), function (v) { var users = Math.max(1, v.users), w365 = P['Windows 365 ' + v.ed + ' ' + v.size].c[0] / 12; var mgmt = v.hours * v.rate, avd = users * (v.compute + v.storage) + mgmt, avdPer = avd / users, w365All = w365 * users; var winner = w365All <= avd ? 'Windows 365' : 'Azure Virtual Desktop'; C2N.render(document.getElementById('wa-out'), { title: 'Windows 365 vs AVD', lead: '<strong>' + winner + ' costs less</strong> for ' + users + ' users, by ' + $(Math.abs(w365All - avd)) + ' a month (' + $(Math.abs(w365All - avd) * 12) + ' a year).', kpis: [['Windows 365, per user', $(w365, 2), $(w365All) + ' a month'], ['AVD, per user', $(avdPer, 2), $(avd) + ' a month']], head: ['Cost line', 'Windows 365', 'AVD'], rows: [['License / Cloud PC per user', $(w365, 2), '$0.00'], ['Azure compute per user', 'included', $(v.compute, 2)], ['Storage per user', 'included', $(v.storage, 2)], ['Management (' + v.hours + ' h / month)', 'Intune, as today', $(mgmt)], ['Monthly total', $(w365All), $(avd)]], total: ['Per year', $(w365All * 12), $(avd * 12)], note: 'Windows 365 at Microsoft US list price, annual commitment, current month. AVD figures are your estimates; Azure compute varies by region, size and hours.', cta: ['Request a quote', '/tools/forms/?f=quote&items=' + encodeURIComponent(users + ' users: Windows 365 ' + v.ed + ' ' + v.size + ' vs Azure Virtual Desktop')] }); }); })();