## TL;DR
A Traefik router points at a service name that does not exist in the provider: a label typo, a missing service definition, or a provider that has not discovered it yet. Match the router's `service` to a real service name in the dashboard and the route starts working.

## Error
```text
traefik: unable to find service for router rule
```

## Steps
1. Open the Traefik dashboard and look at the routers and services lists. Expected: the router exists and the named service is absent or spelled differently.
2. Check the provider labels (Docker) or config (file, Kubernetes CRD): the service name comes from labels like the service definition or the container name. Expected: you see the actual registered service names.
3. Fix the reference: set the router's service to the exact registered name, watching for case and separators. Expected: the names match character for character.
4. If the service should exist but does not, check the provider discovery: container labels applied, pods ready, or file provider loaded. Expected: the service appears in the dashboard.
5. Re-test the route. Expected: requests route to the backend instead of the "service not found" error.

## When to use
- Traefik dashboard shows routers without matching services
- New services that never become reachable
- After renaming services or migrating providers

## When not to use
- TLS certificate errors (different layer)
- Middleware chain failures (request reaches the service but fails there)

## Tool compatibility
- Traefik routers, services, providers (Docker labels, file, Kubernetes CRD); dashboard

## Variant phrasings
### traefik router no service found docker
Check the container labels; the service name derives from them and typos are common.

### traefik service not found kubernetes
Verify the TraefikService or Kubernetes Service exists in the expected namespace.

## Why it happens
Traefik decouples routing rules from backends: routers reference services by name, and providers populate the service catalog asynchronously. Any naming drift between the router rule and the provider's catalog (or a provider that has not discovered the backend yet) leaves the router pointing at nothing.

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_oZMtSHDnTpNryINAchx-eQ
