I work on OnePassApps, and we build the browser studios and the apps behind them. This one is the Chart Maker: paste a CSV, get a bar, line or scatter chart, and download it as SVG or PNG.
The panel's own line is the whole promise: "Turn local CSV into a chart, then download SVG or PNG. Up to 500 rows and 1 MB."
Try it on the Chart Maker, or read how it fits with the rest of the suite in the app guides.
Three stages, and what each one shows
01 Data carries a "Paste CSV" button, a "Load example" button and the sample data itself - the sample loads as "6 rows · 3 columns · 119 B" - with the hint "Edit cells in the table, or drop a CSV on the stage."
02 Chart carries a Chart title field (the sample loads with "Revenue by month"), three chart type cards - Bar (Compare), Line (Trend) and Scatter (Relate) - and two column pickers: "X column (labels)" and "Y column (numeric)". The Y picker lists every column in the file, including the text one.
03 Export states the two output sizes up front: "SVG 1000 × 620" and "PNG 2000 × 1240".
Under the panel: "Nothing leaves this tab."
What a real CSV did
I dropped a CSV of my own - seven rows, a month key, a Revenue column and an Expenses column - onto the file input. The stage read the file name back and counted it as "7 rows · 3 columns · 100 B", and the preview described the chart in a whole sentence: "Bar chart of Revenue by Month, 7 points: highest Jul at 250, lowest Jan at 100."
The preview draws the axis titles (Revenue on the value axis, Month on the category axis) and the table under it types each column for you: Month as TEXT · X AXIS, Revenue as NUMBER · Y AXIS, Expenses as NUMBER.
The export, read off disk
Download SVG wrote revenue-by-month.svg, 4,309 bytes. Its root element is width="1000" height="620" viewBox="0 0 1000 620", carries role="img" and aria-labelledby="chart-title chart-description", holds the value scale as text labels - 0, 50, 100, 150, 200, 250 for that data - and contains no script tag.
Download PNG wrote revenue-by-month.png, 93,818 bytes, and the PNG header reads 2000 x 1240 - the exact size the export panel promises.
Then the check that matters more than the panel's privacy line: in the session where I loaded my CSV and downloaded both files, the network trace recorded 133 requests, every one of them a GET, with no request body at all. A second session, where I switched the chart types and tripped the data error, recorded 132 requests, again all GET and again no request bodies. The CSV and the chart stayed in the tab.
The catch: Scatter wants a numeric X
Switching to Scatter with the sample's month names raises the app's own data check:
Check the data
Row 2, “Month”: enter a finite number between −1 trillion and 1 trillion. Blank cells, currency symbols and thousands separators are not numbers.
Row 2 is the first data row under the header. The X picker's own label changes from "X column (labels)" to "X column (numeric)" for the scatter chart, and the preview kept showing the previous line chart while the data was in error - so a text key such as a month name cannot be the X axis of a scatter chart until you point X at a numeric column or edit the cells to numbers.
Editing happens in the table itself: the panel says "Chart follows your edits.", with Enter to save and Esc to cancel.
What it costs
The plan block on the page reads "Standard is free right now", "$0 / month", "100,000 credits every 30 days · No end date set · No card required", and "No automatic paid subscription."
I work on OnePassApps - the Chart Maker is one of the apps on our home page, and the browser studios sit next to it.