> ## Documentation Index
> Fetch the complete documentation index at: https://developers.zite.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Title, favicon, and link previews

> Set an app's browser tab title, favicon, and the title, description, and image shown when its link is shared, with seoSettings in the app's zite.config.json.

Each app has its own browser tab title, favicon, and link preview (the card shown when someone shares the
app's URL in Slack, iMessage, or social media). They live under `seoSettings` in the app's
`apps/<dir>/zite.config.json`. The owner can edit the same fields under **Settings → Branding**, which writes to
this file.

## seoSettings

```json theme={"system"}
{
  "seoSettings": {
    "title": "Acme Helpdesk",
    "description": "Submit and track support requests for Acme customers.",
    "faviconUrl": "https://example.com/acme-favicon.png",
    "thumbnailUrl": "https://example.com/acme-preview.png"
  }
}
```

| Field | Sets |
| - | - |
| `title` | The browser tab title and the link preview title |
| `description` | The link preview description and the meta description |
| `faviconUrl` | The browser tab icon, and the Apple touch icon unless PWA settings set one |
| `thumbnailUrl` | The link preview image. Use a 1.91:1 image, such as 1200×630 |

All four fields are required strings. Use `""` for any field you don't want to set: an empty string
leaves that field to the fallbacks below. A `seoSettings` object missing a field fails config
validation, and the build tools reject the file write with an error naming the field.

Changes take effect when the app is published.

## What wins

For each field, the first of these that exists is used:

1. The value in `seoSettings`.
2. The matching tag in the app's own `index.html`: its `<title>`, `<meta name="description">`, `<link rel="icon">`, or `og:image`.
3. The platform default: the app name followed by `| Zite` for the title, a generic Zite description, the Zite favicon, and, for public (external) apps, a screenshot of the app as the preview image. Internal apps get no preview image by default.

The starter's `<title>Zite App</title>` and `/vite.svg` favicon count as placeholders, so they never
override the platform defaults.

## Image URLs

`faviconUrl` and `thumbnailUrl` must be URLs a browser can load. When the owner uploads an image under
**Settings → Branding**, Zite hosts it and fills in the URL. The build tools can't upload images, so an
agent either uses a URL the user already has (their website's favicon, a logo on a CDN) or asks the user to
upload the image in **Settings → Branding**.

## Related

* [Project structure](/framework/project-structure.md): the other fields in an app's `zite.config.json`.
* [Make your app installable (PWA)](/recipes/pwa.md): home screen icon and install title, set under **Settings → Branding**.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.