tools/license-waste-finder

How many licences are you paying for that nobody uses?

Read-only look at your Microsoft 365 licensing against reality: licensed accounts that haven't signed in, disabled accounts still holding licences, and purchased seats never assigned to anyone — with an indicative annual dollar figure on the waste. Every centavo spent should work. Rendered in your browser; nothing sent to us.

license-waste-finder --sign-in
Delegated read-only permissions: User.Read.All · AuditLog.Read.All · Organization.Read.All Only hosts contacted: login.microsoftonline.com · graph.microsoft.com Verify it: DevTools → Network while this runs

Sign in with a work account holding a reader role (Global Reader covers all three reads). Sign-in activity via Graph requires the tenant to have at least one Entra ID P1 licence.

unassigned purchased seats

skupurchasedassignedunassignedest. waste /yr

licensed but inactive or disabled top offenders

accountstatelast sign-inlicencesest. /yr

Reclaiming licences is the easy half — the fixed-price assessment also finds the features you're paying for but never turned on → ./view pricing

questions before you sign in

What exactly am I consenting to?
Three delegated, read-only Microsoft Graph permissions: User.Read.All (user list, assigned licences, sign-in activity), AuditLog.Read.All (required by Graph for the sign-in activity field), and Organization.Read.All (your subscribed SKUs — names, purchased vs assigned counts). None of them can change anything in your tenant.
Are the dollar figures real?
They're indicative — approximate AUD list prices for common SKUs, annual commitment, ex GST. Your CSP pricing will differ. SKUs we don't have a price for count in seat totals but show "—" in dollars, so the true waste figure is usually higher than shown. Verify against your actual invoice before acting.
How do I verify nothing leaves my browser?
Open DevTools (F12) → Network, then run the tool. You'll see login.microsoftonline.com and graph.microsoft.com — nothing else. No calls to us, no analytics. User lists and licence data render locally and vanish when you close the tab.
What are the caveats on "inactive"?
"Inactive" means no interactive (human) sign-in in the window. "Bg auth only" means the account had token or background authentication but no human sign-in — sometimes a real user on a cached mobile session, often a provisioned-but-unused account; verify before reclaiming. Blank last sign-in can mean never signed in or before the log horizon. Treat the list as a review queue, not a deletion script.
How do I revoke access afterwards?
Entra admin centre → Enterprise applications → Sentavo Tools → Delete. The session token dies with this tab.

Reads /users (with signInActivity), /subscribedSkus via Microsoft Graph, delegated read-only. Caps at 5,000 users and notes truncation. Pricing indicative — see FAQ. Nothing is transmitted or stored by this site.