HealthChecks.MiniUI is a tiny ASP.NET Core health page helper that renders a human-friendly HTML status page on top of Microsoft health checks.
- Renders health checks as a simple HTML page
- Serves humans and scripts from one endpoint, HTML for browsers and plain text for
curl - Shows status, description, duration, tags, and exception details
- Uses the existing Microsoft health check pipeline
These screenshots are taken from the demo application.
| Dark mode | Light mode | Exception pop-out |
|---|---|---|
![]() |
![]() |
![]() |
Install the package from NuGet:
dotnet add package WorldDirect.HealthChecks.MiniUIMap the page in your app startup code:
// Microsoft.Extensions.HealthChecks
app.MapHealthChecks("/healthz");
// MiniUI HealthCheck page
app.MapSimpleHealthPage("/health", options =>
{
options.Title = "My App Health";
});By default, the page returns HTTP 200 for all overall health states (Healthy, Degraded, Unhealthy).
You can override this per status:
using Microsoft.AspNetCore.Http;
app.MapSimpleHealthPage("/health", options =>
{
options.StatusCodes.Healthy = StatusCodes.Status200OK;
options.StatusCodes.Degraded = StatusCodes.Status200OK;
options.StatusCodes.Unhealthy = StatusCodes.Status503ServiceUnavailable;
});By default the page executes all registered health checks. Use Predicate to select a subset, for example by tag. Checks that are filtered out are not executed at all:
app.MapSimpleHealthPage("/health", options =>
{
options.Predicate = registration => registration.Tags.Contains("ui");
});This is the same Func<HealthCheckRegistration, bool> shape as HealthCheckOptions.Predicate used by MapHealthChecks.
Opt in with EnablePlainText to serve a text/plain rendering to clients that do not accept text/html, such as curl or a container health check. Browsers still get the HTML page.
app.MapSimpleHealthPage("/health", options =>
{
options.EnablePlainText = true;
});$ curl http://localhost:5000/health
Health Checks
Status: Unhealthy
Duration: 1002.67 ms
Generated: 2026-09-05 09:12:33Z
| NAME | STATUS | DESCRIPTION | DURATION |
|---------|-----------|----------------------|------------|
| db | Healthy | connection ok | 1.5 ms |
| failing | Unhealthy | queue backlog too... | 1002.67 ms |Descriptions are shortened with ... so the table stays readable in a terminal.
Combine it with StatusCodes.Unhealthy so curl --fail works.
The repository includes a small demo app in demo/HealthChecks.MiniUI.Demo.
Run it from the repo root:
dotnet run --project demo/HealthChecks.MiniUI.Demo/HealthChecks.MiniUI.Demo.csprojThen open:
/healthfor the MiniUI page (HTML in a browser, plain text forcurl,503when unhealthy)/healthzfor the plainMapHealthChecksresponse
- The UI is intentionally small and stateless.
- Route configuration is map-time, matching the usual ASP.NET Core endpoint style.
- The page is designed to stay simple and easy to extend later.


