Free tool Chart maker: paste a table, get a pie chart, bar graph or line graph
Copy a few cells from Excel or Google Sheets, paste them here, and get a clean chart you can drop into a report or slide: pie, bar, line, funnel or Sankey. Nothing is uploaded, and there is no watermark or account.
- Paste from Excel, Sheets or CSV
- SVG, PNG and embed code
- Runs locally
Paste data, pick a chart
First column = categories (or the x-axis); every other column = one series. A first row with names is used as the header. For a Sankey diagram, paste source, target, value rows instead.
Tabs (copied from a spreadsheet), commas or semicolons. 1,200, 12%, $5.40 and −30 are all read as numbers.
Paste a table on the left to draw a chart.
Step conversion
Inline SVG embed code
Paste it straight into an HTML page, a CMS block that accepts HTML, or a Markdown file that allows HTML. It scales to its container and has a title for screen readers.
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 680 386" width="680" height="386" font-family="Inter,"PingFang SC","Microsoft YaHei","Noto Sans SC",system-ui,sans-serif" role="img" aria-label="Sign-ups by channel" style="display:block;max-width:100%;height:auto;margin:0 auto"><title>Sign-ups by channel</title><desc>Organic: Jan 1,240, Feb 1,380, Mar 1,510, Apr 1,620, May 1,750; Paid: Jan 860, Feb 920, Mar 1,040, Apr 980, May 1,010; Referral: Jan 310, Feb 290, Mar 350, Apr 420, May 460</desc><rect width="680" height="386" fill="#ffffff"/><text x="16" y="28" font-size="16" font-weight="700" fill="#0b0f19">Sign-ups by channel</text><rect x="16" y="46" width="10" height="10" rx="2" fill="#2050f0"/><text x="31" y="55" font-size="12" fill="#4b5563">Organic</text><rect x="92.3" y="46" width="10" height="10" rx="2" fill="#eb6834"/><text x="107.3" y="55" font-size="12" fill="#4b5563">Paid</text><rect x="148.8" y="46" width="10" height="10" rx="2" fill="#1baf7a"/><text x="163.8" y="55" font-size="12" fill="#4b5563">Referral</text><path d="M55.46000000000001 350H664" stroke="#d1d5db" stroke-width="1"/><path d="M55.46000000000001 280H664" stroke="#e5e7eb" stroke-width="1"/><path d="M55.46000000000001 210H664" stroke="#e5e7eb" stroke-width="1"/><path d="M55.46000000000001 140H664" stroke="#e5e7eb" stroke-width="1"/><path d="M55.46000000000001 70H664" stroke="#e5e7eb" stroke-width="1"/><path d="M74.3 350V180.4Q74.3 176.4 78.3 176.4H97Q101 176.4 101 180.4V350Z" fill="#2050f0"><title>Jan · Organic: 1,240</title></path><text x="87.6" y="171.4" text-anchor="middle" font-size="10" fill="#0b0f19">1,240</text><path d="M103 350V233.6Q103 229.6 107 229.6H125.6Q129.6 229.6 129.6 233.6V350Z" fill="#eb6834"><title>Jan · Paid: 860</title></path><text x="116.3" y="224.6" text-anchor="middle" font-size="10" fill="#0b0f19">860</text><path d="M131.6 350V310.6Q131.6 306.6 135.6 306.6H154.3Q158.3 306.6 158.3 310.6V350Z" fill="#1baf7a"><title>Jan · Referral: 310</title></path><text x="145" y="301.6" text-anchor="middle" font-size="10" fill="#0b0f19">310</text><path d="M196 350V160.8Q196 156.8 200 156.8H218.7Q222.7 156.8 222.7 160.8V350Z" fill="#2050f0"><title>Feb · Organic: 1,380</title></path><text x="209.4" y="151.8" text-anchor="middle" font-size="10" fill="#0b0f19">1,380</text><path d="M224.7 350V225.2Q224.7 221.2 228.7 221.2H247.4Q251.4 221.2 251.4 225.2V350Z" fill="#eb6834"><title>Feb · Paid: 920</title></path><text x="238" y="216.2" text-anchor="middle" font-size="10" fill="#0b0f19">920</text><path d="M253.4 350V313.4Q253.4 309.4 257.4 309.4H276Q280 309.4 280 313.4V350Z" fill="#1baf7a"><title>Feb · Referral: 290</title></path><text x="266.7" y="304.4" text-anchor="middle" font-size="10" fill="#0b0f19">290</text><path d="M317.7 350V142.6Q317.7 138.6 321.7 138.6H340.4Q344.4 138.6 344.4 142.6V350Z" fill="#2050f0"><title>Mar · Organic: 1,510</title></path><text x="331.1" y="133.6" text-anchor="middle" font-size="10" fill="#0b0f19">1,510</text><path d="M346.4 350V208.4Q346.4 204.4 350.4 204.4H369.1Q373.1 204.4 373.1 208.4V350Z" fill="#eb6834"><title>Mar · Paid: 1,040</title></path><text x="359.7" y="199.4" text-anchor="middle" font-size="10" fill="#0b0f19">1,040</text><path d="M375.1 350V305Q375.1 301 379.1 301H397.7Q401.7 301 401.7 305V350Z" fill="#1baf7a"><title>Mar · Referral: 350</title></path><text x="388.4" y="296" text-anchor="middle" font-size="10" fill="#0b0f19">350</text><path d="M439.4 350V127.2Q439.4 123.2 443.4 123.2H462.1Q466.1 123.2 466.1 127.2V350Z" fill="#2050f0"><title>Apr · Organic: 1,620</title></path><text x="452.8" y="118.2" text-anchor="middle" font-size="10" fill="#0b0f19">1,620</text><path d="M468.1 350V216.8Q468.1 212.8 472.1 212.8H490.8Q494.8 212.8 494.8 216.8V350Z" fill="#eb6834"><title>Apr · Paid: 980</title></path><text x="481.4" y="207.8" text-anchor="middle" font-size="10" fill="#0b0f19">980</text><path d="M496.8 350V295.2Q496.8 291.2 500.8 291.2H519.4Q523.4 291.2 523.4 295.2V350Z" fill="#1baf7a"><title>Apr · Referral: 420</title></path><text x="510.1" y="286.2" text-anchor="middle" font-size="10" fill="#0b0f19">420</text><path d="M561.1 350V109Q561.1 105 565.1 105H583.8Q587.8 105 587.8 109V350Z" fill="#2050f0"><title>May · Organic: 1,750</title></path><text x="574.5" y="100" text-anchor="middle" font-size="10" fill="#0b0f19">1,750</text><path d="M589.8 350V212.6Q589.8 208.6 593.8 208.6H612.5Q616.5 208.6 616.5 212.6V350Z" fill="#eb6834"><title>May · Paid: 1,010</title></path><text x="603.1" y="203.6" text-anchor="middle" font-size="10" fill="#0b0f19">1,010</text><path d="M618.5 350V289.6Q618.5 285.6 622.5 285.6H641.1Q645.1 285.6 645.1 289.6V350Z" fill="#1baf7a"><title>May · Referral: 460</title></path><text x="631.8" y="280.6" text-anchor="middle" font-size="10" fill="#0b0f19">460</text><text x="47.5" y="354" text-anchor="end" font-size="11" fill="#6b7280">0</text><text x="47.5" y="284" text-anchor="end" font-size="11" fill="#6b7280">500</text><text x="47.5" y="214" text-anchor="end" font-size="11" fill="#6b7280">1,000</text><text x="47.5" y="144" text-anchor="end" font-size="11" fill="#6b7280">1,500</text><text x="47.5" y="74" text-anchor="end" font-size="11" fill="#6b7280">2,000</text><text x="116.3" y="367" text-anchor="middle" font-size="11" fill="#4b5563">Jan</text><text x="238" y="367" text-anchor="middle" font-size="11" fill="#4b5563">Feb</text><text x="359.7" y="367" text-anchor="middle" font-size="11" fill="#4b5563">Mar</text><text x="481.4" y="367" text-anchor="middle" font-size="11" fill="#4b5563">Apr</text><text x="603.1" y="367" text-anchor="middle" font-size="11" fill="#4b5563">May</text></svg>Version v1.0Updated Update history
Which chart fits which data
Start from the question the chart has to answer, not from the chart you like. The data usually decides for you.
Compare amounts → bar chart
Which channel, country or product is bigger? Bars put every value on the same baseline, so even small differences are visible. Sort them largest first unless the categories have a natural order.
Change over time → line chart
Daily visits, weekly sign-ups, monthly revenue. The x-axis must be evenly spaced time; two or three lines are fine, ten are not.
Parts of one whole → pie chart
Only when the slices add up to a meaningful 100% and there are few of them. With more than about seven slices, or two pies to compare, use bars.
Steps or flows → funnel or Sankey
A funnel shows how many people survive each step of one path. A Sankey diagram shows where traffic splits and merges between several paths.
One rule for every chart here: one y-axis. If two measures have different scales (sessions and revenue), make two charts instead of a dual-axis chart.
From spreadsheet to slide in four steps
The chart redraws as you type.
-
1
Copy the cells
Select the table in Excel, Google Sheets or Numbers — including the header row — and copy. Or paste CSV text.
-
2
Paste and pick a type
The first column becomes the categories; each other column becomes a series. Pick the chart type; the checks under the chart tell you if the data does not fit it.
-
3
Tidy it up
Add a title, choose a palette, sort bars largest first, switch bars to horizontal for long names, stack or group several columns.
-
4
Export
Download a PNG for slides and chat, an SVG for print and design tools, or copy the inline SVG to embed it in a web page.
The parsing rules
The tool guesses as little as possible and tells you when it had to.
- Separator: tabs if the text has any (that is what a spreadsheet copy gives you), otherwise whichever of comma, semicolon or vertical bar gives the most consistent columns. Quoted CSV cells are supported.
- Header: the first row is a header if any cell after the first column is not a number.
- Numbers: thousands separators, currency symbols, a trailing %, a leading minus or accounting brackets, full-width digits and 万 / 亿 / k suffixes are understood. Anything else is left empty and listed.
- Limits: 200 rows and 8 number columns. Pie charts keep the 7 largest slices and group the rest as “Other”.
| Chart | Columns | Example row |
|---|---|---|
| Bar / line | label, value, [value…] | Jan, 1240, 860 |
| Pie | label, value (positive) | Email, 860 |
| Funnel | step, count (in order) | Added to cart, 1248 |
| Sankey | source, target, value | Google, Pricing, 150 |
One table, three honest charts
The default data is five months of sign-ups from three channels. The same numbers answer different questions depending on the chart.
| Question | Chart | What it shows |
|---|---|---|
| Which channel brings the most? | Bar, grouped | Organic leads every month; paid is second. |
| Is the total growing? | Bar, stacked | Total rises from 2,410 in January to 3,220 in May. |
| Which channel is growing fastest? | Line | Referral grows 48% (310 → 460), organic 41%, paid 17%. |
| What share was referral in May? | Pie (May only) | 460 of 3,220 = 14.3%. |
Percent change = (May − January) ÷ January. Paste just the May column into a pie to check the share yourself.
Charts that mislead without lying
Every number can be right and the chart still gives the wrong impression.
Bars that don’t start at zero
A bar’s length is its value. Cut the axis at 900 and 950 looks twice as big as 925. This tool always starts bars at zero; lines may zoom in.
Pies with a total slice
A “Total” row pasted with the parts makes every slice half its real size. The tool warns when a row equals the sum of the others.
Two y-axes
With two scales, where the lines cross is decided by whoever set the axes. Use two charts, or index both series to 100.
Colour as the only label
About one man in twelve has some colour-vision deficiency. Every chart here also names its series in a legend or label.
Charts that stay up to date
A pasted chart is a snapshot. In TapCub the same charts are built from live events and refresh by themselves.
Dashboards
Pin charts from any report and share them with your team, or by read-only link.
Learn moreFunnels and paths
Step conversion, time between steps, and the real paths before and after any event.
Learn moreAsk in plain language
Type a question and get a chart with a one-line conclusion.
Learn moreChart maker questions
Still have a question?
Chat with the team behind TapCub — we usually reply within a few hours on business days.
Is this chart maker free?
Yes. There is no account, no watermark and no limit on downloads. The chart is drawn in your browser and the data never leaves your device.
How do I make a chart from Excel or Google Sheets?
Select the cells including the header row, copy, and paste into the Data box. Spreadsheets copy as tab-separated text, which the tool reads directly.
Should I download SVG or PNG?
PNG for slides, chat and email — it is rendered at two to three times screen resolution. SVG for print, Figma or Illustrator, and the web: it stays sharp at any size and its text can still be edited.
Can I embed the chart on my website?
Yes. “Copy embed code” gives an inline SVG. Paste it into any HTML page; it needs no script and scales to its container. Hovering a bar or slice shows its value.
Why is there no dual-axis chart?
Because two y-axes let the chart’s author decide where lines cross. If two measures have different units, two charts side by side are easier to read honestly.
Is my data uploaded anywhere?
No. Parsing and drawing happen in this page. TapCub records only that the tool was used, never what you pasted.
Update history
New features, fixes and data refreshes for this tool, newest first.
-
· v1.0
LaunchedFirst release.
Missing something or found an error? Tell us — requests that come up often go into the next update. All tool updates
Stop rebuilding the same chart every week
Connect your site or app once and the traffic, funnel and retention charts build themselves from live data.