How the FinOps Health Score is calculated

Five weighted categories — Compute, Storage, Database, Network, and Reserved Coverage. Each one is scored independently, then combined into the overall score using its weight.

How it works

Four cost domains plus a coverage ratio roll up into one score.

01
Cost, read not computed

Monthly cost per resource is pre-computed in the background for each resource — this view never does pricing lookups.

02
Opportunities per category

Active savings recommendations are grouped by resource type into Compute / Storage / Database / Network, each one counting as one issue per affected resource.

03
Reserved Coverage is different

Instead of counting issues, this category scores the actual ratio of Reserved Instance / Savings Plan coverage over running compute — a heuristic based on resource counts.

Formula

category_score  = 100 − (resources with recommendation × penalty per issue)   [Compute / Storage / Database / Network]
reserved_score  = min(100, reserved instances / running instances × 100)

overall_score   = Σ (category_score × category weight)

Categories with zero resources of their type default to a score of 100 (nothing to penalize). Unlike Operational Compliance, this score is not normalized by the total number of resources — each affected resource costs a fixed number of points regardless of inventory size.

Categories

Overall-score weight, per-issue penalty, and which resource types count toward each category.

Category Overall weight Penalty / issue Resource types
Compute 30% -10 pts
EC2 Instances Lambda Functions
Storage 25% -10 pts
CloudWatch Log Groups EBS Snapshots EBS Volumes EFS File Systems S3 Buckets
Database 25% -10 pts
DynamoDB Tables OpenSearch Domains Aurora Clusters RDS Instances
Network 10% -15 pts
Elastic IPs NAT Gateways VPC Endpoints Classic Load Balancers ALB / NLB Route 53 Hosted Zones
Reserved Coverage 10% n/a — coverage ratio

Severity by recommendation type 22 types

Each opportunity's displayed severity comes from its recommendation type — this drives the badge color in the opportunities table, not the score itself (severity isn't weighted in this score, unlike Operational Compliance).

Recommendation type Severity Resource types
Delete High
ALB / NLB Classic Load Balancers NAT Gateways EFS File Systems
Delete stopped High
RDS Instances
Orphaned snapshot High
EBS Snapshots
Release High
Elastic IPs
Review ns mismatch High
Route 53 Hosted Zones
Set retention High
CloudWatch Log Groups
Snapshot and delete High
EBS Volumes
Snapshot and delete stopped High
EBS Volumes
Terminate High
EC2 Instances
Cpu low Medium
EC2 Instances RDS Instances Aurora Clusters
Delete Medium
Lambda Functions VPC Endpoints
Delete empty Medium
DynamoDB Tables
Delete empty zone Medium
Route 53 Hosted Zones
Enable lifecycle Medium
EFS File Systems
Lifecycle policy Medium
S3 Buckets
Over retained snapshot Medium
EBS Snapshots
Right size Medium
EC2 Instances RDS Instances Aurora Clusters
Switch to on demand Medium
DynamoDB Tables
Upgrade Medium
EBS Volumes
Delete Low
S3 Buckets
Intelligent tiering Low
S3 Buckets
Reservation Info
EC2 Instances RDS Instances Aurora Clusters OpenSearch Domains
Any recommendation type not listed here defaults to medium severity.