CSV to chart
Copy cells from Excel or Google Sheets, or paste or open a CSV file. The first row names the columns, the label and number columns are detected, and the chart draws as you paste.
Reading columns…
Your data is read in your browser. PNG and PDF are drawn by the Render API from the same spec and nothing is stored. An image URL contains the data, so anyone with the link can read it.
How to use it
- In your spreadsheet, select the table including the header row and copy it, or save it as CSV.
- Paste it into the data box or open the file. Tabs from Excel and Sheets are detected.
- Check which columns are plotted and how repeats are combined, then pick a chart type and download.
How your table is read
- Row 1 holds the column names.
- The first date or text column becomes the labels. You can pick another.
- Number columns become series. Untick any you don't want.
- Long format (one row per date and category) can be split into series by the category column.
- Blank cells count as 0, and values like 1,200, $45 and 12% are read as numbers.
Worked example: a Google Sheets chart without Sheets
In Google Sheets choose File, Share, Publish to web, pick the sheet and CSV, and copy the link. Paste it into Load from a public URL. The chart maker reads the published CSV, and because the image URL holds the numbers, the chart you embed is a snapshot of the sheet at that moment.
Example CSV
Month,Revenue,Costs
Jan,12000,8000
Feb,15500,8600
Mar,18200,9100Do it from code or an AI assistant
The same renderer is an HTTP API and an MCP tool, so this exact result can come from a script or from Claude, ChatGPT or Cursor. See the Render API reference and the MCP setup guide.
HTTP API
# GET: the URL is the image (embed it in Markdown, email or Slack)
curl -o chart.png "https://render.cuelark.com/v1/chart?c=%7B%22type%22%3A%22bar%22%2C%22title%22%3A%22Signups%20by%20channel%22%2C%22labels%22%3A%5B%22Organic%22%2C%22Paid%22%2C%22Referral%22%2C%22Partners%22%5D%2C%22datasets%22%3A%5B%7B%22label%22%3A%22October%22%2C%22data%22%3A%5B480%2C320%2C140%2C90%5D%7D%2C%7B%22label%22%3A%22November%22%2C%22data%22%3A%5B560%2C290%2C180%2C130%5D%7D%5D%2C%22stacked%22%3Atrue%7D"
# POST: same chart at 2x for slides
curl -X POST https://render.cuelark.com/v1/chart -H "content-type: application/json" \
-d '{"chart":{"type":"bar","title":"Signups by channel","labels":["Organic","Paid","Referral","Partners"],"datasets":[{"label":"October","data":[480,320,140,90]},{"label":"November","data":[560,290,180,130]}],"stacked":true},"format":"png","scale":2}' -o chart@2x.pngMCP tool call: render_chart
{
"method": "tools/call",
"params": {
"name": "render_chart",
"arguments": {
"type": "bar",
"title": "Signups by channel",
"labels": [
"Organic",
"Paid",
"Referral",
"Partners"
],
"datasets": [
{
"label": "October",
"data": [
480,
320,
140,
90
]
},
{
"label": "November",
"data": [
560,
290,
180,
130
]
}
],
"stacked": true
}
}
}Frequently asked questions
Does pasting from Excel work?
Yes. Cells copied from Excel, Google Sheets or Numbers paste as tab-separated text, which is detected automatically.
Is my spreadsheet uploaded?
No. Parsing and the preview happen in your browser. Only a PNG download sends the parsed numbers once to our renderer, and nothing is stored.
My numbers use commas for decimals (1,5). Will that work?
Use semicolons between columns, the usual European CSV export, and write decimals with a dot, like 1.5.
Updated November 10, 2026 by the Cuelark Team.