TapCub is live — analytics, insights and live chat, free on one platform

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
Chart maker

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.

Runs entirely in your browser. Nothing you type here is uploaded or stored by TapCub.
Sign-ups by channelOrganic: 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 460Sign-ups by channelOrganicPaidReferralJan · Organic: 1,2401,240Jan · Paid: 860860Jan · Referral: 310310Feb · Organic: 1,3801,380Feb · Paid: 920920Feb · Referral: 290290Mar · Organic: 1,5101,510Mar · Paid: 1,0401,040Mar · Referral: 350350Apr · Organic: 1,6201,620Apr · Paid: 980980Apr · Referral: 420420May · Organic: 1,7501,750May · Paid: 1,0101,010May · Referral: 46046005001,0001,5002,000JanFebMarAprMay
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.

chart.svg
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 680 386" width="680" height="386" font-family="Inter,&quot;PingFang SC&quot;,&quot;Microsoft YaHei&quot;,&quot;Noto Sans SC&quot;,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

Choose the chart

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.

How to use it

From spreadsheet to slide in four steps

The chart redraws as you type.

  1. 1

    Copy the cells

    Select the table in Excel, Google Sheets or Numbers — including the header row — and copy. Or paste CSV text.

  2. 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. 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. 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.

How it reads your data

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”.
What each chart expects
ChartColumnsExample row
Bar / linelabel, value, [value…]Jan, 1240, 860
Pielabel, value (positive)Email, 860
Funnelstep, count (in order)Added to cart, 1248
Sankeysource, target, valueGoogle, Pricing, 150
Worked example

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.

Sign-ups by channel, January to May
QuestionChartWhat it shows
Which channel brings the most?Bar, groupedOrganic leads every month; paid is second.
Is the total growing?Bar, stackedTotal rises from 2,410 in January to 3,220 in May.
Which channel is growing fastest?LineReferral 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.

Common mistakes

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.

FAQ

Chart 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.

Changelog

Update history

New features, fixes and data refreshes for this tool, newest first.

  1. · 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

See your data clearly. Find your growth.

Every click, backed by data. Install one line of code and see your first numbers in a minute.

No credit card · Free plans for analytics and chat · Cookieless analytics