Advanced Charts for Grist by ANUPRESS — No-Code Dashboard Widget (2026)

Advanced Charts is a free Grist custom widget by ANUPRESS. Turn any Grist table into a website-style dashboard with 22 block types, 10 industry templates, invoices, calendars, maps and printable reports. No code, full step-by-step guide.

Grist Custom Widget · Free & Open Source
Advanced Charts · A free Grist widget by ANUPRESS

Turn a Grist table into a website‑style dashboard — no code

Advanced Charts is a free custom widget for Grist by ANUPRESS. Point it at any Grist table and build a full mini‑site: KPI cards, charts, slicers that let readers filter the page, searchable data tables, invoices, calendars, maps and barcodes, edited in place like a page builder. Install a ready‑made industry template or build block by block. Your data never leaves your Grist document.

By ANUPRESS Team · Last updated September 2026 · v3.7 · Reading time ~17 min · Beginner friendly

No installs, no accounts, and no server in the middle. Advanced Charts is a single URL you paste into Grist. Everything it builds lives inside your own document, and it stays that way.

✦ What’s new in v3.7

  • Several dashboards in one document — Operations on one page, Finance on another, each widget showing the one you point it at. Settings → Dashboards makes, switches, renames and deletes them. See Several dashboards.
  • Since v3.6 — Layout & style on every block — margin and padding per side, a minimum height, row and column spans, order, background, border, corners, shadow, hide on phones or desktops, a CSS id. One collapsible section at the foot of every editor. See The editor.
  • Widget block — put any other Grist custom widget inside the page by pasting its URL. It reads the table you choose, you map the columns it asks for, and it keeps its own settings. See the other blocks.
  • Your own code with Grist access — the HTML/CSS/JS block has a switch that loads the plugin API ahead of your code, so a block can be a custom widget written in place. Off by default.
  • Two smaller things — Grist now asks for full document access once, when you paste the URL (it used to ask for read access and leave full to the widget panel), and adding a block to a printout shows where it went: a token flies to the tray and the count bumps.
  • Since v3.5 — Add Section, undo and history — the tile at the end of a page opens with a row of layouts (a slicer over a chart is three clicks), and the edit bar has undo, redo and a History panel that restores any step of the session. See The editor.
  • Grid block — a panel with its own rows and columns, one to four each. Put a block in every cell and the whole panel moves, resizes and prints as one. See the other blocks.
  • See the table before you pick it — every “Data table” list now shows a snapshot of the table under the mouse on the left of the page: columns, types and the first rows. See Blocks.
  • Slicer block — a row of chips built from one column. A reader picks a value and every KPI card, chart, table, map and calendar on the page narrows to match. Asked for on the Grist community forum as “something closer to a BI tool”. See Slicer.
  • Barcode block — Code 128, EAN-13, EAN-8 and UPC-A, drawn in the browser and sized in millimetres so they still scan on paper. See Barcode.
  • Print on any page size — four office sizes, four label stocks, or a size you type, with an adjustable margin. A printout can repeat once per record: one barcode becomes a sheet of labels, one invoice becomes every unpaid invoice. See Print.
  • Reference columns show what they point at — a client column reads “Meridian Biotech”, not “2”, in tables, charts, breakdowns, calendars and maps. Choice lists and attachments display properly too.
  • Since v3.0: a searchable data table, invoices, a drag-to-reschedule calendar, industry templates that install their own sample tables, data editing from the page, a 509-icon library, 16 palettes and 7 font pairings.

What it is & why use it

Grist is a modern spreadsheet‑database. A custom widget is simply a web page you embed inside a Grist document. Advanced Charts is that web page. Instead of showing one chart, it gives you a whole mini‑site: a header with your logo and menu, pages of cards, charts and tables, and a footer.

If you can fill in a form, you can build a dashboard with it. There is nothing to install and no account to create. And you don’t have to start from a blank page: pick a starter template and edit from there.

📊 Every chart type

Bar, column, line, area, pie, doughnut, treemap, funnel, radar, scatter and gauge — powered by Apache ECharts.

🧱 Blocks for the whole page

KPI cards, slicers, data tables, invoices, calendars, maps, barcodes, testimonials, pricing, countdowns, QR codes and more.

🏭 Starter templates

Labs, nonprofits, legal, education, marketing, finance, developers, small business, sports — installed in one click.

🖨️ Print, labels & PDF

Arrange blocks on office paper or label stock, repeat the printout once per record, or print a single invoice or table as a clean report.

🎨 Fully designable

16 palettes, 7 font pairings, dark mode, corners, spacing and shadows — like a page builder.

🔒 Private & free

No ANUPRESS server, no licence, no sign‑up. Everything runs in your browser; your data stays in Grist.

Live, interactive demo

This is the real widget running on sample data — the same thing you’ll get on first load. It cycles through the tabs on its own; click anything to take over and explore. Pick a region in the slicer at the top of the Overview page and watch every card and chart below it narrow. Try the moon/sun icon for dark mode and the Edit button to open the builder (it stays in demo mode here, so nothing is saved).

anupress.github.io/grist-advanced-charts — live demo

The six demo pages are a guided tour: every chart type with a note on when to use it, live tables and invoices, a working calendar, and a page of the content blocks. The demo reads real tables, so search, sorting and the calendar all actually work.

Quick start — 5 steps

  1. Open the widget panel in Grist. In your document, add a new widget (or convert a section) and choose the Custom widget type. Grist’s own custom widget docs cover this panel in more detail.
  2. Paste the URL. In the panel settings, find Enter Custom URL and paste:
    Widget URL
    https://anupress.github.io/grist-advanced-charts/
    Grist then asks whether to allow the widget full document access. Accept, and it is settled once: that is what lets it read every table and save your design.
  3. Look around the demo. The widget loads with sample data so you can see what’s possible before connecting your own.
  4. Click Edit → Accept. ANUPRESS shows a consent screen (explained below) that says what it writes into your document and what it never does. If you declined Grist’s access prompt in step 2, set Access level to Full document access in the widget panel first.
  5. Build & publish. Install a starter template, or add blocks yourself — the guided wizard picks a chart type if you’re unsure. Then click Save & Publish. Anyone who opens the document sees your dashboard from then on.
No data yet? You can explore the whole editor without Grist — open this in a browser tab:
Demo URL
https://anupress.github.io/grist-advanced-charts/?demo=1

Permissions & privacy

The first time you click Edit, ANUPRESS shows a short consent screen. It explains, in plain language, exactly what happens next:

  • Your design is saved into your document — the layout, colours and logo live in the widget’s own settings plus a small ANUPRESS_Config table, so the dashboard reloads for anyone who opens it.
  • Your tables are read so you can chart any column from any table.
  • Template tables are created only when you ask — installing a template can add its sample tables, each one listed before anything is written.
  • Nothing leaves Grist — there is no ANUPRESS server, no analytics, and no third‑party calls.

Grist itself asks you to allow full document access the moment you paste the URL, before anything is read or written. That is required so the widget can read every table (not just one) and save your design. You can change or revoke it any time from the widget panel in Grist, and the consent screen tells you if it is missing.

The one exception: if you add a map, your browser fetches map tiles from public tile servers (OpenStreetMap / Esri). Those servers see the map’s view area and your IP — never your Grist data, which is turned into points in your browser. Everything else stays local: even QR codes are generated in your browser, and the HTML embed block runs your code in a sandboxed frame that cannot reach your data unless you switch on Grist access for that block, which its editor says in so many words. The same goes for a Widget block: whatever widget you nest gets the access this one has, so nest only widgets you trust.

The editor at a glance

In edit mode a dark bar appears at the top. It has a handful of buttons, and that is the whole surface:

ButtonWhat it does
Undo / RedoStep back and forward through every change since you opened the editor. Ctrl+Z and Ctrl+Y do the same, and stay out of text fields.
HistoryThe same steps as a list, newest first, each named in plain words (“Added slicer to a cell”, “Changed theme”). Click any step to go back to it; the later ones stay until you make a new change. The list is kept while the editor is open and cleared when you leave it.
SettingsEverything site‑wide, in one place: Theme & colors, Design, Pages, Header, Footer, Templates and Dashboards.
DoneLeave edit mode and return to the live view.
Save & PublishWrite your design into your Grist document.
The Settings panel in the ANUPRESS Grist widget with entries for theme and colors, design, pages, header, footer, templates and dashboards
Settings holds the seven site-wide panels — theme and colors (1) down to the dashboards of this document (2).

Blocks are edited on the page itself: hover any block for its drag, edit and delete buttons, or just click it to open its editor. Click the header, footer or hero to edit those directly. An Add Section tile sits at the end of every page.

Every block’s editor ends with the same collapsible Layout & style section, and it is where the fiddly placement work happens. Spacing is margin and padding for each side and a minimum height. Place on the page lets a tall block span two or three rows beside stacked ones, or sets an order; inside a Grid it becomes column span, row span and where the block sits in its cell. Look is background, border, corner radius and shadow. Visibility hides the block on phones, tablets or desktops, and while you edit a hidden block stays on screen, faded and labelled, so you can still reach it. Advanced holds a CSS id, classes and a z-index. Nothing here touches the block’s own settings; Reset clears it all, and undo brings it back.

The Layout & style section open at the foot of a block editor in the ANUPRESS Grist widget: margin and padding boxes per side, minimum height, row span, order, background and the hide-on-phones switch
Layout & style: spacing (1), placement (2), look (3) and visibility per screen size (4), on every block.
The ANUPRESS Grist widget's edit bar with undo and redo arrows and a History panel listing the steps of the editing session
Undo and redo in the bar (1), and the History panel listing every step of the session, any of which can be restored (2).
Advanced Charts edit mode in Grist: Settings and Save & Publish buttons in the top bar, a slicer above the KPI cards, and drag, edit and delete controls on a KPI card
Edit mode: one Settings button for the whole site (1, 2), and per-block controls right on the page (3).

The building blocks

The body of every page is a grid of blocks. Click Add Section and the panel opens with two ways in. At the top is a row of layouts: 1×2, 2×1, 2×2, 3×2, 3×3, 4×2 or custom. Pick one and a Grid block lands on the page with the chooser already open for its first cell, so a slicer above a chart is three clicks. Below the layouts is the single-element list, grouped so it’s easy to scan: Data & Metrics, Content, Basic Elements and Advanced. Starred entries are the ones most pages start with, a search box filters the list, and every block opens a side panel with a live preview, so you see the result while you change settings. Each block also has its own width setting, from a quarter‑width card to the full row. This page covers the blocks you’ll use first; the block-by-block tutorial documents every one of them, setting by setting.

The Add Section panel in the ANUPRESS Grist widget: a row of layout tiles, the guided wizard entry, the search box and the categorised block types
Add Section: a layout to fill cell by cell (1), the wizard that picks a chart for you (2), or one element by name (3).

Every data block starts with a table, and the table list shows you what you are choosing. Hover a name, or arrow onto it, and the whole space beside the editor fills with that table: its columns with their types, as many rows as fit with references resolved to names, and a line saying how much is not shown. It takes no clicks, so the mouse can pass over it. The same glance is there in the guided wizard’s first step and in a template’s table setup.

The table list open in an Advanced Charts block editor, with a snapshot of the People table's columns, types and first rows shown on the left of the page
Choosing a table: the one under the mouse is shown on the left, columns, types and first rows, before you commit to it.

Not sure what to build? The wizard picks for you

Don’t know statistics? You don’t need to. Just below the layouts in Add Section is “Not sure? Let me help” — a short wizard that asks three plain questions:

  1. Which data do you want to show? Pick a table.
  2. What do you want to compare? e.g. Region, Month, Category — this becomes your groups.
  3. What number do you want to see? Pick a column, or choose “Just count entries”.

It then recommends the best chart type for your columns (marked with a ★), greys out the ones that don’t fit, and shows a live preview before it adds anything to the page.

The guided chart wizard in the ANUPRESS Grist widget recommending a chart type with a live preview
The wizard’s last step: your three answers as chips, the recommended chart starred, and a live preview.

① Stat card (a single KPI)

A big number with an optional trend and a sparkline — e.g. Total Revenue, Headcount.

  • Value column — the column to measure. Every column is listed; text columns are marked (text).
  • Summarize by — Sum, Average, Count rows, Count values, Distinct count, Min, Max, Median or Std. deviation. Pick a text column and it switches to counting automatically.
  • Trend & sparklineAutomatic uses the table’s date column for the “vs prev. period” figure; pick a different column, or turn it off.
  • Icon — search a library of 509 icons as you type, browse the whole set, or upload your own.
  • Number format — compact (1.2K, 3.4M) and a currency symbol.
The stat card editor in the ANUPRESS Grist widget with value column, summarize, trend, icon search and live preview
The stat editor: everything on one panel, icon library included (1), with a live preview at the bottom.
Example: Value = Revenue, Summarize = Sum, Trend = Month, Currency = $, Compact on → $1.17M ▲ 30.9% vs prev. period.
The 509-icon library browser in the ANUPRESS Grist widget, searchable by name
Browse all 509 icons, or just start typing — the search covers the whole library.

② Charts

One Chart block, every chart type inside it. You pick the data first, and incompatible chart types grey out automatically — so you can’t build something that doesn’t make sense.

  • Categories — the groups along the axis (e.g. Region, Month).
  • Values — the numbers to plot (e.g. Revenue). Add a second category to split into series.
  • Summarize by — the same aggregations as stat cards.
  • Chart type — a grid with a ★ on the recommended type for your columns:
TypeBest forNeeds
Column / BarComparing categories1 category + 1+ value
Line / AreaTrends over timea date/category + value(s)
Pie / DoughnutShare of a whole1 category + 1 value
Treemap / FunnelComposition / stages1 category + 1 value
RadarComparing several measuresseveral values or categories
ScatterCorrelation between two numbers2 number columns
GaugeA single value vs a target1 number column

Extra options appear per type: Stack series, Smooth curve, Sort by value, and custom colours (or inherit the theme palette). Funnels can also be built stage by stage from separate columns, which keeps them honest when your data isn’t already cumulative.

Example (scatter): Values = Age and Salary, Categories = Department → each point is a person, coloured by department.

③ Breakdown (group‑wise counts)

Counts each distinct value of a column and shows the split with coloured dots, counts and percentages — like “West 14 (29%) · East 13 (27%) · North 12 (25%)”. Empty values get their own row, so it doubles as a quick data‑quality check.

  • Group by column — any column.
  • Show asList (the count rows) or a Donut / Pie / Bar / Column chart of the same counts.
  • Max rows — anything beyond the limit is rolled into an “Other” row.

④ Map (latitude / longitude)

Plots a pin for every row that has coordinates, on an interactive Leaflet map with marker clustering and Street / Satellite / Terrain layers.

  • Latitude / Longitude columns — auto‑detected by name (e.g. sample_latitude), or pick them.
  • Popup title — the bold line in each pin’s popup (e.g. a name or code).
  • Colour points by — optional category; the legend lists the colours.
  • Tooltip fields — choose up to 4 columns to show in the popup (raw lat/long is never shown).

⑤ Data table

Sometimes a summary is the wrong tool and people just want the rows. The Data table block shows them: searchable, sortable by clicking a column heading, and paged.

  • Columns — tick the ones that should appear. They keep the table’s own order, and the editor’s live preview gains or loses the column as you click.
  • Highlights — tint a range using spreadsheet‑style references (e.g. G1:G48), so a column of profits or grades reads at a glance.
  • Reference columns — a column that points at another table shows the name it points at, and search and sorting work on that name. Reference lists, choice lists and attachments display as readable text or a file count, not as raw ids.
  • Print — a data table prints as a clean tabular report, not a screenshot of the widget. See Print, labels & PDF.
A searchable, sortable data table block in the ANUPRESS Grist widget showing 48 rows with pagination
The data table block: live search, click-to-sort headings, paging, and highlight ranges.

⑥ Invoice

Pick a row from your invoices table and this block renders it as a finished document: your details and logo, the client’s address, the line items and the totals, ready to print or save as PDF. It works two ways — a single Amount column on the invoice row, or proper itemisation from a separate line‑items table. Four visual styles ship with it, and it inherits your site’s branding.

An invoice rendered from a Grist row by the ANUPRESS widget, with client address, line items, VAT and totals
A Grist row, rendered as a sendable invoice. The Print button prints only the invoice, nothing around it.

⑦ Calendar

Point it at any table with a date column and every row becomes an event on a month view. On a live document it works in both directions: drag an event to another day and the new date is written back to your Grist table, and edits made in Grist show up on the calendar on their own, without a reload. Click an event for its details, or a day’s “+N more” link for everything on that date. Dates are read and written in the column’s own timezone, so an event logged in Sydney doesn’t drift a day when the dashboard is opened in New York.

A month calendar block in the ANUPRESS Grist widget plotting table rows as draggable events
The calendar block: rows plotted by date. Dragging an event writes the new date back to the table.

⑧ Slicer (new in v3.2)

Every block above answers one question. A slicer lets the reader ask a different one. Pick a column, and the block shows its values as a row of chips (or a menu, once there are more than twelve). Choose North and every KPI card, chart, table, map and calendar on the page narrows to the North rows, trend deltas included. Choose two regions and you get both. Clear it and the page is whole again. The reader’s choice is never written into the design, so nobody can filter a dashboard for everyone else by accident.

A slicer block in the ANUPRESS Grist widget with North selected, showing 12 of 48 rows, and the KPI cards and charts below it narrowed to match
North picked in the slicer: the status reads 12 of 48 rows, and every card and chart below it now shows only North.

Which blocks a slicer reaches is worked out for you. A block is filtered if it reads the slicer’s table, a table with a column of the same name, or a table joined to it by a reference column in either direction. That last rule is Grist’s own “select by”: a slicer on Clients narrows every table that points at Clients, and a slicer on Invoices by client narrows the clients table too. Anything else is left whole, and the editor tells you the answer before you save (“Filters 9 blocks on this page: Total Revenue, …”). If the rules pick wrong, switch Blocks to Choose and tick the ones you mean.

  • Table and Column — the column’s distinct values become the choices, with a count beside each.
  • Show as — Auto, Chips or Menu. Selection — several values, or one at a time.
  • Blocks — Automatic, or a checklist of the blocks on this page.
  • Several slicers on one page combine: a Region slicer and a Category slicer together show only the rows that match both.
The slicer editor in the ANUPRESS Grist widget, with the column picker and a live line listing the nine blocks the slicer will filter
The slicer editor: one column becomes the choices (1), and the panel lists which blocks it will reach before you apply it (2).

⑨ Barcode (new in v3.1)

A scannable barcode drawn in the browser, like the QR code beside it, in Code 128 (any text: asset tags, internal references), EAN-13, EAN-8 or UPC-A (the digits on retail packaging). EAN and UPC work out the check digit, so a number pastes in with or without it.

The part that matters is the unit. A barcode is sized in millimetres, not pixels, because a scanner reads a linear barcode by timing bar widths against the narrowest one. A symbol the browser shrank to fit its column is a symbol that no longer scans, so this one keeps its size and overflows visibly instead. The default bar width is 0.33 mm; below about 0.25 mm many printers and hand scanners start to struggle, and the editor says so.

A QR code block and a Code 128 barcode block side by side on the demo's Get started page in the ANUPRESS Grist widget
A QR code and a Code 128 barcode on the demo’s Get started page. Both are generated in the browser.

Put %ColumnName in the value and the barcode becomes a template: in a printout that repeats once per row, each copy carries that row’s value. That is how one block turns into a sheet of product labels. See Print, labels & PDF.

The other blocks

The rest are the pieces that turn a page of charts into a page someone might actually read:

BlockWhat it does
GridA panel with its own rows and columns, one to four each. Put a block in every cell (any block but another grid) and they move, resize and print as one. Slicers reach inside it.
Progress barA fill bar toward a goal (“$1.17M of $3M — 39%”), typed in or calculated from a column.
TextA heading and rich text, for introductions and context between charts.
ImageUpload a photo, or pull one straight from a Grist Attachments column.
CounterA number that counts up when it scrolls into view (and holds still for reduced-motion users).
TestimonialsQuotes with names, star ratings and photos — typed in, or read from a reviews table.
AccordionExpandable questions and answers, ideal for an FAQ.
TimelineA vertical list of dated milestones — a history, roadmap or process.
Pricing tableSide-by-side plan cards with features and a call-to-action each.
ButtonLinks to another page of your dashboard or an external URL.
IconA standalone icon in a coloured badge, decorative or clickable.
Spacer / DividerBlank space, or a thin rule between sections.
Countdown timerDays, hours, minutes and seconds to a deadline, ticking live.
QR codeA scannable code for any link or text, generated in the visitor’s browser.
HTML/CSS/JSYour own code. Sandboxed by default, so it cannot touch your Grist data; switch on Grist access and it can use the plugin API like a custom widget written in place.
WidgetAny other Grist custom widget, by its URL, running inside the page: it reads the table you pick, you map the columns it asks for, and it keeps its own settings.

The grid is the one that changes how you lay a page out. The quickest way to one is the layout row at the top of Add Section; the Grid tile in the list does the same with columns and rows chosen by hand. Either way every empty cell shows an Add button that opens the usual chooser. A block in a cell is edited and deleted like any other; the grid itself is edited by clicking its edge or its title. Give it a title and it draws as a card, leave the title empty and only its blocks show.

A Grid block in the ANUPRESS Grist widget's editor: a stat card in the first cell and five empty cells with Add buttons
A new 3×2 grid with a stat card in its first cell. Each empty cell has its own Add button.

The Widget block is how the page grows past what these blocks do. Paste the URL of any custom widget, the same address you would give Grist, and it runs inside the page with the access this widget has. In the editor you choose the table it reads, or leave that blank and it follows the table this dashboard is linked to in Grist, changes included. When the widget loads in the live preview it says which columns it needs, and each one gets a picker, the same mapping step Grist would show in its own panel. Whatever the widget saves for itself, a note, a chosen view, is kept with the page. The HTML/CSS/JS block has the same table and mapping controls once its Grist access is switched on, which turns a few lines of your own code into a custom widget written in place.

The Widget block editor in the ANUPRESS Grist widget: an access note, the widget URL, the table it reads and pickers for the two columns the nested widget asked for
A Widget block: the URL (1), the table it reads (2), and the columns it asked for, each with a picker (3).

Aggregations in plain English

OptionMeaning
SumAdds the numbers up.
AverageThe mean.
Count rowsHow many rows there are (works on any column, even text).
Count valuesHow many rows have something in that column.
Distinct countHow many different values.
Min / MaxSmallest / largest.
MedianThe middle value.
Std. deviationHow spread out the numbers are.

Starter templates

A blank page is the hardest place to start, so the widget ships ten finished starting points. Each installs a complete multi‑page dashboard (pages, blocks, copy and theme) plus sample tables in your document, so every chart has data from the first second. Then you edit it like anything else, or point its blocks at your own tables.

Open them from Settings → Templates:

The template picker in the ANUPRESS Grist widget listing ten starter templates and a start-from-scratch option
Ten starting points plus “Start from scratch”. The one you’re using is labelled, so you can’t reinstall it by accident.
  • Research Labs — samples, reagents, tasks and people.
  • Nonprofits — donations, grants, volunteers and impact.
  • Legal — matters, billable hours, invoices and expert witnesses.
  • Higher Education — courses, enrolment, research funding and faculty.
  • Marketing — campaigns, content, social, events and customer sentiment.
  • Finance & Accounting — invoices, payroll and expenses in one cash view.
  • Developers — issues, releases, incidents and uptime, dark by default.
  • Small Business — pipeline, customers, team and costs.
  • Sports Facility — bookings, members, classes and leagues.
  • Demo dashboard — the guided tour the widget opens with, reinstallable.

Before anything is applied you get a full preview rendered with that industry’s sample data, a list of the pages included, and a per‑table setup step: for each table the template uses, either let it be created with sample data (the default) or point it at one of your own tables, with a column‑matching step so the blocks know which of your columns is which. Using your own table only reads from it.

The template preview and apply screen in the ANUPRESS Grist widget, showing pages included, table setup and a rendered sample preview
Preview & apply: pages included, per-table setup, a real rendered preview, and a plain warning about what gets replaced.
Your data is safe. Applying a template replaces the design, never your tables. When you switch templates, the old template’s sample tables are listed with checkboxes so the document doesn’t collect clutter — and only tables the widget itself created are ever on that list. Start from scratch works the same way: one empty page, your tables untouched.

Want a closer look at all ten, with screenshots and what’s inside each one? That got its own post:

Editing data without leaving the page

Charts are usually where you notice a wrong number. On a live document, every data block’s editor has an “Edit the data in …” button that opens the table right there: search it, sort it, filter it, correct cells, add rows. Changes are written to your Grist table when you press Save, as a single undoable step, and the block’s preview refreshes so you see the fix land. Columns Grist computes from formulas are shown read‑only, and so are reference, reference list, choice list and attachment columns, because a free-text edit there would send Grist a string where it expects a row id or a list. Each one says which reason applies. Deleting rows deliberately stays in Grist, where the document history lives.

There’s also a Refresh button on live dashboards that re‑reads every table the page uses — handy when someone edited rows in Grist while your dashboard was open.

Print, labels & PDF (updated in v3.1)

Sooner or later a dashboard has to survive on paper, usually because a board meeting or a client asked. The widget prints three ways, and all three produce documents rather than screenshots:

  1. A printable layout of any blocks you choose. In view mode, every block has an Add to printout button. Collect blocks from any pages, then click Arrange & print: your selection appears on a white sheet with real page‑break guides, you resize and reorder, and print. Tables can be narrowed or capped to fit without changing the page they came from. The two exceptions are the HTML/CSS/JS and Widget blocks: an embedded frame prints as a blank rectangle, so they carry no button.
  2. A single invoice. The invoice block’s print button prints just the document — the rest of the page is left out.
  3. A data table as a report. Prints every row as a clean table with the site’s branding, pager removed.
Collecting dashboard blocks into a printout in the ANUPRESS Grist widget, with a tray showing the selection count
Any block but an embedded frame can join the printout (1); the tray counts your selection and leads to the layout (2).

Any page size, including labels

The sheet used to be A4 or US Letter. Now the toolbar offers four office sizes (A4, US Letter, A5, US Legal), four label stocks (business card 85×55, shipping 100×150, address 89×36, small 57×32), and Custom, where you type a width and height in millimetres. The margin is a field too. Label stock arrives with a margin of zero, because a die-cut label has no waste edge to give away; pick office paper again and a normal margin comes back. Preview and paper agree to the millimetre: the sheet on screen is drawn at true paper width, so the page boundaries fall where the printer will really break.

The printable layout screen in the ANUPRESS Grist widget with its toolbar of office paper sizes, label stocks, a custom size, a margin field and a repeat-per-row control
The layout toolbar: office sizes (1), label stock (2), any size plus the margin (3), and the repeat control (4).

Repeat a printout once per record

Set Repeat to a table and the blocks you collected are printed once for every row of it, one to six across the sheet or each on its own page, with a cap on how many rows to take. Blocks that mean something for a single row are rebound to it: an invoice is told which row it is, and a barcode, QR code or text block with %ColumnName in it fills in that row’s value. A chart of the whole table is left alone rather than being made to look per-row. Two things this is for: a sheet of product or asset labels from a barcode block, and every unpaid invoice in one print run.

A printout in the ANUPRESS Grist widget repeated once per row of the Sales table, three across an A4 sheet, giving twelve product barcodes with category and region captions
One barcode block, repeated per row of the Sales table (1), three across (2): a sheet of product labels, each with its own code and caption.

Each block on the sheet has a width control that sits above it, holds open while you try sizes, and closes with Keep or Cancel. Cancel puts the block back exactly as it was.

The width panel above a block on the printable sheet in the ANUPRESS Grist widget, with XS to Full chips and Keep and Cancel buttons
Width on the page: try a chip, look at the sheet (1), then keep it or cancel (2).
Save as PDF: in the print dialog, pick “Save as PDF” as the destination — that’s it. A useful layout can also be saved as a page of the dashboard, so the next person prints it with two clicks. Viewers can print without any edit access.

Dynamic subtitles (write your own, with live numbers)

Every chart, breakdown and map block has a Subtitle field. Type whatever you like, and drop in placeholders that fill in automatically. Click the small (i) next to the field to see which placeholders that block supports.

BlockPlaceholdersExample template → result
Map%count %missing %total%count mapped · %missing without coordinates → “36 mapped · 0 without coordinates”
Breakdown%total %groups %top %topcount %empty%groups departments → “6 departments”
Chart%count %groups %total%count rows across %groups groups → “192 rows across 4 groups”

Hero & slider

Each page can start with a hero — either a gradient banner with your headline, or a full‑width image slideshow. The text is fully designable, WordPress‑style:

Show / hide per page Alignment: left / center / right Vertical: top / middle / bottom Headline size S–XL Font: serif / sans / display / mono Text colour

Add images to turn the banner into a slider, give each slide its own caption, and set auto‑play speed. Edit a hero by clicking it, or from Settings → Pages.

Pages, menu & footer

Your dashboard can have multiple pages (tabs). The menu switches between them instantly, without a reload.

  • Add / rename / delete pages, and drag the grip handle to reorder them.
  • Per‑page hero — every page has its own headline or slider.
  • URL menu links — add external links (label + URL) that appear in the menu and open in a new tab.
  • Footer — its text and links are edited from Settings → Footer, or by clicking the footer itself.

Theme & dark mode

  • Colour palettes16 ready‑made palettes, including a colour‑blind‑safe “Accessible” one; or set your own primary and accent colours. Chart series colours come from the palette too.
  • Font pairing7 heading/body combinations, from editorial serif to technical monospace.
  • Light / Dark — toggle from the Theme panel, or with the moon/sun icon in the header. A viewer’s own choice is remembered on their device, and survives template switches.
The ANUPRESS Grist dashboard widget in dark mode with a region slicer, KPI cards and charts
The same dashboard in dark mode. Every panel, chart and table has been checked in both.

Global design panel

Settings → Design gives you site‑wide controls that apply across both light and dark themes:

Corners: sharp → round Density: compact → roomy Content width: narrow → full Shadows: flat / soft / bold Text size: small / normal / large

Accessibility is part of the design rather than an afterthought: every control in the editor and on the published page works from the keyboard, decorative elements stay silent for screen readers, and animated counters hold still when a visitor’s system asks for reduced motion.

Saving & publishing

Click Save & Publish to write your design into your document — it’s stored in the widget’s own settings plus a small ANUPRESS_Config table, so it travels with the document and reloads for anyone who opens it. Applying a template saves immediately on its own, so there’s no window where the new tables exist but the design doesn’t. Done leaves edit mode.

To wipe the design and start again, use Settings → Templates → Start from scratch. It clears the layout, offers to remove sample tables the widget created (each one listed, nothing else), and leaves your own tables exactly as they were.

Several dashboards in one document

One document can hold more than one dashboard: Operations on one page, Finance on another, a project of its own on a third. Each widget you add to a Grist page shows one of them, and remembers which. Open Settings → Dashboards in any widget to see the list, make a new one as a copy of the current design or as a blank page, point that widget at a different one, rename, or delete. The main dashboard is the one every document starts with and cannot be deleted. Everything stays in the same ANUPRESS_Config table, one row per dashboard, so nothing about saving, templates or starting from scratch changes; those act on whichever dashboard the widget is showing.

The Dashboards panel in the ANUPRESS Grist widget: the dashboard this widget shows, the other dashboards in the document with a Show here button, and the form for a new one as a copy or a blank page
Settings → Dashboards: what this widget shows, the others in the document, and a new one from a copy or a blank page.
Two widgets, one dashboard? That works too. Point both at the same one and they stay in step; the design is stored once, in the document, not per widget.

FAQ & troubleshooting

Is it really free, and is there a catch?

It’s free and there’s no catch. It’s a static web page you load by URL — no account, no licence, no limits. The only credit is a small “Built with ANUPRESS” link in the footer.

Can ANUPRESS or anyone else see my data?

No. There is no ANUPRESS server. The widget runs entirely in your browser and talks only to your Grist document. The single exception is map tiles (see Permissions & privacy).

Which block types are there?

Four groups. Data & Metrics: stat card, chart, breakdown, map, progress bar, data table, invoice, calendar and slicer. Content: text, image, counter, testimonials, accordion, timeline and pricing table. Basic: button, icon, spacer, divider, countdown, QR code, barcode and grid. Advanced: an HTML/CSS/JS embed, sandboxed or with Grist access, and a Widget block that runs any other custom widget inside the page by its URL.

Can one document have more than one dashboard?

Yes. Each widget you add to a Grist page shows one dashboard and remembers which. Open Settings → Dashboards in a widget to make a new one, as a copy of the current design or as a blank page, and to point that widget at any dashboard in the document. They all live in the same config table, one row each, and the main dashboard is the one every document starts with.

Can readers filter a dashboard without editing it?

Yes. Add a Slicer block and pick a column. Readers get a row of chips or a menu, and choosing a value narrows every other block on the page that reads the same table, shares the column, or is joined to it by a reference column. Their choice is never written into the design.

Which templates are included?

Ten one-click starting points: the demo dashboard plus nine industry templates — research labs, nonprofits, legal, higher education, marketing, finance & accounting, developers, small business and sports facilities. Each installs complete pages with sample tables you can replace with your own. The template library post tours all ten.

Will applying a template delete my data?

No. A template replaces the dashboard design, not your data. The only tables it ever offers to remove are sample tables the widget itself created earlier, listed with checkboxes before anything happens. Your own tables are never touched.

Can I print a dashboard or save it as a PDF?

Yes. Every block has an Add to printout button in view mode. Collect blocks from any page, arrange them on A4, US Letter, A5, US Legal, a label stock or a size you type, and print or save as PDF. A printout can also repeat once per row of a table, which turns one barcode into a sheet of labels or one invoice into every invoice. Data tables print as clean tabular reports and invoice blocks print as single finished documents.

Can it print barcodes and labels?

Yes. The Barcode block makes Code 128, EAN-13, EAN-8 and UPC-A symbols in the browser, sized in millimetres so they still scan after printing. Put %ColumnName in its value, choose a label stock or any page size in the printable layout, and set the printout to repeat once per row of a table.

The column dropdown is empty / my chart has no data.

Check three things: you granted full document access, you selected the correct Data table, and — for charts — that your columns suit the chart type (incompatible types are greyed). Stat cards list every column; text columns are counted rather than summed.

My map is blank.

Make sure the Latitude and Longitude columns hold numbers in valid ranges (lat −90…90, lon −180…180). Rows without both are counted as “without coordinates”.

I don’t know which chart to use — is there help?

Yes. Click Add Section and choose “Not sure? Let me help”. Answer three plain-English questions and Advanced Charts recommends the best chart type and adds it for you. See the wizard.

Does it work on a self‑hosted Grist?

Yes. Any Grist that supports custom widgets by URL works — Grist’s hosted service or your own instance. The widget is a static page with no backend, so it behaves the same on both.

Which version am I on, and how do I update?

Grist loads the widget from our URL every time the document opens, so a new release reaches you on its own. Browsers keep the previous copy for up to ten minutes, so if a fix seems missing, hard-refresh the tab (Ctrl+Shift+R). To see which build you have, click Edit, then Settings: the last line of the panel reads “Advanced Charts v3.2.5” or later. The browser console prints the same line when the widget starts.

How do I update or reset my dashboard?

Click Edit to change it, then Save & Publish. To reset, use Settings → Templates → Start from scratch — it clears the design and offers to clean up any sample tables the widget created, without touching your own.

Request a feature or send feedback

💡 Suggest a feature

Found a bug, or want a new chart type or option? Tell us — this widget grows from real requests. The wizard, the templates and the print layouts all started as one.

About ANUPRESS

ANUPRESS builds practical, no‑nonsense tools and honest reviews for people who run their own sites and data. If you found this useful, you might like our other hands‑on guides:

Advanced Charts is a free, open custom widget by ANUPRESS. Your data stays in your Grist document. © 2026 ANUPRESS.

ANUPRESS Team
ANUPRESS Team

ANUPRESS Team writes and builds everything on this site — reviews and 48+ free browser-based tools alike. We test what we review by actually using it, not by summarizing a spec sheet. Spot something wrong or want to know more about a specific piece? Reach us through the contact page.

Articles: 37