Microsoft 365 groups are created everywhere. Every new Team, Planner plan, shared mailbox experience, Viva Engage community, or collaboration workspace often creates another group behind the scenes. At first, this isn’t a problem. But after months or years, many organizations discover they have hundreds of Microsoft 365 Groups that nobody uses anymore.
Some groups haven’t seen activity in years. Others belong to employees who left the company long ago. The challenge isn’t deleting groups. It’s confidently identifying which ones are genuinely no longer needed. This guide shows you how to identify unused Microsoft 365 Groups and safely remove unnecessary ones.
Why Unused Microsoft 365 Groups Are a Problem
Microsoft 365 Groups are more than simple distribution lists. Every group can provide access to multiple Microsoft 365 workloads, including: Microsoft Teams, SharePoint Online, Outlook shared mailbox, Planner, OneNote, and Viva Engage. When groups are abandoned, all of these connected resources often remain active as well.
Over time this creates several problems:
- Thousands of inactive collaboration workspaces clutter your tenant.
- Users struggle to find the correct Teams or SharePoint sites.
- Former project data remains accessible long after it should have been archived.
- Orphaned groups continue existing without anyone responsible for managing them.
- Administrators spend more time managing unnecessary objects.
Without regular reviews, group sprawl becomes inevitable.
How to Find Unused Groups in Microsoft 365
Unfortunately, Microsoft doesn’t provide a dedicated report that simply answers the question: “Which Microsoft 365 Groups are no longer being used?”
Instead, administrators must piece together information from several different locations, including Microsoft Teams activity, SharePoint usage, Outlook, group ownership, and Microsoft Graph. This fragmented approach makes it difficult to confidently determine whether a group is truly inactive.
There are two common approaches administrators use.
Method 1: Using Microsoft 365 Admin Center
The Microsoft 365 Admin Center provides usage reports that can offer a general overview of group activity.
- Sign in to the Microsoft 365 admin center.
- Go to Reports > Usage and select Microsoft 365 apps.
- Select the Groups activity tab. Review metrics for Total groups, Active groups, and Last activity date.
These reports can help identify groups that appear inactive, but they don’t provide the full picture. For example, the reports don’t clearly indicate whether a group still has active owners, whether its membership has been maintained, or whether connected workloads like SharePoint or Planner are still being used.
For smaller environments this may be manageable, but in larger organizations with hundreds or thousands of groups, the process quickly becomes time-consuming. Because there’s no single “Unused Groups” report, many organizations postpone cleanup indefinitely simply because the risk of accidentally deleting an active collaboration workspace feels too high.
Method 2: Use PowerShell to Find Empty Groups
To bypass the limitations of the admin interface, we can turn to the Microsoft Graph PowerShell SDK. By combining multiple administrative signals, we can accurately pinpoint which groups are abandoned or inactive.
First, connect to Microsoft Graph with permissions to read group and directory information. The following script retrieves every Microsoft 365 Group in the tenant, determines whether it has an owner, checks its renewal date, and assigns a status that helps identify potentially abandoned groups.
# 1. Connect fresh (just to be safe)
Connect-MgGraph -Scopes "Group.Read.All", "Directory.Read.All"
# 2. Set up variables
$180DaysAgo = (Get-Date).AddDays(-180)
$GroupReport = @()
Write-Host "Fetching all groups from your tenant..." -ForegroundColor Cyan
# We grab the groups first without any upfront filtering to prevent data loss
$AllGroups = Get-MgGroup -All
Write-Host "Analysing group details..." -ForegroundColor Cyan
foreach ($Group in $AllGroups) {
# Check if it is a Microsoft 365 Group (Unified) using a safer match rule
$IsM365Group = $Group.GroupTypes -match "Unified"
if (-not $IsM365Group) {
continue # Skip Security Groups or Distribution Lists
}
# Count the owners safely
$OwnerCount = 0
try {
$OwnerCount = (Get-MgGroupOwner -GroupId $Group.Id -ErrorAction SilentlyContinue).Count
} catch {
$OwnerCount = 0
}
# Figure out the group status safely
$Status = "Active"
# If the date is missing or blank, we flag it for safety
if ($null -eq $Group.RenewedDateTime) {
$Status = "Unknown Activity (No Date Tracked)"
} elseif ($Group.RenewedDateTime -lt $180DaysAgo) {
$Status = "Inactive (Over 180 Days)"
}
if ($OwnerCount -eq 0) {
$Status = "Orphaned (No Owner)"
}
if (($null -ne $Group.RenewedDateTime) -and ($Group.RenewedDateTime -lt $180DaysAgo) -and ($OwnerCount -eq 0)) {
$Status = "Critical: Inactive & Orphaned"
}
# Put the data together
$GroupData = [PSCustomObject]@{
GroupName = $Group.DisplayName
GroupId = $Group.Id
CreatedDate = $Group.CreatedDateTime
LastRenewedDate = $Group.RenewedDateTime
OwnerCount = $OwnerCount
Status = $Status
}
$GroupReport += $GroupData
}
# 3. Save the file to your Desktop
$ReportPath = "$env:USERPROFILE\Desktop\M365_Group_Sprawl_Report.csv"
$GroupReport | Export-Csv -Path $ReportPath -NoTypeInformation
Write-Host "Success! Your sprawl report is saved to: $ReportPath" -ForegroundColor Green
The exported report gives administrators a much clearer overview of which groups deserve attention. Rather than immediately deleting anything, it provides a shortlist of groups that can be reviewed with business owners before cleanup begins.
Export Unused Microsoft Groups Report
The generated CSV includes several useful properties that help assess whether a group is still relevant.
Group Name identifies the Microsoft 365 Group.
Created Date shows how long the group has existed.
Last Renewed Date indicates the most recent renewal activity recorded for the group.
Owner Count reveals whether anyone is still responsible for managing the group.
Status summarizes the overall health of the group using categories such as Active, Inactive, Orphaned, or Critical.
It’s worth remembering that an inactive group isn’t automatically safe to delete. Some groups support annual events, compliance requirements, or long-running projects that naturally have long periods of inactivity. Likewise, renewal dates don’t always reflect actual user activity across every connected workload.
Instead of treating the report as a deletion list, think of it as a governance report. It helps narrow thousands of groups down to a manageable list that can be reviewed with department owners before any cleanup takes place!