v1.2.0
  1. ds
  2. Operations
  3. Uptime bar

Uptime bar

Ninety days of health, one bar a day.

API99.96%
90 days ago99.96% uptimeToday
Code
<div class="uptime">
  <div class="up-head"><span>API</span><span class="pct">99.96%</span></div>
  <div class="up-bars" role="img" aria-label="API: 99.96% uptime over 90 days">
    <i class="ok" aria-label="14 Jul 2026: No downtime"></i>
    …
    <i class="down" aria-label="13 Sep 2026: Outage, 17 min down"></i>
    <i class="warn" aria-label="14 Sep 2026: Degraded performance, 46 min degraded"></i>
    …
  </div>
  <div class="up-foot"><span>90 days ago</span><i></i><span class="pct">99.96% uptime</span><i></i><span>Today</span></div>
</div>

One bar per day, oldest on the left, today on the right. Green is a day with no downtime, amber had degraded performance, red had an outage. Hover a bar for the date and the minutes lost. The healthy green is mixed 28% toward the surface so ninety of them read as calm and the one red day stands out.

States

Webhooks100.00%
30 days ago100.00% uptimeToday
Code
<div class="uptime sm">
  …
  <div class="up-bars" role="img" aria-label="…">
    <i class="none" aria-label="12 Sep 2026: No data"></i>
    <i class="maint" aria-label="3 Oct 2026: Maintenance, 30 min planned"></i>
    …
  </div>
  …
</div>

.sm is the compact row for long lists and dashboards. Days before the component existed are .none; planned work is .maint in the cool series blue, so it is not mistaken for a problem.

ClassOnWhat it does
.uptimedivHead, bars and foot in a column. .sm for a 20px row.
.up-headdivName on the left, .pct on the right.
.up-barsdivThe row of bars. Hovering dims the others.
.up-bars > iiOne day. .ok (default), .warn, .down, .maint, .none. .on keeps one lit.
.up-footdivStart, figure and end, with an <i> hairline between each.
.up-tipdivHover card inside .up-bars: .label date, then <b> the state.
Do
  • Round down to two decimals and show the minutes in the hover card: 99.95% over 90 days is 65 minutes.
  • Count partial outages as partial: a quarter of the degraded minutes, if that is your SLA.
  • Keep the same 90 days for every component so the columns line up.
Don't
  • Rounding 99.95% up to 100%.
  • Hiding a red day because it was short. People check the status page when something felt wrong.
  • A different colour per component.

Accessibility

  • The row is one image with the takeaway in its label: name, percentage and window.
  • Each bar has its own aria-label, so the hover card text exists without a mouse. For a full history, link to a table of incidents.