Your files never leave your device. All processing happens locally in your browser.
How do I make a chart or graph from my data online for free?
Open the Chart & Graph Maker, type or paste your data into the table (or start from a template), pick a chart type — vertical or horizontal bar, grouped or stacked, line, filled area, pie or doughnut — choose a canvas size, a colour-blind-safe palette and a few labels, and the chart renders live. A pure engine does the real maths: Wilkinson-style “nice number” axis scaling for friendly 1/2/5 gridlines, cartesian layout, and bar/line/pie geometry. Download it as a crisp 2× or 3× PNG or as a resolution-independent SVG. Everything runs in your browser — your data is never uploaded.
Six chart types: bar (V/H, grouped or stacked), line, area, pie and doughnut
Type or paste CSV/TSV data, or start from six built-in templates
“Nice number” axis scaling with 1.5K / 2M tick formatting and a zero baseline
A chart maker is a tool that turns a small table of categories and numeric values into a graphic — a bar, line, area, pie or doughnut chart — by mapping each value onto a coordinate system (a value axis for cartesian charts, or slice angles proportional to each value’s share of the total for circular charts). A client-side chart maker computes the axis scale, layout and geometry in the browser and rasterises the result to a canvas (PNG) or serialises it as vector SVG, without sending the data to a server.
Design
Related terms
bar chartline grapharea chartpie chartdoughnut chartstacked bar chartgrouped bar chartaxis scalingnice numbers algorithmdata visualizationcolour-blind-safe palettePNG exportSVG exportdevicePixelRatio
Frequently Asked Questions
No. Your rows and numbers stay in the page as JavaScript values. The axis maths, layout and every pixel are computed locally, and both the PNG and the SVG are encoded in your browser. There is no upload, no server and no CDN in the processing path.
The Chart & Graph Maker is 100% client-side. Your labels and values are held as ordinary state in the tab and passed to a pure rendering engine that runs in JavaScript — it never leaves your device. The live preview is an inline SVG generated from your data; the PNG download is produced by drawing the same geometry onto an in-memory <canvas> and calling toBlob; the SVG download is that same markup as a Blob. All three are created and downloaded in-memory with no network request, there is no analytics or tracking, and the tool works offline once cached. Close the tab and the data and the chart are gone.
Use PNG for slides, docs and quick sharing — it is a fixed-resolution image exported at 2× or 3× for crispness. Use SVG for print or when you need to scale or re-edit the chart, because it is resolution-independent vector.
PNG is a raster (pixel) format: this tool exports it at 2× or 3× the canvas size so it looks sharp on high-DPI screens and in documents, but enlarging it well beyond that will look soft because the pixels are fixed. SVG is a vector format — it stores the shapes and text mathematically, so it stays razor-sharp at any size and can be re-edited in a vector editor, which makes it the better choice for print or further design work. Both are generated from the identical chart geometry, so they look the same; the only caveat is that SVG references fonts by name, so if it is opened on a system without the same web-safe font the text metrics may shift slightly.
A pie or doughnut chart shows parts of a single whole, so it is best for a few categories that sum to 100%. A bar chart compares independent values and stays readable with many categories or multiple series, so it is the safer default for most comparisons.
Pie and doughnut charts encode each value as an angle proportional to its share of the total, which makes them good for showing composition — how a single quantity splits into a handful of parts — but people judge angles and areas poorly, so they become unreliable with more than about five or six slices. Bar charts encode values as lengths along a common baseline, which the eye reads far more accurately, so they handle many categories, negative values and multiple series (grouped or stacked) cleanly and are the better default for comparisons. Line and area charts are for showing a trend or change across an ordered axis such as time. In this tool, pie and doughnut use only the first value column because they represent one whole; bar, line and area use every series you add.
The tool rounds the axis to “nice” values. It extends the top of the scale to a clean 1/2/5 multiple so the gridlines land on friendly round numbers instead of odd figures, which makes the chart much easier to read.
Rather than ending the value axis exactly at your largest data point — which would produce awkward tick labels like 87 or 4,913 — the engine uses a Wilkinson-style “nice number” algorithm. It rounds the data range to a clean magnitude, picks a tick step that is a 1, 2, or 5 times a power of ten, and then extends the axis floor and ceiling to whole multiples of that step, always keeping the zero baseline so bar lengths stay honest. That is why the top gridline may sit a little above your maximum (for example an axis to 100 when your biggest value is 90): the trade is a small amount of empty headroom for gridlines on round, readable numbers, and big values are further compacted as 1.5K or 2M.
Detailed Explanation
📖How It Works
What the Chart & Graph Maker Does
The Chart & Graph Maker turns a small table of categories and numeric values into a bar, line, area, pie or doughnut chart, entirely in the browser. The user types or pastes data (or starts from a template), picks a chart type, canvas size, palette and labels, and a live preview updates instantly. The finished chart downloads as a high-resolution PNG or a resolution-independent SVG. It is a static chart image maker, not an interactive dashboard.
Six chart types: bar (vertical/horizontal, grouped or stacked), line, area, pie, doughnut
Data entered in an editable table or pasted as CSV/TSV; six starting templates
Multiple series, per-series legend, titles, subtitle and axis labels
Live preview at the true canvas aspect ratio; export as PNG or SVG
100% client-side — no upload, no server, no CDN in the processing path
⚙️Methodology
Nice-Number Axis Scaling
For cartesian charts the engine builds a human-friendly value axis with a Wilkinson-style "nice number" algorithm. It rounds the data range to a clean magnitude, chooses a tick step that is 1, 2, or 5 times a power of ten, and extends the axis floor and ceiling to whole multiples of that step while always keeping the zero baseline so bar lengths stay honest. Tick labels are compacted (1500 → 1.5K, 2000000 → 2M) so the chart reads cleanly rather than showing awkward figures.
Tick step is a 1 / 2 / 5 multiple of a power of ten (Wilkinson-style)
Axis floor and ceiling snap to whole multiples of the step
Zero baseline is always included so bar lengths are not misleading
Large ticks are formatted as 1.5K / 2M / 3B for readability
A small amount of headroom is traded for round, legible gridlines
🔧Technical Details
One Geometry, Two Renderers (PNG = SVG)
The chart is rendered ONCE against an abstract "Surface" interface with primitives for rectangles, lines, paths, circles, pie wedges and text. Two adapters implement that interface: an SVG-string surface that powers the live preview and the .svg download, and a Canvas2D surface that draws the same geometry for the PNG export. Because both consume the identical layout and coordinates, the on-screen preview, the SVG and the 2×/3× PNG are pixel-identical by construction.
Abstract Surface with rect / line / path / circle / wedge / text primitives
SVG-string adapter drives the live preview AND the vector .svg export
Canvas2D adapter draws the identical geometry for PNG export
PNG rendered at 2× or 3× the canvas size via devicePixelRatio scaling
Smooth lines use a Catmull-Rom → cubic-bezier conversion in both adapters
📋Use Cases
Choosing the Right Chart Type
Bar charts encode values as lengths on a common baseline, which the eye reads accurately, so they are the safe default for comparing categories and handle many categories, negative values and multiple series (grouped or stacked). Line and area charts show a trend across an ordered axis such as time. Pie and doughnut charts encode each value as an angle proportional to its share of a whole, so they suit composition with a few categories but become unreliable beyond about five or six slices — and they use only the first value column here because they represent one total.
Bar: accurate length comparison; best default; supports many series & negatives
Line / area: trend or change across an ordered (e.g. time) axis
Pie / doughnut: parts of a single whole; keep to ~5–6 slices
Pie/doughnut use only the first value column (one total)
Colour-blind-safe palettes plus value labels avoid relying on colour alone
⚠️Limitations
Honest Limits
This tool produces a static chart image, not an interactive dashboard: there are no hover tooltips, panning, zoom, live data feeds, animation, log or dual axes, or trendline fitting. PNG export is a fixed-resolution raster (crisp at 2×/3× but soft if enlarged far beyond that), so SVG is the better choice for print or re-editing. Text uses the browser web-safe font stacks — embedded in the PNG and referenced by name in the SVG — so an SVG opened without the same font may show slightly shifted metrics. Colours vary across screens and colour profiles.
Static image maker — no tooltips, zoom, animation, log/dual axes or trendlines
PNG is fixed-resolution raster; SVG is resolution-independent (best for print)
Fonts are web-safe stacks; a missing font can shift SVG text metrics
Pie/doughnut use only the first value column
Colours render differently across screens — verify on your target device
🔒Privacy & Security
Private by Design
Everything happens on the user’s device. The rows, labels and numbers are held as ordinary state in the tab and passed to a pure rendering engine that runs in JavaScript; nothing is transmitted. The live preview is an inline SVG built from the data, the PNG is drawn on an in-memory canvas and encoded with toBlob, and the SVG file is that same markup as a Blob — all downloaded through in-memory object URLs with no network request. There is no analytics, no tracking and no CDN in the processing path, and the tool works offline once cached.
Data stays as values in the page; the engine runs locally in JavaScript
No upload endpoint, no server-side processing, no CDN in the path
PNG via in-memory canvas + toBlob; SVG via Blob; downloaded in-memory
No analytics or tracking; works offline once cached
Data and chart are discarded when the tab is closed
Chart types in the Chart & Graph Maker and when to use each
Chart type
Encodes value as
Best for
Bar (vertical / horizontal)
Length along a common baseline
Accurate comparison of categories; the safe default
Grouped / stacked bar
Side-by-side or stacked lengths
Multiple series per category; part-to-whole per bar (stacked)
Line
Position along a value axis, joined
Trends and change across an ordered (e.g. time) axis
Area
Filled region under a line
Cumulative totals or magnitude of a trend over time
Pie / doughnut
Angle proportional to the whole
Composition of a single total across a few (~5–6) categories
People judge length far more accurately than angle or area, so bar charts are the safer default and pie/doughnut are best kept to a handful of slices. As of July 2026.