# Header and footer

> Write it once and repeat the same content, in the same place, on every slide.

Company logo, event name, "Confidential", page number: instead of repeating them on every slide, write them once with `@header` and `@footer`. Folio places that content in the same spot on every slide, **except the cover**.

## The basics

Write the block at the start of the presentation, next to `@title` and `@theme`, and close it with `@end`:

```folio
@title 2027 Plan
@theme paper

@footer
2027 Plan · Confidential
@end

# 2027 Plan

---
# Where we are

---
# Where we are going
```

The first slide is the cover and has no footer. On the others, the footer sits at the bottom, inside the slide margin.

The content between `@footer` and `@end` uses the same language as the slides: text, images, icons, styles, components and blocks such as `::: columns`.

## Left and right

To put one part on each side, use `::: columns`. Each item becomes a column, so separate the items with a **blank line**:

```folio
@title Lumen Pitch
@theme ink

@header
::: columns {valign=center}
:: icon rocket {size=lg color=accent}

Lumen Analytics {align=right}
:::
@end

@footer
::: columns
Confidential

$page / $pages {align=right}
:::
@end

# Lumen Analytics

---
# Traction
```

:::tip
Two consecutive lines without a blank line between them form a single paragraph with a line break. That is why they would stay together, in the same column.
:::

## Automatic fields

Inside `@header` and `@footer`, these fields are filled in on each slide:

| Field | Becomes |
| --- | --- |
| `$page` | the slide number (the cover counts as 1) |
| `$pages` | the total number of slides |
| `$title` | the presentation's `@title` |
| `$author` | the presentation's `@author` |
| `$date` | today's date, in the viewer's language |

A misspelled field shows up as an error, with the closest match suggested: `$pagina` suggests `$page`.

## Appearance

By default, header and footer use small text (`size=sm`) in the theme's `muted` color. On a dark slide, the color follows the slide.

To change the default, put attributes on the `@header` or `@footer` line. They apply to the whole block:

```folio
@theme paper

@footer {align=center color=accent weight=bold}
Product Week 2026
@end

# Opening

---
# Agenda
```

Attributes inside the block still work as usual, such as `{align=right}` on a paragraph.

## Cover and exceptions

The cover has no header or footer. By default, the cover is the first slide. On each slide's `---` line, you can change that:

| On the `---` line | Effect |
| --- | --- |
| `{cover}` | the slide becomes a cover too, with no header or footer (good for section slides) |
| `{cover=false}` | the first slide stops being a cover |
| `{footer=off}` | removes the footer from this slide only |
| `{header=off}` | removes the header from this slide only |
| `{footer=on}` | shows the footer even on a cover |

```folio
--- {cover}
# Part 2: Results

--- {footer=off}
![Team photo](https://images.unsplash.com/photo-1522071820081-009f0129c71c?w=1600){fit=cover w=100% h=100%}
```

## In the project theme

A `@header` or `@footer` written in the [project theme](/docs/en/guides/themes/#project-theme) applies to every presentation in the project. It is the place for the company's standard footer.

- If a presentation has its own `@footer`, it **replaces** the theme's.
- To remove the theme's footer from one presentation, write `@footer none`.

```folio
@title A presentation without the company footer
@footer none
```

## Under the hood

Header and footer take a reserved band: slide content never ends up underneath them. A one-line footer fits inside the theme's margin and does not change the layout. If the block is taller, the content area shrinks.

A few things do not apply inside `@header` and `@footer`:

- **Step-by-step reveal.** Header and footer are always shown in full; `step` and `::: steps` are ignored, with a warning.
- **Speaker notes.** `::: notes` inside the block is ignored, with a warning. Write notes on the slide itself.
