Choose a label column for the categories and one to six value columns, then pick column, bar, line, area, pie, donut or scatter. Rows with the same label are combined with sum (the default), mean, median, minimum, maximum or count, or kept one per row. Values that are not plain numbers are skipped and counted, never drawn as zero. The chart is drawn as SVG in your browser and the file is not uploaded.
How to make a chart from a CSV file
- Open or paste a CSV file.
- Choose the label column (the categories, or the x axis for a scatter plot) and up to six value columns. For count you don't need a value column.
- Choose the chart type and how rows with the same label are combined.
- Set the order, the number of categories, an optional title and axis labels, then download the chart as an SVG file.
Chart types and aggregation
| Column and bar | Vertical or horizontal bars, one per category. With several value columns the bars sit side by side, or on top of each other when stacked; negative values stack below zero. |
|---|---|
| Line and area | One line per value column across the categories, in order. Area charts can be stacked. Point markers are drawn when there are 60 categories or fewer. |
| Pie and donut | The first value column only, at most 8 slices. Negative values count as zero, and each large enough slice is labeled with its rounded percentage. |
| Scatter | One point per row: the label column is the x value and each value column a y series. X must be a number or an ISO date; up to 5,000 points per series are drawn. |
| Sum, mean, median, min, max | Rows with the same label become one category, combined with that function. Sum is the default. |
| Count | The number of rows for each label, for example orders per status. |
| None | Every row is its own category, in file order. Use it when the file already has one row per bar. |
Ordering and too many categories
- Order keeps the source order (first appearance) by default. Sorting by label puts full ISO dates (
2026-03-25) in date order and numbers in numeric order; other labels sort as natural text, so2026-10comes after2026-09anditem 10afteritem 9. Sorting by value uses the total of all value columns. - The chart shows 20 categories by default, up to 1,000. When there are more, the last slot becomes Other, which combines the remaining rows and recalculates their mean or median instead of averaging averages.
- With Other turned off, the extra categories are left out, and a label column with more than 1,000 different values is rejected; filter the rows or group them first.
- Labels are compared exactly as written:
NorthandNorthare two bars. A blank label gets its own category, shown with a blank marker rather than an empty name.
How values are read
A value is plotted only when it is a plain number with a dot as the decimal mark, such as 1200, -4.5 or 3e5. Blank cells, text such as n/a, values with units or thousands separators (1,200) and numbers a double cannot hold faithfully (whole numbers beyond ±9,007,199,254,740,991, fractions with more than 15 significant digits, or values such as 1e-1000) are skipped, and the number of skipped cells is reported. A category whose values were all skipped is left empty rather than drawn as zero.
Totals for drawing use double-precision arithmetic, so a tooltip can show 0.30000000000000004 where the exact sum is 0.3. For exact totals, use Analyze CSV, which sums with decimal arithmetic.
The SVG file
The chart is a standalone SVG file with a white or dark background matching the theme. Each bar, slice and point has a tooltip with its label and value, and the file includes an accessible title and description, so it can be placed in a document or web page as is. Up to eight series colors are used; a single series uses one color.
Long category names are shortened with an ellipsis on the axis, and labels are thinned when they would overlap. All text in the file is escaped, so a cell containing < or & cannot break the SVG.
Limits and privacy
Charts work on files up to 25 MB, 100,000 rows, 250 columns or 2 million cells. For a larger file, filter or split it first, or profile it with Analyze CSV, which streams large files. Everything runs in your browser; the CSV is not uploaded.
Example
Monthly revenue for two regions, charted as columns with the label column region, the value column revenue and sum. The blank revenue for South in February is skipped and counted, so South totals 950 + 1100.
month,region,revenue,units 2026-01,North,1200,40 2026-01,South,950,31 2026-02,North,1340,44 2026-02,South,,29 2026-03,North,1515,52 2026-03,South,1100,n/a
{
"labels": ["North", "South"],
"series": [{ "name": "revenue", "values": [4055, 2050] }],
"skipped": 1,
"categories": 2
}Questions and answers
Why is a bar missing for one category?
None of its cells in the value column were plain numbers, so there was nothing to plot. Check for units, thousands separators or a decimal comma in the CSV viewer, or use count instead.
How do I chart how often each value appears?
Choose that column as the label column and count as the aggregation. No value column is needed.
Can I chart dates on the x axis?
Yes, as categories: use the date column as the label column and sort by label, so ISO dates such as 2026-03-25 run in date order. Each different date is one category, so raise the category limit or filter to the range you need.