Blog
Charts from data

CSV to scatter plot online

A scatter plot is the fastest way to see whether two measurements are related. Each row becomes one point: the first column places it horizontally, the second vertically. Shape tells you the story — a rising cloud, a flat blur, a curve, or a couple of points sitting far away from everything else.

Your data never leaves this device

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

Columns

Result

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 Checking whether two numeric variables are related
Minimum rows 2 to draw, about 20 before the shape means anything
Axes Both scaled to the data; neither is forced to zero
Rows with gaps Skipped in pairs — a point needs both coordinates, and the count of skipped rows is reported
Point size Fixed 4 px; size carries no meaning here, unlike in a bubble chart
Output PNG at 2× scale, plus CSV, JSON and Markdown of the plotted pairs

When it misleads you

How it is calculated

Each row supplies one point: the column you assign to X gives the horizontal position, the column assigned to Y the vertical one. Rows where either value is missing or non-numeric are dropped as a pair, and the number dropped is reported under the chart rather than hidden.

Both axes are scaled to the data rather than anchored at zero. Unlike bars, a point encodes position rather than magnitude, so cropping the range does not distort the individual values — but it does change how steep the relationship looks, which is why the axis titles always show which column is which.

The two column selectors default to the first and second numeric columns rather than both to the first. That sounds trivial and it is not: a scatter of a column against itself produces a perfect diagonal and a correlation of exactly 1, which has fooled more than one person into thinking they had found something.

Points are drawn semi-transparent, so a dense area appears darker. It is a partial defence against overplotting, not a cure — for very large datasets a heatmap or a density plot is the honest answer.

Questions and answers

How many points do I need before the picture means anything?

Twenty is a reasonable floor for spotting a rough pattern, and around fifty before you should trust a judgement about its shape. Below ten, almost any arrangement looks like it might be a trend.

The cloud rises. Does that prove one causes the other?

No. It shows they move together. A third factor driving both — seasonality, growth of the whole business, a price change — is the most common explanation. The scatter tells you where to start looking, not what to conclude.

Can I add a trend line?

Use the linear regression tool: it draws the same points with a fitted line, and it gives you the slope, R² and the standard error so you can judge whether the line deserves belief.

Why do both selectors point at different columns by default?

Because plotting a column against itself always produces a perfect straight line. Defaulting both to the first column would show a meaningless but very convincing diagonal.

Is my data uploaded?

No. The whole plot is computed and drawn locally in your browser.

The opposite tool

Need it the other way round? CSV to bubble chart A scatter plot with a third number carried by the dot size

Related tools

All tools