Build the chart in PlotSet
Upload a CSV or Excel file, paste from a spreadsheet, or connect a Google Sheet. Pick a template, bind the columns, and set your colours, fonts and number formatting.
Put an interactive chart in a WordPress post or page without a plugin. Build it from your spreadsheet, copy one line of HTML, and paste it into a Custom HTML block — it renders for every visitor, on every theme.
Not a screenshot — a real interactive chart, embedded exactly as yours would be.
Example: Monthly sessions by traffic source
One line of HTML. This is the actual snippet for the chart above — paste it into any page that accepts HTML.
<iframe width="100%" height="100%" src="https://plotset.com/api/embed/645d8e72-f994-4cb5-9a71-b65b7f378d5c" />Sizing is yours: set the width and height on the iframe, or wrap it in a container with your own aspect ratio.
There is no PlotSet plugin, and for most sites that is the point. A PlotSet chart is published as a URL, and WordPress has rendered arbitrary HTML in a Custom HTML block since the block editor shipped — so embedding one is a copy and a paste, with nothing installed, nothing to keep updated, and nothing that can break your site on the next core release. The chart is rendered by PlotSet and loaded in an iframe, which means it does not touch your theme's CSS, does not add a JavaScript library to your pages, and looks identical whether your visitor is on the desktop site, the mobile site or an AMP-style reader view. The one thing worth knowing before you start is the difference between WordPress.com and a self-hosted WordPress site, because it decides which of the two methods below you use.
From the spreadsheet to a published embed, step by step.
Upload a CSV or Excel file, paste from a spreadsheet, or connect a Google Sheet. Pick a template, bind the columns, and set your colours, fonts and number formatting.
Publishing gives the chart a public URL and a one-line iframe snippet. Copy the snippet — that is everything WordPress needs.
In the block editor, click the + button, search for "Custom HTML", and paste the snippet in. The Preview tab in the block toolbar renders it in place so you can check it before publishing.
If your site still runs the Classic editor, switch from Visual to Text and paste the snippet where you want the chart. Do not paste it into the Visual tab — the editor will escape the tags and you will see the code as text.
The snippet comes with a width of 100% so the chart fills your content column. Give it a height in the same style attribute — around 450px for a standard chart, more for a map or a long ranked bar chart.
Your content column is narrower on a phone than the chart was in the editor. Check the axis labels still fit, and switch a long category axis to horizontal bars if they do not.
Nothing is added to your WordPress install, so there is no new attack surface, no plugin conflict and nothing that stops working after a core update. The chart is a URL.
The chart renders inside an iframe with its own styles, so a theme change, a CSS tweak or a page builder cannot reflow it. What you designed is what your readers see.
Choropleth and symbol maps, sankey diagrams, treemaps, bump charts, marimekko and animated bar chart races — around 300 templates in total, all embeddable the same way.
Because the post holds a URL rather than an image, re-uploading your data updates every post the chart appears in. No re-exporting PNGs and no hunting through the media library.
It is ordinary HTML, so the chart you built for a WordPress post also goes into Webflow, Ghost, Notion, a Google Site or a plain static page without changes.
Custom embed code needs a self-hosted site or a WordPress.com Business plan or above. On the lower tiers, export the chart as a PNG or SVG and insert it as an image instead — you lose the tooltips, not the chart.
Feed readers and newsletter plugins strip iframes. If your posts are syndicated or mailed out, put a static export beneath the embed, or accept that those readers see a gap.
Search engines read your post, not the chart inside it. Any number you want found should also appear in the surrounding copy — which is better writing anyway.
Charts hold their own copy of the data. Updating a published chart means re-pasting or re-uploading the rows; the embed then updates everywhere on its own.
Some optimisation plugins lazy-load or defer iframes. If a chart does not appear, exclude the PlotSet domain from lazy-loading before assuming the embed is broken.
Build and publish the chart in PlotSet, copy the one-line iframe snippet, then paste it into a Custom HTML block in the block editor — or into the Text tab if you are on the Classic editor. Nothing needs to be installed.
Bring your rows across and get an embeddable interactive chart in a couple of minutes — free, no credit card.