What's new: tables you can sort, search and filter, and bar charts in Docs

· He.art

A wooden longship with striped sails crossing a still fjord below snowy mountains at dawn
A wooden longship with striped sails crossing a still fjord below snowy mountains at dawn · Made by AI

A table is often the most useful part of a doc, and also the hardest to read once it grows past a screenful. On Nov 8, 2026, He.art's Docs learned to make a long table something a reader can work with: sort it, search it, filter it and scroll it, without changing a word of what you wrote. And a few lines of numbers can now become a bar chart.

We wanted all of this while turning a report of more than a thousand rows into a He.art doc, so that is the size of table it was built for.

A table that sorts

Put an ordinary Markdown table inside a :::table block, and every heading becomes something to click:

:::table
| Page | Status | Visits |
|---|---|---:|
| /pricing | Live | 1,200 |
| /blog | Live | 340 |
| /old-page | Retired | 3 |
:::

Click a heading and the rows sort by that column. He.art reads what is in the cells: numbers sort as numbers (commas and a % sign are fine), dates as dates and words as words. Numbers come biggest first, and a second click turns the order around. Empty cells always go to the end.

Sorting only changes what you see. The doc keeps your rows in the order you wrote them, so a reader can sort a shared doc as much as they like and you can sort your own while you edit without rearranging it.

Search, filter and scroll

A few words after :::table add more:

  • search puts a search box above the table. Type a few words and only the rows that hold them stay.
  • filter=Status adds a row of pill buttons, All and one for each value in the Status column (up to 12), so a reader can show only the rows they care about. If the heading has spaces, write them as underscores: filter=Last_updated.
  • scroll keeps a long table to about a screen tall in a box of its own, and its headings stay in view while the rows scroll beneath them.

You can use them together:

:::table search scroll filter=Status
| Page | Status | Visits |
|---|---|---:|
| /pricing | Live | 1,200 |
| /blog | Live | 340 |
| /old-page | Retired | 3 |
:::

Above the table a small count says how many rows are showing out of the total, such as "2 of 3 rows", so a reader always knows how much a search or a filter has hidden.

Room to breathe

A :::table now uses the whole width beside the sidebar, both when you are signed in and when someone opens a doc you shared. Long cells wrap between words, never in the middle of one, and the browser gives the most room to the columns with the most to say. A wide table on a large screen fits without a sideways scrollbar; on a narrow window, a table with many columns still scrolls.

Bar charts from a few lines

A code fence marked chart turns comma-separated numbers into a bar chart. The first line names the columns, the first column names each bar and the second is its height:

```chart
day,visits,signups
2026-11-02,120,4
2026-11-03,180,6
2026-11-04,95,2
2026-11-05,210,9
```

Dates are written the friendly way under each bar (2026-11-02 shows as Nov 2), and resting the pointer on a bar shows every column for that row in one tooltip, so the signups above come along even though the bars show visits. To change the chart, change the numbers.

If JavaScript is off

A reader whose browser runs no JavaScript still gets everything you wrote: the table appears as a plain table with all its rows, and a chart's numbers appear as text.

Try it

Open He.art, press New doc in the sidebar and paste one of the blocks above into the Markdown side. Then click a heading, type in the search box or press a filter button, and watch the table follow along while your Markdown stays just as you typed it.

More from the blog