Skip to content

Markdown & Syntax

Kova supports standard Markdown via remark, GitHub Flavored Markdown (GFM) tables, Mermaid diagrams, and a set of Kova-specific extensions for presentation content.


Standard Markdown

Headings

# H1 — title slide (triggers the `title` layout)
## H2 — section break or slide heading
### H3 — sub-heading (renders as a paragraph-size label)

Shortcuts: Ctrl+1 through Ctrl+6 toggle heading levels on the current line. Pressing the same level again removes the heading marker.


Text formatting

Syntax Result
**bold** bold
*italic* italic
~~strikethrough~~ ~~strikethrough~~
`inline code` inline code

Shortcuts: Ctrl+B for bold, Ctrl+I for italic.

No selection needed

If no text is selected when you press Ctrl+B or Ctrl+I, Kova inserts a placeholder (bold text / italic text) with it pre-selected so you can type immediately.


Lists

- Unordered item
- Another item
  - Nested item (two spaces indent)

1. Ordered item
2. Second item
3. Third item

Blockquote

> The secret of getting ahead is getting started.
> — Mark Twain

Lines beginning with , , or - after the quote body are rendered as an attribution in a smaller typeface.


[Link text](https://example.com)

![Alt text](path/to/image.png)

Image sizing — use the title attribute to control width:

![diagram](chart.png "50%")      <!-- 50% of slide width -->
![photo](photo.jpg "300px")      <!-- fixed 300 px -->
![icon](icon.svg "2rem")         <!-- relative to font size -->

Supported units: %, px, em, rem, cqi.


Code blocks

Fenced code blocks with syntax highlighting. Specify the language after the opening fence:

```python
def greet(name: str) -> str:
    return f"Hello, {name}!"
```

Supported languages include Python, JavaScript, TypeScript, Rust, Go, SQL, Bash, and many more via highlight.js.

Slides containing only code blocks or Mermaid diagrams automatically use the code layout — a dark, full-width display optimised for readability.


Tables (GFM)

| Feature       | Status |
| ------------- | ------ |
| Live preview  | ✅     |
| Mermaid       | ✅     |
| Custom themes | ✅     |

Horizontal rule

Use <hr> for a visual divider within a slide. Do not use --- inside a slide — it is the slide separator.

## My Slide

First section content.

<hr>

Second section content.

Diagrams (Mermaid)

Fenced code blocks with the mermaid language identifier are rendered as diagrams, automatically themed to match the active presentation theme.

```mermaid
pie title Browser share
    "Chrome"  : 65
    "Safari"  : 19
    "Firefox" : 4
    "Other"   : 12
```
```mermaid
graph LR
    A[Write Markdown] --> B[Kova detects layout]
    B --> C[Live preview]
    C --> D[▶ Present]
```

Tip

See the Mermaid documentation for all supported diagram types: flowcharts, sequence diagrams, Gantt charts, pie charts, class diagrams, and more.


Kova-specific syntax

Column break (|||)

Force a two-column layout by placing ||| between two content blocks on the same slide:

## Comparing approaches

**Traditional tools**

- Manual layout adjustments
- Vendor lock-in
- Export quality varies

|||

**Kova**

- Layout detected automatically
- Plain `.md` files
- Native `.pptx` export

Kova splits the slide at the ||| and renders each side as a column. See Layouts — two-column for details.


Progress bars (!progress)

!progress[Task Complete](75)
!progress[In Review](40)
!progress[Planned](10)

Numbers represent percentages from 0 to 100; decimals are allowed (!progress[Almost there](99.5)).

Multiple consecutive !progress bars are grouped as a single logical unit for layout detection — they won't accidentally trigger the grid layout.


YouTube embed (!youtube)

!youtube[Video Title](https://youtu.be/VIDEO_ID)

Displays the video thumbnail on the slide. During presentation, clicking the thumbnail opens the video in the default browser.

Export behaviour

YouTube embeds export to PowerPoint as a text placeholder with the URL — not as an embedded video. See Exporting to PowerPoint.


Poll / QR code (!poll)

!poll[What is your biggest challenge?](https://pollev.com/your-poll)

Renders a scannable QR code pointing to the URL, plus the URL as text — useful for live audience interaction with Poll Everywhere or any URL-based polling tool.


Speaker notes

Add speaker notes below ??? on any slide. Notes are never visible to the audience.

## Our Roadmap

- Q1: Public beta
- Q2: v1.0 release
- Q3: Plugin API

???

Pause here and ask the audience what features they most want to see.
Remember: the plugin API question usually sparks good discussion.

In single-screen mode, press N to toggle the notes panel.
In dual-screen mode, notes appear permanently in the presenter overlay.

See Presenting — Speaker Notes for more.


Layout override

Force a specific layout regardless of content with an HTML comment at the top of the slide:

<!-- layout:grid -->

## Hand-picked grid

- Item one
- Item two
- Item three
- Item four

Available layout names: title, section, title-content, title-image, split, full-bleed, quote, two-column, bsp, grid, media, code.

See Layouts for what each layout looks like and when Kova uses it automatically.