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.
Cost, read not computed
Monthly cost per resource is pre-computed in the background for each resource — this view never does pricing lookups.
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.
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
|