Markdown Kibana Guide: Text Panels for Dashboards (2026)

September 11, 2026 · 9 min read

Markdown Kibana Guide: Add Text Panels to Dashboards

The markdown Kibana renders in a dashboard Text panel is GitHub-flavored Markdown: headings, lists, links, tables, and images that you type into the panel editor and apply. This guide covers where Markdown appears in Kibana, what syntax renders, three copy-paste panel patterns, and the honest answer on styling.

Where Does Markdown Appear in Kibana?

Kibana has three separate places that accept Markdown, and they behave differently. Picking the wrong one is the usual reason a panel won't do what you want.

SurfaceWhere you find itData variablesCustom CSSUse it for
Dashboard Text panelAdd, then Markdown Text (Stack 9.2+)NoNoTitles, notes, links, legends
TSVB MarkdownVisualize Library, TSVB, Markdown tabYes, Handlebars-styleYesText that quotes a metric
Canvas markdown elementCanvas workpadsYes, Handlebars-styleFont argumentsPresentation-style reports

The dashboard Text panel is the one most people mean by Kibana Markdown, and it's the simplest. Per Elastic's text panel documentation, on Stack 9.2 and later you select Add in the dashboard menu, choose Markdown Text, enter your text, and click Apply. On 9.0 and 9.1 the path is Add panel, Text, then Update. The panel editor has an Editor tab and a Preview tab that you toggle between, so you don't see the rendered result while you type.

TSVB's Markdown mode is a legacy editor. It needs a data view because it's built for pulling series data into the text. Canvas markdown elements live in workpads, and the current docs note that Canvas is only available on upgraded installations that already have workpads. For a new deployment, the Text panel is the right choice.

What Markdown Syntax Renders in a Kibana Text Panel?

Elastic's docs describe the panel as GitHub-flavored Markdown with a Syntax help button in the editor, and the plugin's own README says it's built on EUI's Markdown editor. In practice that gives you the GFM set. Everything in the GitHub Markdown cheat sheet is the reference; this table is the Kibana-specific summary, based on Elastic's GFM statement and EUI's documented plugins. The Syntax help button in your own version is the final word.

ElementRenders in the Text panelNotes
Headings # to ######YesH1 is large; H3 or H4 usually fits a panel better
Bold, italic, strikethroughYesStandard **, *, ~~
Bullet and numbered listsYesNested lists indent with two spaces
Task lists - [ ]YesCheckboxes show but don't save state
TablesYesPipe tables; column alignment with :---:
Links [text](url)YesRelative dashboard URLs work for navigation
Images ![alt](url)YesExternal URLs only; no upload
Fenced code blocksYesMonospace, useful for query snippets
Emoji shortcodes :warning:YesEUI's Markdown editor supports them
Raw HTML and inline stylesNot documentedTreat as unsupported; there's no style hook

We'd call two of those out. Tables render, which answers the recurring "format Markdown table in Kibana" question, but they take the panel's default font and there's no way to centre or colour them. And images come from a URL, so a logo needs to be hosted somewhere reachable by every viewer's browser. The Markdown image guide covers the syntax and sizing tricks that survive GFM rendering.

Draft the panel text in the editor first. You get a side-by-side preview instead of Kibana's toggle, and because both render GFM, what you see there is what the panel shows after you paste and apply.

Three Kibana Markdown Panel Patterns

These three panels cover most of what teams put in a dashboard's text. Each one pastes straight into a Text panel.

1. Header panel. A title, one-line purpose, owner, and the links a viewer needs. Place it full-width at the top.

### Checkout Service: Production Health

Latency, error rate, and throughput for the checkout API. Refreshes every 30 s.

**Owner:** Payments team | **On-call:** see PagerDuty | **Runbook:** [checkout-runbook](https://wiki.example.com/checkout)

2. Legend panel. A small table that explains thresholds so nobody has to guess what amber means.

| Colour | Meaning | Action |
|---|---|---|
| Green | p95 latency under 300 ms | None |
| Amber | 300 to 800 ms | Watch the next two intervals |
| Red | Over 800 ms or errors above 1% | Page on-call |

3. Navigation bar. Links to sibling dashboards, written as a single line so it stays compact. Use the dashboard's own URL path so it works on any host.

**Dashboards:** [Overview](/app/dashboards#/view/overview-id) | [Checkout](/app/dashboards#/view/checkout-id) | [Payments](/app/dashboards#/view/payments-id) | [Errors](/app/dashboards#/view/errors-id)

Copy the dashboard ID from the address bar of each target dashboard. The Markdown links guide explains relative versus absolute link forms if you need the same panel to work across environments.

Here's the header pattern with a legend combined, ready to edit and paste into a panel.

Checkout Service: Production Health

Latency, error rate, and throughput for the checkout API. Refreshes every 30 seconds.

Owner: Payments team | Runbook: checkout-runbook

Colour Meaning Action
Green p95 under 300 ms None
Amber 300 to 800 ms Watch two intervals
Red Over 800 ms Page on-call

Dashboards: Overview | Errors

68 words494 characters13 lines
Markdown

Can You Style a Markdown Kibana Panel?

Mostly no, and this is the question that dominates forum threads. The dashboard Text panel exposes no CSS field, no background colour setting, and no alignment option. Inline style attributes aren't a documented part of the panel, so wrapping text in a styled <div> doesn't get you a coloured box. A GitHub issue requesting a background colour for Markdown panels, elastic/kibana#242280, was opened in November 2025 and is still open as of this writing.

You can still control heading level (size), emphasis, tables for structure, and horizontal rules between sections. Emoji work as colour cues too; a green or red circle shortcode reads well as a status marker. That's usually enough for a header or legend.

If you need a real colour block, TSVB's Markdown visualization is the workaround. Elastic's TSVB documentation states that it "supports Markdown with Handlebar (mustache) syntax to insert dynamic data, and supports custom CSS". The Panel options tab has a CSS box, so a background colour is one rule away. The costs are that TSVB is a legacy editor, it requires a data view even for text-only panels, and Elastic has deprecated creating TSVB visualizations from index strings.

Markdown Kibana Variables in TSVB and Canvas

The Text panel is static. When you want the text to quote a live number, you're in TSVB or Canvas territory.

In TSVB Markdown mode, you define one or more series on the Data tab, give each a variable name, and reference it in the Markdown with double curly braces, like {{ latency.last.formatted }}. The editor lists the available variables beside the text box. This is how people build "Current p95: 412 ms" sentences that update with the dashboard time range.

Canvas markdown elements go further. Elastic's Canvas function reference documents the markdown function with a content argument, a font style argument, and an openLinksInNewTab boolean that defaults to false. Elastic's own Canvas walkthrough shows Handlebars templates such as {{rows.length}} inside the content, so a markdown element can loop over query rows and print a list. Canvas is the only one of the three surfaces where links can be forced to open in a new tab.

One limitation we've hit: neither TSVB nor Canvas variables work in the dashboard Text panel. If you paste {{ something }} there, it renders as literal braces.

Common Kibana Markdown Mistakes

Building a table with spaces instead of pipes. Aligned columns typed with spaces collapse into one line, because GFM ignores runs of whitespace. Use pipe syntax; the Markdown table guide shows the alignment row.

Expecting an H1 to look like a dashboard title. # renders large and pushes content down. Dashboards already show a title; use ### inside panels.

Linking to a dashboard with a full localhost URL. It breaks the moment someone opens the dashboard from another host. Link to /app/dashboards#/view/<id> instead.

Markdown Kibana FAQ

The markdown Kibana offers comes in three flavours: the static GFM Text panel for headers, legends, and navigation; TSVB Markdown for text with variables and CSS; and Canvas for templated reports. Stick to headings, tables, links, and emoji in the Text panel, and don't fight it for styling. Draft each panel in the editor, preview it, then paste it into the dashboard.