Tutorial

How to Find Idle EC2 Instances Before They Drain Your Budget

July 2025 · 4 min read

EC2 instances are billed by the hour regardless of how much CPU they actually use. An instance running at 2 percent CPU costs exactly the same as one running at 90 percent. This means every idle EC2 instance in your account is pure waste, and most AWS accounts have at least a few.

What makes an EC2 instance idle

An idle EC2 instance is one that is running but doing very little actual work. The standard threshold used by most FinOps practitioners is an average CPU utilization below 5 percent over a 14-day period. This covers instances that were spun up for testing, development environments that run overnight, and production services that were replaced but never terminated.

CPU utilization is the most common signal, but it is not the only one. An instance could have normal CPU usage while doing nothing meaningful if it is running a process that loops without doing actual work. Network throughput is a useful secondary signal. An instance with near-zero network in and out is almost certainly idle regardless of CPU.

How to find them manually in the AWS console

The manual process requires CloudWatch. Go to CloudWatch, select Metrics, find EC2, and look at CPUUtilization per instance. Set the time range to 14 days and look for instances averaging below 5 percent. This works but is tedious at scale. If you have 20 instances across 4 regions, you are clicking through 80 different graphs.

A t3.medium instance costs approximately $30 per month. If you have 5 idle instances of that type, you are spending $150 per month on nothing. Across a year that is $1,800 for a single instance type in a single region.

What to do when you find an idle instance

Before stopping or terminating an idle instance, confirm it is actually unused. Check with the team member who created it. Look at any attached EBS volumes to see if they contain data that might be needed. Check whether any scheduled jobs reference the instance. If it is genuinely unused, stop it first rather than terminating immediately. A stopped instance does not incur compute charges, and you can restart it within 60 days if you discover it was needed after all.

How to prevent idle instances from accumulating

The best prevention is a naming convention that includes the purpose and owner of every instance. An instance named web-prod-2 is meaningful. An instance named test or unnamed is a future orphan. Many teams also use AWS instance scheduler to automatically stop development instances outside business hours, which reduces costs without requiring manual cleanup.

Automated scanning tools that check CPU utilization on a schedule and alert when new idle instances appear are the most effective long-term solution. The goal is to catch idle instances within days of them becoming idle, not months later when the cost has already compounded.

Find your idle EC2 instances in 60 seconds

CostaAegis scans your entire AWS account across all regions and identifies idle EC2 instances automatically. Free to start, no credit card required.

Start Free Scan