A scatter plot from Google Sheets data can be built and exported as a clean standalone SVG in roughly a minute by copying two numeric columns into the Scatter Plot Maker, clicking generate, and downloading the resulting file. The tool accepts one strict x,y pair per non-empty line, supports signed values, decimals, and scientific notation, and reports valid, invalid, and over-limit rows as three separate counts so nothing is silently dropped. Each circle is plotted on two independent linear axes, the on-page preview and the downloaded file are built from the same percent-encoded SVG string, and no spreadsheet values leave the browser tab. Because the output is vector, the chart stays sharp when resized for slides, PDFs, or printouts, and the SVG includes numeric axis labels, a title, grid lines, and per-point text labels that show formatted x,y values in SVG-aware viewers.

make scatter plot in google sheets
Make a Scatter Plot in Google Sheets: Paste and Export

Why export from Sheets rather than use Insert > Chart

Sheets does ship with a built-in scatter chart under Insert > Chart, and it is perfectly usable for quick exploration inside a workbook. The friction appears once you want a portable file: there is no direct "save as SVG" button in the chart editor, and the path to a real image file usually runs through publishing the chart to the web, screenshotting, or copying it into Slides. There is also no surface in the chart editor that tells you how many cells actually fed the chart, so a stray text label or a blank cell only reveals itself by inspecting the rendered points visually.

The Scatter Plot Maker takes a different approach. Paste your x,y rows, and the summary line below the preview tells you exactly how many rows were valid, how many were malformed, and how many sat above the 200-row check boundary. The output is a real SVG file you can drop into a slide deck, embed in a GitHub README, or open in Inkscape without any wrapper. Every byte is produced locally in the current tab, so the data you paste never reaches a server.

Pull x,y pairs out of Google Sheets

The parser wants one strict pair per non-empty line, so the prep step is reshaping two columns of numbers into that form. Open the workbook with the data you want to plot, pick the two numeric columns, typically the independent variable on the left and the dependent variable on the right, and add a helper column with the formula =A2&","&B2 (substitute the actual cell references). Drag the helper column down to the last data row, copy that single column, and paste it into a plain text file or directly into the tool's textarea.

A lighter alternative is to select the two numeric columns, copy them into a plain text editor, and use find-and-replace to convert the tab between the two numbers into a comma. Either method produces clean x,y rows that match what the parser expects. Header rows and stray text rows are not a problem: they will be counted as invalid, they will not appear as (0,0) points on the chart, and they will not be mixed into the valid count. Rows that are intentionally blank are ignored entirely and do not appear in any of the three counts.

Build the scatter plot from x,y rows

  1. Open the Scatter Plot Maker in a browser tab.
  2. Type a chart title in the title field, for example "Hours studied vs. exam score." The title is XML-escaped, so closing tags, ampersands, quotes, and apostrophes render as visible text rather than breaking the SVG.
  3. Paste your x,y pairs into the data box, one pair per non-empty line, using the format x,y with no spaces around the comma.
  4. Click Generate. The summary line appears immediately and reports three separate numbers: valid points, invalid rows, and over-limit rows.
  5. Read the small numeric labels along the bottom and left edges of the preview to confirm the x range and the y range match what you expect. Both axes are independent linear scales and neither one auto-includes zero.
  6. Inspect a few circles in the preview. Every circle carries an SVG text element with its formatted x,y values, and the preview you see is the same SVG string that the download button produces.
  7. Click Download SVG. The file is a standalone 800 by 500 SVG with a white background, title, grid lines, axis labels, and blue circle markers.
  8. Drop the SVG into a slide, a Markdown file, or any vector editor. It stays sharp at any size because the geometry is vector.

How the row counts and axis labels work

The parser checks every non-empty row strictly. Exactly two comma-separated finite numbers per row are accepted; signed values, decimals, zero, and scientific notation all parse. Empty rows are ignored. Anything else, including extra commas, unit text, hex, Infinity, NaN, magnitudes above 1e12, or blank components, is counted as invalid and is reported separately, never silently truncated to (0,0) on an axis. Only the first 200 non-empty rows are evaluated for validity; any non-empty row past that boundary is counted as an over-limit skip and stays separate from the invalid count. The parser stops accepting input once the pasted text exceeds 50,000 UTF-16 code units, which is well above any practical x,y dataset of a few hundred rows.

The two axes use independent linear scales. The smallest x maps to the left plot edge, the largest x to the right, and the same rule applies vertically to y. Values between the extremes are placed in direct proportion to their numeric distance, so unequal numeric gaps stay unequal on the chart. Five reference lines and numeric labels expose each displayed range. Because zero is not inserted automatically, inspect the labels before reading the apparent position or spread of a cluster.

When every x value is identical, or every y value is identical, the minimum and maximum of that axis would collide and the coordinate calculation would divide by zero. The tool handles this by expanding that axis symmetrically around the constant value, using ten percent of the absolute constant or one unit, whichever is larger. As a result, a single valid point appears in the center of the chart instead of failing to render.

Parser behavior at a glance

The way the tool treats your input depends on the size and shape of the data. The table below summarizes the defined behavior for common input scenarios.

Input scenarioWhat the parser does
1 to 200 valid non-empty rowsEvery row is plotted; summary shows valid = N, invalid = 0, over-limit = 0
Some malformed rows inside the first 200Valid rows plot; each malformed row is counted as invalid separately
More than 200 non-empty rowsOnly the first 200 are checked; every later non-empty row counts as over-limit, never mixed into invalid
Pasted text over 50,000 UTF-16 code unitsInput above the limit is rejected by the parser
Identical pair repeatsBoth points draw at the same coordinates; later circles sit on top of earlier ones

How a constant or single-point axis is handled

The symmetric expansion rule kicks in for a different reason than the rest of the parser: it prevents a divide-by-zero in the coordinate calculation when an axis has no spread. The table below compares how each situation is drawn.

Axis situationHow the axis is drawn
x values span a normal rangeLinear scale; smallest x at the left edge, largest x at the right edge
All x values identicalSymmetric expansion of ten percent of the absolute constant or one unit, whichever is larger
All y values identicalSame symmetric rule applied to the y axis
Single valid pointBoth axes centered through the symmetric expansion rule
Range does not include zeroNo automatic zero insertion; the displayed range is the actual data range

What the SVG contains and what it does not contain

The downloaded file is a standalone SVG document, not a wrapper that depends on the tool to render. It contains a white background, the title you entered, grid lines, numeric axis labels, and one blue circle per valid point. Each circle holds an SVG text element whose content is the formatted x,y pair, so opening the file in a vector editor or in a browser that surfaces SVG accessibility trees reveals the exact coordinates behind each marker.

The SVG is intentionally simple. It does not compute correlation, regression, a trend line, confidence intervals, error bars, density, clusters, or statistical significance. It does not color points by category, support logarithmic axes, or apply publication styling. Coordinates are rounded to three decimal places and axis labels use practical significant digits or scientific notation for very large or very small values, which makes this a visualization rather than a precision-preserving data format. Keep the original rows for analysis, uncertainty, reproducibility, and exact values. Because SVG is a vector format defined by the W3C, lines, text, and circles stay sharp at any size, and the MDN SVG tutorial covers the underlying primitives if you want to edit the file by hand.

When the Scatter Plot Maker is the wrong tool

The tool fits small experiments, paired observations, calibration samples, classroom demonstrations, rough correlation checks, and quick visual inspection. It is the wrong tool when the job calls for formal statistical output, dense datasets with categorical color, log scales, or publication-quality styling. For those cases, run the analysis in Sheets, Excel, R, or Python and keep both the chart and the source dataset.

If the data is a sequence of connected measurements rather than paired observations, a line graph is a better fit than a scatter plot. See how to build one in Sheets with this line graph walkthrough. The two chart types answer different questions, so pick the one that matches the shape of the data.

For very dense datasets, identical pairs can overlap and hide one another. Sample down to a few hundred representative rows, or switch to a plotting package that supports transparency, color mapping, or density estimation. Overlapping circles are a visual hint to investigate duplicates in the source data, not a flaw in the renderer.

For a deeper look, see Dice Roller Cheat Sheet: Notation, Dice, and Quick Odds.