$0 COST · UPDATED FEB 2026

Free AWS Cost Reduction: 8 Tools & 12 Commands

No paid software. No enterprise contracts. Just free tools and CLI commands you can run in the next 10 minutes to find and eliminate AWS waste.

Last updated: February 2026 · All tools verified free · Based on production scans

Why free tools are enough for most teams

The AWS cost optimization industry wants you to believe you need a $45,000/year platform to reduce your bill. You do not.

The majority of AWS waste comes from a few predictable patterns: orphaned EBS volumes, oversized RDS instances, NAT Gateway data processing fees, and CloudWatch logs with no retention policy. You can find all of these with the AWS CLI, which is free, and fix them with commands you can copy from this page.

In real production scans, these patterns account for $284/mo to $6,496/mo in recoverable waste per account. That is money you can recover today without buying anything.

AWS also provides several free native tools that most teams underuse. Cost Explorer, Cost Anomaly Detection, and Compute Optimizer are all free and built into every account. The problem is not tool availability. It is knowing which commands to run and where to look.

This guide gives you both.

8 free AWS cost reduction tools

Five from AWS (built into every account) and three free third-party tools. All genuinely free, not "free trial" or "contact sales for pricing."

AWS Native
AWS Cost Explorer
Free
Shows what you spent, filtered by service, account, region, or tag. Includes 12 months of history and basic forecasting. This is your starting point for understanding where money goes.
Limitation: Shows spending data only. Does not identify idle resources, provide fix commands, or alert you to specific waste. You still need to know what to look for.
AWS Native
AWS Cost Anomaly Detection
Free
Uses ML to detect unusual spending patterns and sends alerts via SNS or email. Catches sudden spikes like a runaway Lambda or accidentally provisioned resources.
Limitation: Detects spend changes, not structural waste. It will not flag an EBS volume that has been unattached since day one because there is no anomaly to detect. Also has a 24-48 hour delay in detection.
AWS Native
AWS Budgets
Free (2 report budgets, 1 action budget)
Set monthly spend thresholds and get notified when you approach or exceed them. Action budgets can automatically apply an IAM SCP to prevent further provisioning.
Limitation: Reactive, not proactive. Tells you after you have overspent. Additional budgets cost $0.02/day each ($0.62/month).
AWS Native
AWS Compute Optimizer
Free
Analyzes EC2 instance and Auto Scaling Group utilization over the past 14 days. Recommends right-sizing with specific instance type suggestions.
Limitation: EC2 and ASG only. Does not cover RDS, EBS, S3, NAT Gateway, Lambda, or CloudWatch. Enhanced recommendations (longer lookback window) require opt-in and cost $0.0003272 per resource per hour.
AWS Native
AWS Cost Optimization Hub
Free
Consolidates recommendations from Compute Optimizer, Trusted Advisor, S3 Lens, and other AWS services into one dashboard. Launched in 2023, still improving.
Limitation: Only aggregates what AWS native tools already find. If the underlying service does not detect it (orphaned EBS, idle load balancers), the Hub will not show it either.
Third-party · Open source
Infracost
Free CLI (open source)
Estimates cost impact of Terraform changes before you apply them. Shows cost diffs in pull requests. Catches expensive provisioning before it hits your bill.
Limitation: Terraform only. Does not scan existing resources or find idle waste. Useful for preventing new waste, not finding existing waste. Cloud pricing API has a free tier (1,000 runs/month).
Third-party · Open source
Komiser
Free (self-hosted)
Open-source resource inventory across AWS, GCP, Azure, and OCI. Provides a dashboard of all cloud resources with cost data. Good for visibility into what you have deployed.
Limitation: Self-hosted, requires you to run and maintain infrastructure. Inventory-focused. Does not provide optimization rules or fix commands. Best as a complement to other tools.

What each free tool actually covers

Tool Finds idle resources Fix commands Anomaly alerts Slack delivery
Cost Explorer No No No No
Cost Anomaly Detection No No Yes No (SNS/email)
AWS Budgets No No Threshold only No
Compute Optimizer EC2 only No No No
Cost Optimization Hub Partial No No No
CostPatrol 30+ services Yes Yes (6hr) Yes
Infracost No (pre-deploy) No No No
Komiser Inventory only No No No
Scroll horizontally on mobile · All free tiers verified Feb 2026

Or skip the manual commands and scan your whole account in 2 minutes.

Get free scan
Free plan · Read-only access · 111 rules · No credit card

12 CLI commands to cut your AWS bill right now

Copy-paste these into your terminal. Each one finds a specific type of waste. Ordered by typical dollar impact.

Command 1

Find orphaned EBS volumes

Typical waste: $50-500/mo

Unattached volumes cost $0.08-0.10/GB/month and serve no purpose. Every AWS account has them.

aws ec2 describe-volumes \ --filters Name=status,Values=available \ --query "Volumes[].{ID:VolumeId,Size:Size,Type:VolumeType,Created:CreateTime}" \ --output table

Fix: Snapshot anything you might need (aws ec2 create-snapshot), then delete (aws ec2 delete-volume).

Real result: $284/mo from one region. One volume was unattached for 1,790 days.

Command 2

Find oversized RDS instances

Typical waste: $200-6,500/mo

Check average CPU over the past 14 days. Under 10% means you are paying for capacity you do not use.

aws rds describe-db-instances \ --query "DBInstances[].{ID:DBInstanceIdentifier,Class:DBInstanceClass,Engine:Engine,MultiAZ:MultiAZ}" \ --output table

Then check CPU for each instance:

aws cloudwatch get-metric-statistics \ --namespace AWS/RDS --metric-name CPUUtilization \ --dimensions Name=DBInstanceIdentifier,Value=YOUR_INSTANCE \ --start-time $(date -u -v-14d +%Y-%m-%dT%H:%M:%S) \ --end-time $(date -u +%Y-%m-%dT%H:%M:%S) \ --period 86400 --statistics Average --output table

Fix: Drop one or two instance size classes. Disable Multi-AZ for non-production workloads.

Real result: $6,496/mo saved by consolidating 17 Aurora clusters.

Command 3

Check NAT Gateway data processing

Typical waste: $100-800/mo per VPC

NAT Gateway charges $0.045/GB for data processing. S3 and DynamoDB traffic can route through free VPC Gateway Endpoints instead.

aws ec2 describe-nat-gateways \ --query "NatGateways[?State=='available'].{ID:NatGatewayId,VPC:VpcId,Subnet:SubnetId}" \ --output table

Fix: Add VPC Gateway Endpoints for S3 and DynamoDB in every VPC. They are free, unlimited bandwidth, and reduce latency.

Real result: Largest single finding in a 7-region scan.

Command 4

Find gp2 volumes to migrate to gp3

Savings: 20% per volume

gp3 is 20% cheaper than gp2 with better baseline performance. Migration is live, zero downtime.

aws ec2 describe-volumes \ --filters Name=volume-type,Values=gp2 \ --query "length(Volumes[])" --output text

Fix: aws ec2 modify-volume --volume-id vol-xxx --volume-type gp3. No detach required.

Command 5

Find CloudWatch log groups with no retention

Savings: $0.03/GB/month (compounds forever)

Default retention is "never expire." Every log group without a policy grows indefinitely.

aws logs describe-log-groups \ --query "logGroups[?!retentionInDays].{Name:logGroupName,StoredMB:to_string(storedBytes)}" \ --output table

Fix: aws logs put-retention-policy --log-group-name NAME --retention-in-days 30

Command 6

Find unused Elastic IPs

Savings: $3.65/mo each

Since Feb 2024, all public IPv4 addresses cost $0.005/hour. Unassociated ones are pure waste.

aws ec2 describe-addresses \ --query "Addresses[?!InstanceId && !NetworkInterfaceId].{IP:PublicIp,AllocID:AllocationId}" \ --output table

Fix: aws ec2 release-address --allocation-id eipalloc-xxx

Command 7

Find stopped EC2 instances

Savings: EBS charges ($8-100+/mo per instance)

Stopped instances still pay for their EBS volumes. Nobody notices because the instance is not running.

aws ec2 describe-instances \ --filters Name=instance-state-name,Values=stopped \ --query "Reservations[].Instances[].{ID:InstanceId,Type:InstanceType,LaunchTime:LaunchTime}" \ --output table

Fix: Create AMI (aws ec2 create-image), then terminate. Relaunch from AMI if needed later.

Command 8

Find idle load balancers

Savings: $16-25/mo each

ALBs and NLBs cost $16.20/month minimum even with zero traffic.

aws elbv2 describe-load-balancers \ --query "LoadBalancers[].{Name:LoadBalancerName,ARN:LoadBalancerArn,Type:Type,Created:CreatedTime}" \ --output table

Check: Query RequestCount (ALB) or ActiveFlowCount (NLB) in CloudWatch over 14 days. Zero means safe to delete.

Command 9

Find old EBS snapshots

Savings: $0.05/GB/month per snapshot

Automated backups create daily snapshots. Without retention policies, they accumulate for years.

aws ec2 describe-snapshots --owner-ids self \ --query "length(Snapshots[?StartTime<='2025-12-01'])" \ --output text

Fix: Cross-reference with active volumes. Delete snapshots where the source volume no longer exists.

Command 10

Find S3 buckets without lifecycle rules

Savings: up to 68% with Intelligent-Tiering

S3 Standard costs $0.023/GB. Infrequent Access is $0.0125/GB. Glacier is $0.004/GB. Without lifecycle rules, everything stays in Standard forever.

aws s3api list-buckets --query "Buckets[].Name" --output text | \ tr '\t' '\n' | while read b; do \ rules=$(aws s3api get-bucket-lifecycle-configuration \ --bucket "$b" 2>/dev/null | grep -c Rule); \ [ "$rules" = "0" ] && echo "No lifecycle: $b"; \ done

Fix: Enable S3 Intelligent-Tiering for automatic tier transitions, or add lifecycle rules to move old objects to IA/Glacier.

Command 11

Find Lambda functions with excess memory

Savings: proportional to memory reduction

Lambda pricing is per-ms times memory allocated. A function allocated 1024 MB but using 128 MB costs 8x more than necessary.

aws lambda list-functions \ --query "Functions[].{Name:FunctionName,Memory:MemorySize,Runtime:Runtime}" \ --output table

Check: Compare MemorySize against MaxMemoryUsed in CloudWatch Logs. AWS Compute Optimizer also provides Lambda recommendations for free.

Command 12

Find unused security groups

Cleanup: reduces attack surface

Does not save money directly, but unused security groups indicate decommissioned resources that may still have billable components (EBS, EIPs, snapshots).

aws ec2 describe-security-groups \ --query "SecurityGroups[?GroupName!='default'].GroupId" \ --output text | tr '\t' '\n' | while read sg; do \ enis=$(aws ec2 describe-network-interfaces \ --filters Name=group-id,Values="$sg" \ --query "length(NetworkInterfaces)" --output text); \ [ "$enis" = "0" ] && echo "Unused: $sg"; \ done

Investigate: Each unused security group likely had resources attached. Check if those resources left behind EBS volumes, snapshots, or Elastic IPs.

When free tools are not enough

Free tools and manual commands work. But they have three gaps:

You have to remember to run them. Manual audits catch waste once. Next month, new waste accumulates and nobody runs the commands again. Automated daily scanning catches new waste within 24 hours.

You have to run them in every region. Most accounts have resources in 2-5 regions. Running 12 commands across 5 regions is 60 commands. Miss one region and you miss waste.

You have to interpret the results. The CLI tells you a volume is unattached. It does not tell you it has been unattached for 1,790 days and is costing $50/month. Context and dollar amounts change whether a finding gets fixed or ignored.

CostPatrol automates all of this: runs 111 rules daily across all regions, calculates dollar impact, generates fix commands, and delivers everything to Slack. Free for accounts under $5K/month. The commands on this page are exactly what CostPatrol runs internally, packaged with scheduling, multi-region coverage, and team-friendly delivery.

For a full breakdown of paid options, see our comparison of 12 AWS cost optimization tools or the complete optimization guide.

Frequently asked questions

Can I reduce my AWS bill without paying for any tools?

Yes. The AWS CLI is free and can identify most common waste: orphaned EBS volumes, unused Elastic IPs, stopped EC2 instances, gp2 volumes, and CloudWatch log groups with no retention. AWS Cost Explorer is also free. For automated scanning, CostPatrol is free for accounts under $5K/month and includes all optimization rules.

What free AWS tools help with cost reduction?

AWS provides: Cost Explorer (spending analysis), Budgets (1 free action budget, 2 free report budgets), Cost Anomaly Detection (ML-powered alerts), Compute Optimizer (EC2 right-sizing), and Cost Optimization Hub (aggregated recommendations). Third-party free options: CostPatrol (free under $5K/month), Infracost (free Terraform CLI), and Komiser (free open-source inventory).

How much waste does a typical AWS account have?

Gartner estimates 27% average cloud waste. In production scans, we find 20-35% recoverable waste. Common findings: $50-500/month in orphaned EBS volumes, $100-800/month in NAT Gateway fees, and $200-6,500/month in oversized or idle RDS instances.

What is the single fastest free way to reduce my AWS bill?

Run: aws ec2 describe-volumes --filters Name=status,Values=available --output table. This lists all unattached EBS volumes. Snapshot anything you might need, then delete. In one scan, a single volume was burning $50/month for 1,790 days ($2,950 total).

Is AWS Trusted Advisor free for cost optimization?

No. The free tier only covers service quotas and basic security. Cost optimization checks require Business Support at $29/month per account minimum. For 5 accounts, that is $145/month for generic recommendations without fix commands or Slack delivery.

How do I find idle resources without paying for a tool?

Use the AWS CLI. The 12 commands in this guide cover the most common waste patterns: orphaned EBS volumes, unused Elastic IPs, stopped EC2 instances, gp2 volumes, CloudWatch logs without retention, idle load balancers, NAT Gateways, old snapshots, S3 without lifecycle rules, over-allocated Lambda, and unused security groups.

Automate everything on this page

CostPatrol runs these checks daily. 111 rules. Free under $5K/mo. Full findings and fix commands from $99/mo.