Skip to the tool
ViewCSV
Files stay on your device

Make a chart from CSV

sales.csv· SAMPLE DATA18 rows · 4 columns
Values from
Up to 6 columns; each becomes a series.
Preview
Columns chart of revenue by monthColumns chart of revenue by month02,0004,0006,0008,0002026-012026-022026-032026-042026-052026-062026-01 · revenue: 4,0432026-02 · revenue: 7,3602026-03 · revenue: 5,2642026-04 · revenue: 3,5412026-05 · revenue: 5,6032026-06 · revenue: 5,685
Chart data as a table
month	revenue
2026-01	4,043
2026-02	7,360
2026-03	5,264
2026-04	3,541
2026-05	5,603
2026-06	5,685

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

  1. Open or paste a CSV file.
  2. 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.
  3. Choose the chart type and how rows with the same label are combined.
  4. 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 barVertical 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 areaOne 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 donutThe first value column only, at most 8 slices. Negative values count as zero, and each large enough slice is labeled with its rounded percentage.
ScatterOne 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, maxRows with the same label become one category, combined with that function. Sum is the default.
CountThe number of rows for each label, for example orders per status.
NoneEvery 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, so 2026-10 comes after 2026-09 and item 10 after item 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: North and North are 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.

CSV
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
Chart data (bar heights)
{
  "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.

Standards and references