Dark Charts

Line, area, bars, donut, sparkline, heatmap, ranked bars and stat tiles — as CSS and inline SVG. About 6 KB of JavaScript, no charting library, no build step. Every chart reads the same six colour tokens, so one palette swap recolours all of them.

Stat tiles

Revenue
€48,290
↑ 12.4%
Active users
3,914
↑ 8.1%
Churn
1.8%
↓ 0.3%
Avg. session
6m 12s
↑ 41s

Line and area

Revenue
Daily, last 30 days
€48,290
↑ 12.4% vs previous period
Signups
Weekly cohort
3,914
↑ 8.1%

Bars and donuts

Orders per day
Storage used
Uptime

Ranked bars

Top sources
By sessions
Direct
1,842
Search
1,436
Referral
921
Social
514
Email
312
Sessions

Sparklines in a table

Berlin+18%
Hamburg−22%
Munich+6%

Heatmap calendar

Commits
Last 12 weeks
Less More

How you use it

<link rel="stylesheet" href="charts.css">
<script src="charts.js" defer></script>

<div class="chart">
  <div class="chart-title">Revenue</div>
  <div data-chart="line" data-values="12,19,17,26,24,35,33,46"></div>
</div>

Or call it directly: el.innerHTML = DarkCharts.line([12,19,17,26])