Unattached managed disks
A managed disk stays when you delete its VM, and a 1 TB Premium SSD costs the same whether it is used or not. In the Azure portal, open Disks and look at the Disk state column: Unattached means the disk isn't connected to any VM.
To find them across all your subscriptions, use Azure Resource Graph Explorer with this query:
resources
| where type =~ 'microsoft.compute/disks'
| where properties.diskState =~ 'Unattached'
| project name, resourceGroup, sku = sku.name, sizeGb = properties.diskSizeGB
Old snapshots
Snapshots are often taken before an update or migration, and then forgotten. Check the creation date under Snapshots. Anything older than your recovery window (often 30 to 90 days) can usually go, unless a legal retention requirement or an ongoing project still needs it.
Public IP addresses that aren't attached
A Standard public IP address is billed per hour, even when it isn't attached to anything. Look under Public IP addresses for addresses with nothing under Associated to. Also watch for addresses still attached to a network interface whose VM was deleted: those are billed just the same.
Cleaning up safely
- Not sure about a disk? Take a snapshot first. It costs a fraction of the disk itself.
- Check tags and resource groups: sometimes a resource belongs to a project that is still running.
- Look for a resource lock; people rarely set one without a reason.
- A deleted static IP address can't be recovered. Check the DNS records and firewall allow-lists that use it first.
- Clean up per resource group, so you still know later what went and why.