# CSV/Excel Chart Studio > Turn CSV, TSV or Excel data into line, bar, pie, scatter or histogram charts with SVG/PNG export. Upload a CSV, TSV or XLSX file (up to 20 MB) or paste a table. The studio detects numbers, dates and categories, lets you pick the chart type, X/Y columns, a grouping column, aggregation (sum, average, count …), sorting and top-N, and returns an accessible SVG chart with SVG and PNG downloads plus the data table behind it. Part of usefulweb.site (https://usefulweb.site/). Results are deterministic calculations from the inputs and the listed assumptions; the API returns exactly what the web page shows. ## Use it - Human interface: https://csvexcelchartstudio.usefulweb.site/ (interactive tool at https://csvexcelchartstudio.usefulweb.site/tool) - JSON API: POST https://csvexcelchartstudio.usefulweb.site/api/v1/calculate with a JSON object of inputs (schema: https://csvexcelchartstudio.usefulweb.site/api/v1/tool) - OpenAPI: https://csvexcelchartstudio.usefulweb.site/openapi.json - MCP (Streamable HTTP): https://csvexcelchartstudio.usefulweb.site/mcp - tool `csv_excel_chart_studio` ## Inputs - file (file): CSV, TSV or Excel file - CSV/TSV/TXT or .xlsx, max 20 MB. The format is detected from the content. Old .xls files: save as .xlsx first. - data (textarea): Or paste data - Comma-, semicolon-, tab- or pipe-separated, first row = headers. Used when no file is uploaded. - sheet (text): Excel sheet - Sheet name or number; default: the first sheet. - hasHeader (boolean): First row contains column names - chartType (select): Chart type - x (text): X column (categories or dates) - Column name, letter (A, B …) or number. Empty: first date or text column. - y (text): Y columns (values) - One or more column names, comma-separated. Empty: the numeric columns. No numeric column: rows are counted. - group (text): Group / series column - Optional: split the first Y column into one series per value of this column (e.g. Region) – ideal for stacked bars. - aggregation (select): Combine repeated X values - sort (select): Sort - topN (integer): Top N categories - 0 = all (very long category lists are cut automatically). - otherBucket (boolean): Combine the rest into "Other" - bins (integer): Histogram bins - 0 = automatic (Sturges’ rule). - title (text): Chart title - png (boolean): Also create a PNG image ## Method - The upload is identified by its content: XLSX (a ZIP container) is unpacked with a built-in reader (shared strings, number formats for dates, cached formula values of the chosen sheet); everything else is read as UTF-8 text (Windows-1252 as fallback) and split with the delimiter that gives the most consistent column count. - Each column is classified as number, date or text when at least 90 % of its non-empty cells parse that way. Numbers may use thousands separators, a decimal comma (detected per column), currency signs, percent signs and (123) for negatives. Day/month order of dates like 03/04/2026 is detected per column; when the data never disambiguates it, day-first is assumed and stated. - For bar, stacked, pie, line and area charts, rows with the same X value are combined with the chosen aggregation (automatic = sum). With a group column, the first Y column is split into one series per group value (at most 8; the rest become "Other"). Top N keeps the categories with the largest totals. - Charts are drawn by the site’s own SVG library: colour-blind-safe Okabe–Ito colours plus dash patterns or marker shapes, a text alternative, and the data table below. PNG images are rendered from the same SVG at 2× resolution with ImageMagick. - Very large inputs are reduced for drawing only: lines with more than 2,000 points show bucket averages, scatter plots with more than 5,000 points show every n-th point; the table and CSV keep all values. ## Limits - Check that the detected column types and the aggregation match your data before publishing a chart.