---
title: v0 Favicon Install Guide
description: Install a complete favicon and app icon set in a v0.dev generated Next.js app, and stop the default icon returning after each regeneration.
canonical: https://favicontools.com/v0/favicon-install
---

# v0 Favicon Install Guide

v0 generates Next.js repos on command. The default favicon almost always sneaks back in, so treat this guide as your install SOP.

## Why it matters

- **Keep canvases clean** — Upload a single square PNG to v0 so the canvas preview, screenshot exports, and production repo stay aligned.
- **Protect /public** — Every time v0 regenerates files it can overwrite icons. Commit the exported kit immediately after import.

## Playbook

1. **Audit the v0 preview** — Paste the preview URL into the finder and search for Apple touch icons, manifest references, and OG images.
2. **Select the highest-res asset** — Choose the cleanest PNG or SVG surfaced by the scan, then send it to the generator.
3. **Bake into the repo** — Drop the exported icons into /public and reference them in app/layout.tsx plus manifest.json before deploying.

## Checklist

- Add /v0/favicon-install to the GitHub issue template you use for launches.
- Verify both the local dev server and the deployed preview pick up the same favicon kit.
- Run /verify after every merge to ensure nothing reverted to the default Next.js icon.

## FAQ

### Why does v0 keep restoring the default Next.js favicon?

v0 regenerates project files from its own template, which ships with a default icon. Commit your icon set to the repo after every export so the next regeneration diffs against your version rather than replacing it.

### Do I use app/icon.png or /public/favicon.ico in a v0 project?

v0 emits App Router projects, so a file at app/icon.png is picked up automatically and is the least fragile option. Keep favicon.ico in /public as well for older browsers and link aggregators.
