chartshot

Charts as images, from one URL.

Send a JSON spec and get back a sharp PNG, SVG or WebP. Retina by default, light or dark, ready for the inbox, Slack, OG cards and your agents.

<img src="https://api.chartshot.dev/v1/chart?c=eyJ0eXBlIjoiYmFyIiwidGhlbWUiOnsiZXh0ZW5kcyI6ImRlZmF1bHQiLCJmb250IjoiSW50ZXIiLCJsaWdodCI6eyJiYWNrZ3JvdW5kIjoiI2ZmZmZmZiIsImZvcmVncm91bmQiOiIjMGEwYTBhIiwibXV0ZWRGb3JlZ3JvdW5kIjoiIzVjNWM1YyIsImJvcmRlciI6IiNlNWU1ZTUiLCJjaGFydDEiOiIjMWY1ZmZmIiwiY2hhcnQyIjoiIzBhMGEwYSIsImNoYXJ0MyI6IiM4ZjhmOGYiLCJjaGFydDQiOiIjYThjMGZmIiwiY2hhcnQ1IjoiIzRhNGE0YSIsInJhZGl1cyI6MX0sImRhcmsiOnsiYmFja2dyb3VuZCI6IiMwYTBhMGEiLCJmb3JlZ3JvdW5kIjoiI2Y3ZjhmOCIsIm11dGVkRm9yZWdyb3VuZCI6IiNhMWExYTEiLCJib3JkZXIiOiIjMmUyZTJlIiwiY2hhcnQxIjoiIzNkN2JmZiIsImNoYXJ0MiI6IiNmN2Y4ZjgiLCJjaGFydDMiOiIjNzM3MzczIiwiY2hhcnQ0IjoiIzlkYjhmZiIsImNoYXJ0NSI6IiM0YTRhNGEiLCJyYWRpdXMiOjF9fSwiZGF0YSI6eyJsYWJlbHMiOlsiTW9uIiwiVHVlIiwiV2VkIiwiVGh1IiwiRnJpIiwiU2F0IiwiU3VuIl0sInNlcmllcyI6W3sibmFtZSI6IlNpZ251cHMiLCJ2YWx1ZXMiOlsxNDIsMTY4LDE1NSwxODksMjA0LDk2LDg4XX1dfSwib3B0aW9ucyI6eyJ0aXRsZSI6IlNpZ251cHMgdGhpcyB3ZWVrIiwidmFsdWVMYWJlbHMiOnRydWUsImdyaWQiOmZhbHNlLCJ5QXhpcyI6eyJoaWRkZW4iOnRydWV9fSwibW9kZSI6ImxpZ2h0In0" width="600" height="300">
spec.json
{
  "type": "bar",
  "theme": { … },
  "data": {
    "labels": [
      "Mon",
      "Tue",
      "Wed",
      "Thu",
      "Fri",
      "Sat",
      "Sun"
    ],
    "series": [
      {
        "name": "Signups",
        "values": [
          142,
          168,
          155,
          189,
          204,
          96,
          88
        ]
      }
    ]
  },
  "options": {
    "title": "Signups this week",
    "valueLabels": true,
    "grid": false,
    "yAxis": { "hidden": true }
  }
}
Bar chart of signups each day this week
p95 render, uncached
84 ms
retina on every plan
2×
chart types
11
by default, tested in Gmail and Outlook
PNG

Every chart is a URL.

Each chart here is a live image from api.chartshot.dev, requested at the size in its corner. Open one in the playground to see its spec and change it.