> For the complete documentation index, see [llms.txt](https://docs.overleaf.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.overleaf.com/on-premises/configuration/overleaf-toolkit/branding.md).

# Branding

In this section, we'll cover how to personalize key elements of your on-premises instance. You can customize the site title, navigation links, header, footer, and logo according to your preferences.

## Site title

The navigation bar title can be customized with the `OVERLEAF_NAV_TITLE` environment variable, this text is used in the top left corner of navigation if no logo is set.

```
# add to config/variables.env
OVERLEAF_NAV_TITLE=Our Overleaf Instance
```

## Logo

You can add a custom logo by setting the environment variable `OVERLEAF_HEADER_IMAGE_URL`. This value should point to an externally hosted image file.

```
# add to config/variables.env
OVERLEAF_HEADER_IMAGE_URL=https://mysite.somewhere.com/img/logo.png
```

### Light and dark theme logos

From version 6.3.0, you can set separate logos for the light and dark themes with the `OVERLEAF_HEADER_IMAGE_URL_LIGHT` and `OVERLEAF_HEADER_IMAGE_URL_DARK` environment variables. Both values should point to an externally hosted image file.

```
# add to config/variables.env
OVERLEAF_HEADER_IMAGE_URL_LIGHT=https://mysite.somewhere.com/img/logo-light.png
OVERLEAF_HEADER_IMAGE_URL_DARK=https://mysite.somewhere.com/img/logo-dark.png
```

{% hint style="info" %}
If either variable is not set, that theme falls back to the logo set in `OVERLEAF_HEADER_IMAGE_URL`.
{% endhint %}

## Header navigation links

Extra navigation items can be added to the navigation header by setting the `OVERLEAF_HEADER_EXTRAS` environment variable to a JSON array of objects. For example:

{% code overflow="wrap" %}

```javascript
[
  {
    "text": "Some link",
    "url": "http://example.com/somelink",
    "class": "subdued",
    "only_when_logged_out": true
  },
  {
    "text": "Help",
    "class": "subdued",
    "dropdown": [
      {
        "text": "Documentation",
        "url": "/learn"
      },
      {
        "text": "Contact Admin",
        "url": "http://example.com/contact"
      }
    ]
  }
]

# add to config/variables.env
OVERLEAF_HEADER_EXTRAS=[{"text":"Some link","url":"http://example.com/somelink","class":"subdued","only_when_logged_out":true},{"text":"Help","class":"subdued","dropdown":[{"text":"Documentation","url":"/learn"},{"text":"Contact Admin","url":"http://example.com/contact"}]}]
```

{% endcode %}

## Footers

It is possible to customize both the left and smaller right footer which is found on pages like `/project` using the environmental variables `OVERLEAF_LEFT_FOOTER` and the smaller `OVERLEAF_RIGHT_FOOTER`

Both expect an array of JSON which will be inserted.

```javascript
[
  {
    "text": "This is an example text footer entry!"
  },
  {
    "text": "This is an example URL footer link!", "url" : "/my-first-link.htm"
  }
]
```

{% hint style="info" %}
When using `text` only, it must **not** contain HTML as the value will be rendered as raw text.
{% endhint %}

This data needs to be valid JSON to work, with quotes escaped when passed through as an environmental variable.

{% code overflow="wrap" %}

```
# add to config/variables.env
OVERLEAF_LEFT_FOOTER=[{"text": "This is an example text footer entry!"}]
OVERLEAF_RIGHT_FOOTER=[{"text": "This is an example URL footer link!", "url" : "/my-first-link.htm"}]
```

{% endcode %}

{% hint style="info" %}
In addition to `text` and `url`, the JSON object also accepts the properties `class` and `label` for additional customization.
{% endhint %}

## Maintenance page

You can customize the message shown on the Maintenance page with the `OVERLEAF_MAINTENANCE_MESSAGE` environment variable, this text replaces the default message below the page title.

{% code overflow="wrap" %}

```
# add to config/variables.env
OVERLEAF_MAINTENANCE_MESSAGE=Our Overleaf Instance is down for maintenance and will be back shortly.
```

{% endcode %}

To include links or other formatting, use `OVERLEAF_MAINTENANCE_MESSAGE_HTML` instead. If both are set, `OVERLEAF_MAINTENANCE_MESSAGE_HTML` takes priority.

{% code overflow="wrap" %}

```
# add to config/variables.env
OVERLEAF_MAINTENANCE_MESSAGE_HTML=Our Overleaf Instance is down for maintenance. For urgent requests, contact <a href="mailto:admin@example.com">admin@example.com</a>.
```

{% endcode %}

{% hint style="info" %}
`OVERLEAF_MAINTENANCE_MESSAGE` is rendered as plain text, so it must **not** contain HTML. `OVERLEAF_MAINTENANCE_MESSAGE_HTML` is rendered as HTML without escaping.
{% endhint %}

If neither is set, the default message links to your status page when `OVERLEAF_STATUS_PAGE_URL` is set, and shows the admin email address when it isn't.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.overleaf.com/on-premises/configuration/overleaf-toolkit/branding.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
