Why use ChartMill?
Every chart renders locally — paste data containing anything sensitive without it leaving your browser.
Standalone SVG — no runtime required
The output SVG contains everything it needs to display. No Chart.js bundle, no D3 dependency, no script tag — paste it into any HTML page or design tool and it renders. Most chart tools produce canvas images or SVGs that reference external resources; ChartMill's output is fully self-contained.
Four input formats, auto-detected
CSV, TSV (paste straight from a spreadsheet), JSON array of objects, and GitHub-flavoured markdown tables all work without changing any settings. The format is detected from the data itself, so there's nothing to configure before your chart appears.
Accessible colour palettes built in
The default palette is visually distinct across eight series. One click switches to a palette validated against protanopia, deuteranopia, and tritanopia — so charts stay readable for colour-blind readers without any manual adjustment.
Four export modes
Copy raw SVG markup, copy a base64 data URI for inline CSS embedding, download SVG, or download PNG at 2× resolution. All exports are available instantly with no account, no watermark, and no file size cap.
Why self-contained SVG output matters
Most online chart tools render to a canvas element or produce a PNG. Both lose the scalability of vector graphics. ChartMill generates SVG directly — the output is a text file you can drop into any HTML page, CSS stylesheet, or design tool and it scales to any size without blur. More importantly, it has no runtime dependency: there is no Chart.js, no D3, no external script tag required to display it. The SVG is the chart. Paste it into a README, embed it in an email template, use it as an img src in a React component — it works everywhere, forever, with no library version to maintain.
Supported input formats and how detection works
ChartMill accepts four input formats and detects them automatically. CSV uses comma delimiters and handles quoted fields containing commas. TSV (tab-separated) is the format produced when you copy cells from a spreadsheet — paste directly from Excel, Google Sheets, or Numbers without converting first. JSON accepts an array of objects where each key becomes a column header. Markdown tables follow the GitHub-flavoured pipe syntax and are detected when the first non-blank line starts with a pipe character. In all cases, the first row is treated as the header row. The format label updates live as you type so you can confirm detection before the chart renders.
Choosing the right chart type for your data
Bar charts show comparisons across discrete categories — use them when the order of categories does not imply a trend. Horizontal bar charts work better when category labels are long or when there are many categories. Line and area charts are for ordered series where the progression along the x-axis matters — time series, sequential steps, or ordered measurements. Area charts add a filled region below the line to emphasise cumulative volume. Pie and donut charts show part-to-whole relationships — they work best with five or fewer slices, since more than that makes the proportions difficult to distinguish. Scatter charts plot pairs of numeric values against each other and are appropriate when you want to show correlation rather than categorised comparison. ChartMill automatically detects scatter data when both the first and second columns are numeric.
Colour palettes and accessibility
The default palette is designed to be visually distinct across eight series on a dark background. The colorblind palette substitutes the default colours for a set tested against the three most common forms of colour vision deficiency — protanopia, deuteranopia, and tritanopia — so that distinct series remain distinguishable to all readers. The mono palette uses steps of the same hue for contexts where colour printing is not reliable or where a consistent brand tone is required. The pastel palette softens all stops for lighter backgrounds or presentations where saturated colour would feel heavy. All palette options are available regardless of chart type.
What format does my data need to be in?
The most common case: copy cells from a spreadsheet and paste them in. That’s tab-separated format and ChartMill handles it automatically. If the first row has column names, those become the chart labels. If you have a CSV file, open it in a text editor and paste the contents. If you have JSON, paste an array of objects — like what an API returns. If you have a markdown table from a GitHub README or Notion, paste that too. ChartMill figures out the format from the shape of the data and tells you which one it detected at the bottom of the input.
How to read the chart type buttons
Bar is the default — it shows one vertical bar per value. Horiz Bar is the same thing rotated sideways, which is easier to read when the labels are long. Line connects values with a line and is good for showing how something changes over time. Area is the same as line but fills in the space below, making it easier to see the overall volume. Pie and Donut show how a set of values divide up a total — they work best when you have five or fewer categories. Scatter is for when both the first and second columns in your data are numbers and you want to see if they’re related. ChartMill switches to scatter mode automatically when it detects that pattern.
What can I do with the chart once it's rendered?
Four export options appear below the chart once data is loaded. “Copy SVG” puts the raw SVG markup on your clipboard — paste it directly into an HTML file or any design tool that accepts SVG. “Copy data URI” gives you a base64-encoded version you can use as an image source in CSS or HTML without a separate file. “↓ SVG” downloads the chart as a .svg file. “↓ PNG” rasterises the chart at twice the display size and downloads a .png. All of this runs locally — nothing is sent to a server.
Why are there colour palette options?
Different situations call for different colour choices. The default palette works well on screens and presentations. If you’re creating charts for an audience that may include people with colour-blind vision, the colorblind palette keeps all series visually distinct even for the most common types of colour vision deficiency. The mono palette uses shades of one colour, which prints cleanly in greyscale and looks professional in contexts where bright colour would feel out of place. The pastel palette is softer and works better on white or light backgrounds.