# Tabs and tab variants
> Learn how to configure tabs and tab variants in Fern documentation. Group content sections with custom icons and display multiple perspectives.
Tabs let you group sections of your documentation together, while tab variants allow you to display different content perspectives within a single tab.
## Tabs
Add `tabs` to group sections together. The example below shows tabs for `Help Center`, `API Reference`, and an external link to `Github`. Each tab has a `title` and `icon`.
{/* */}
```yaml title="docs.yml"
tabs:
api:
display-name: API Reference
icon: puzzle # Font Awesome icon
help:
display-name: Help center
icon: ./assets/icons/help-icon.svg # Custom image file
github:
display-name: GitHub
icon: brands github # Font Awesome icon
href: https://github.com/fern-api/fern
target: _blank # Link opens in a new tab
navigation:
- tab: api
layout:
- section: Introduction
contents:
- page: My page
path: my-page.mdx
- api: API Reference
- tab: help
layout:
- section: Help center
contents:
- page: Contact us
path: contact-us.mdx
- tab: github
```
{/* */}
Icons can be in three formats:
* **Font Awesome icons**: Use icon names like `fa-solid fa-rocket`. Pro and Brand Icons from Font Awesome are supported.
* **Custom image files**: Use relative paths to image files (e.g., `./assets/icons/my-icon.svg` or `../assets/icons/my-icon.png`). Paths are relative to the `docs.yml` file.
* **Inline SVG**: Provide an SVG string wrapped in quotes (e.g., `""`).
Here's an example of how a tabs implementation renders:
### Tabs placement
Tabs display in the left sidebar by default. To display them horizontally, set `tabs-placement` to `header` in your [layout configuration](/docs/configuration/site-level-settings#layout-configuration).
```yaml
layout:
tabs-placement: header
```
## Tab variants
Tab variants let you display different content variations within a single tab, and [support RBAC](/learn/docs/authentication/rbac). This is useful for showing different user types, implementation approaches, or experience levels without creating separate tabs.
Use **variants** for different perspectives on the same content area (REST vs. GraphQL, beginner vs. advanced). Use **tabs** for completely different documentation sections (guides vs. API Reference).
### Basic usage
Define a tab with a `variants` property instead of a `layout` property. Each variant has its own title and layout. The example below shows two variants for the `Help Center` tab.
```yaml title="docs.yml" startLine=20 {22-34}
tabs:
api:
display-name: API Reference
icon: puzzle
help:
display-name: Help center
icon: home
github:
display-name: GitHub
icon: brands github
href: https://github.com/fern-api/fern
navigation:
- tab: api
layout:
- section: Introduction
contents:
- page: My page
path: my-page.mdx
- api: API Reference
- tab: help
variants:
- title: For developers
layout:
- section: Getting started
contents:
- page: Quick start
path: ./pages/dev-quickstart.mdx
- title: For product managers
layout:
- section: Getting started
contents:
- page: Overview
path: ./pages/pm-overview.mdx
- tab: github
```
### Variant properties
Display name for the variant
Navigation structure using the same format as regular tab layouts
Text displayed below the variant title
Icons can be in three formats:
* **Font Awesome icons**: Use icon names like `fa-solid fa-rocket`. Pro and Brand Icons from Font Awesome are supported.
* **Custom image files**: Use relative paths to image files (e.g., `./assets/icons/my-icon.svg` or `../assets/icons/my-icon.png`). Paths are relative to the `docs.yml` file.
* **Inline SVG**: Provide an SVG string wrapped in quotes (e.g., `""`).
Custom URL slug for the variant
Exclude the variant slug from URLs
Hide the variant from navigation
When true, this variant displays by default. If not specified, the first variant in the list is used.
Role-based access control for the variant
Conditional display configuration