AWS ALB · HTTP 503

AWS ALB 503: Target Group Has No Healthy Targets

Resolve an ALB 503 by checking target registration, health-check protocol and path, security groups, and application readiness.

Origin / Application

Decode a CDN or gateway error

Paste a captured HTTP response or enter a status and headers. Only the status and response headers are sent; common credential headers are filtered first.

Supports raw headers, full HTTP responses, JSON with status/statusCode and headers, cURL -v/-i response output, and HAR exports. HAR selects a server error first. cURL commands are never executed; request headers, response bodies, and common credential headers are excluded.

Diagnostic report

Error code / name

AWS_ALB_TARGET_GROUP_UNHEALTHY

Fault domain

Origin / Application

Why it happened

The load balancer had no healthy registered target available for the listener rule. A wrong health-check path, startup delay, port mismatch, or blocked health-check traffic can mark every target unhealthy.

Actionable fixes

  1. Review target health reason codes and compare them with application startup and access logs.
  2. Verify health-check path, port, protocol, success matcher, and the target's security-group ingress.
  3. Keep readiness checks independent of optional dependencies that do not prevent the service from handling traffic.

Why this error happened

The load balancer had no healthy registered target available for the listener rule. A wrong health-check path, startup delay, port mismatch, or blocked health-check traffic can mark every target unhealthy.

Actionable fixes

  1. Review target health reason codes and compare them with application startup and access logs.
  2. Verify health-check path, port, protocol, success matcher, and the target's security-group ingress.
  3. Keep readiness checks independent of optional dependencies that do not prevent the service from handling traffic.

Network failure point

Client -> ALB listener -> target group health checks -> all targets unhealthy -> X 503

Verify origin directly via CLI

curl -sS -I --connect-timeout 5 --max-time 15 --resolve app.example.com:443:TARGET_IP https://app.example.com/health

Configuration fix

alb.tfhcl
health_check {
  path                = "/health/ready"
  protocol            = "HTTP"
  matcher             = "200"
  interval            = 30
  healthy_threshold   = 2
  unhealthy_threshold = 3
}

Catch this failure before it becomes an outage

SteadyNode's regional HTTP checks detect when a public ALB stops returning healthy responses, while its incident history helps correlate recovery with target and deployment changes.

No credit card required.

Start for free

Frequently asked questions

What does ALB 503 mean when targets are registered?

Registered targets can still be unhealthy. Inspect target health reason codes and verify the configured health-check path and port.

Should health checks depend on every backend?

Only include dependencies required to serve traffic. Optional downstream failures can otherwise remove healthy application instances from rotation.

Cloudflare

Vercel and Netlify

AWS CloudFront and ALB

Fastly

Heroku and Render

Nginx and Envoy