Your data
Paste a table straight from Excel or Google Sheets, or drop a CSV file. Nothing is uploaded anywhere — the whole calculation runs inside this browser tab.
CSV, TSV or plain text. Files saved in windows-1251 are detected and re-read automatically, so Cyrillic headers do not turn into garbage.
Parsing options
Result
Save and share
The drawing library is downloaded only when you press the button, and only on this page.
This page has no server side at all. The table you paste is parsed by JavaScript inside your own browser, the chart is drawn on a canvas element on your machine, and the export file is assembled locally. Nothing is uploaded, stored or written to any log. You can disconnect from the network after the page has loaded and everything will still work — which is the simplest way to verify the claim yourself.
Facts and limits of this method
| Best for | Comparing the shape of many metrics measured on different scales |
|---|---|
| Lane limit | 10 columns; beyond that each lane becomes too thin to read |
| Scaling | Each lane is normalised to its OWN minimum and maximum |
| Lane height | 76% of the lane, leaving a gap so neighbouring lines never touch |
| Axes | No vertical axis by design — levels are deliberately not comparable |
| Output | PNG at 2× scale, plus CSV, JSON and Markdown of the original values |
When it misleads you
- Every lane has its own scale, so vertical position means nothing across lanes. A line near the top of its lane is at its own maximum, not at a high value — this is the defining property of sparklines and the one people forget.
- Because each lane is stretched to fill its own range, a metric that barely moved looks as dramatic as one that tripled. A column varying between 2.0 and 2.1 will show the same peaks and valleys as one varying between 100 and 3000.
- There are no numbers on the chart. Sparklines are meant to sit next to a table of current values, not to replace it — without that table a reader cannot tell whether "rising" means from 3 to 4 or from 3 to 3000.
- Missing values are bridged rather than broken, because a gap in a two-pixel-tall line is invisible anyway. Check the data quality report if completeness matters.
How it is calculated
Every numeric column becomes one lane, drawn from top to bottom in the order the columns appear. Within its lane, each series is rescaled so its own minimum sits at the bottom and its own maximum at the top, which is exactly what makes shapes comparable when levels are not.
Lanes are drawn on a single canvas rather than as separate small images. That keeps the export to one PNG, keeps the lane labels aligned with the lines, and means the whole set can be copied into a document in one paste.
Each line fills only 76% of its lane height, leaving a margin above and below. Without that margin the peak of one metric would touch the trough of the one above it, and the eye would read two separate series as one continuous shape.
The vertical axis carries lane names instead of numbers. Printing a shared numeric scale would be actively misleading here, because no such shared scale exists — every lane is measured against itself.
Questions and answers
Why does a barely-changing metric look so dramatic?
Because its lane is stretched to its own range. A column moving between 2.0 and 2.1 fills the whole lane just as a column moving between 100 and 3000 does. Sparklines compare shape, never magnitude — put the actual numbers next to them.
Can I give all lanes the same scale?
Not on this page, because it would defeat the purpose: metrics on different scales would collapse into flat lines at the bottom. If your columns share a scale, use the multi-series line chart instead.
How many metrics fit?
Ten lanes is the ceiling here. Beyond that each lane is a couple of pixels tall and the shapes stop being distinguishable.
Why are there no numbers on the chart?
By design. A sparkline is a supplement to a number, not a substitute for one — the classic use is a small line next to the current value in a table.
Is my data uploaded?
No. Normalisation and drawing happen entirely in your browser.