To find mailboxes on litigation hold in Exchange Online, read each mailbox's LitigationHoldEnabled property with Get-EXOMailbox and keep the ones where it is true. That finds litigation hold only: a mailbox can also be held by an eDiscovery hold, a retention policy or a retention label, and inactive mailboxes are not returned unless you ask for them.
| Method | Best fit |
|---|---|
| PowerShell | A CSV of every mailbox on litigation hold in 1 tenant, with who set the hold and when. |
| Admin centre | Checking whether 1 person's mailbox is on litigation hold. |
| Altivane | Recommended for reviewing holds across every mailbox, with the other holds beside litigation hold and a workbook to keep. |
Before you start
Use an account in the Organization Management, Recipient Management or View-Only Management role group. A mailbox needs an Exchange Online Plan 2 licence, or Plan 1 with an Exchange Online Archiving licence, to be placed on litigation hold.
The script reads settings as Exchange holds them when it runs, so the CSV is a snapshot, and Microsoft says a new hold can take up to 240 minutes to take effect. Inactive mailboxes, which a hold keeps after their account was deleted, are left out unless you add a switch. The examples read and export and change nothing.
Option 1
Find mailboxes on litigation hold with PowerShell
Install the module once, then connect and export the mailboxes on litigation hold. Microsoft says filtering on the client is faster with the Get-EXO cmdlets, so the script uses Where-Object.
# Install once, if the module is not already installed.
Install-Module ExchangeOnlineManagement -Scope CurrentUser$ErrorActionPreference = 'Stop'
Connect-ExchangeOnline
try {
$mailboxes = Get-EXOMailbox -ResultSize Unlimited -PropertySets Minimum,Hold
$report = @($mailboxes | Where-Object { $_.LitigationHoldEnabled -eq $true } |
Sort-Object DisplayName |
Select-Object DisplayName,PrimarySmtpAddress,RecipientTypeDetails,
LitigationHoldDate,LitigationHoldOwner,LitigationHoldDuration)
if ($report.Count -eq 0) {
Write-Output 'No mailboxes are on litigation hold.'
} else {
$path = './litigation-hold-mailboxes.csv'
$report | Export-Csv -Path $path -NoTypeInformation -Encoding utf8
Write-Output "$($report.Count) mailboxes are on litigation hold."
}
} finally {
Disconnect-ExchangeOnline -Confirm:$false
}The CSV has 1 row for each mailbox on hold, with who set it (LitigationHoldOwner) and when (LitigationHoldDate). LitigationHoldDuration reads Unlimited for a hold with no end, or a time span such as 365.00:00:00. The script passes -ResultSize Unlimited because the default is 1000. To narrow the export, add -RecipientTypeDetails SharedMailbox; to include inactive mailboxes, add -IncludeInactiveMailbox.
Check a single mailbox
Reconnect with Connect-ExchangeOnline, then read 1 mailbox.
# Run while connected to Exchange Online. Replace the example mailbox.
Get-EXOMailbox -Identity 'person@example.com' -PropertySets Minimum,Hold |
Select-Object DisplayName,LitigationHoldEnabled,LitigationHoldDate,LitigationHoldOwner,
LitigationHoldDuration,InPlaceHoldsInPlaceHolds lists eDiscovery holds and retention policies, so it shows what LitigationHoldEnabled does not.
Option 2
Check a mailbox's litigation hold in the admin centre
- Sign in to the Microsoft 365 admin centre for the correct tenant.
- Go to Users > Active users and select the person.
- On the Properties flyout panel, select the Mail tab, then under More actions, select Manage litigation hold.
- Read the Turn on litigation hold checkbox. When it is ticked, Hold duration (days) shows the time limit; a blank box means items are kept indefinitely.
- Close the flyout without selecting Save changes, so nothing changes.
If Manage litigation hold is missing, the mailbox may lack an Exchange Online Plan 2 licence. This suits 1 person; for every mailbox, use PowerShell or Altivane.
Option 3 ยท Recommended for reviewing holds across every mailbox
Run Altivane's Retention and Holds report
- Open Altivane and choose the tenant.
- Run the Retention and Holds report for Exchange Online.
- Open the Excel workbook and read the table. Litigation hold says whether each mailbox is on hold, with Hold since, Hold set by and Hold duration beside it.
- Keep rows where Litigation hold is TRUE. The table also counts eDiscovery holds, In-Place Holds and Purview policies and shows Retention label hold, Delay hold and Retention hold.
The report lists 1 row for each mailbox. Status marks Warning or Review for settings that stop retention working as expected, such as a delay hold. The Organisation holds table lists holds that apply to the whole organisation, and the Deleted Mailboxes report marks inactive mailboxes.
Contact usCommon questions
Does a mailbox that is not on litigation hold have nothing held?
No. Litigation hold is 1 of several ways to keep content. The InPlaceHolds property lists eDiscovery holds, In-Place Holds and retention policies, and ComplianceTagHoldApplied is true when a retention label keeps items.
Why is a former employee's mailbox missing from the list?
The script reads active mailboxes. A mailbox on hold when its account was deleted becomes an inactive mailbox, kept until the hold is removed. Add -IncludeInactiveMailbox to the Get-EXOMailbox command to list it.
Why is a mailbox on hold growing?
Items a person deletes stay in the Recoverable Items folder while the hold lasts, and Microsoft raises that folder's quota from 30 GB to 100 GB. To see the largest mailboxes, see how to export Exchange Online mailbox sizes.
Microsoft references
Technical references checked on 5 October 2026. The example scripts have been reviewed and syntax checked; they have not been run against a live tenant.