Node.js / Express favicon package. Ready to install.
Download the correct Node.js / Express favicon package, place every file in the right location, and follow the exact installation steps for this stack.
Node.js / Express
For Express apps that serve static files from public/.
ZIP: favico-node-express-modern-package.zip
Folder: favico-node-express-modern-favicon/
- 1Download your favicon package.Download
favico-node-express-modern-package.zipfor Node.js / Express. - 2Extract this package in your project.Extract it in
your project root. The package contains:Package structurefavico-node-express-modern-favicon/ ├── public/favicon.ico ├── public/favicon.svg ├── public/favicon-dark.svg ├── public/favicon-96x96.png ├── public/favicon-dark-96x96.png ├── public/apple-touch-icon.png ├── public/site.webmanifest ├── public/web-app-manifest-192x192.png └── public/web-app-manifest-512x512.png - 3Copy the favicon files to the correct location.Copy the generated files to
public/.Generated file Copy to Status Purpose favicon.ico public/favicon.icoOptional Optional classic browser fallback file. Keep it when useful, but do not link it by default in modern light/dark favicon snippets. favicon.svg public/favicon.svgRequired Light-mode SVG favicon for modern browsers. favicon-dark.svg public/favicon-dark.svgOptional Dark-mode SVG favicon used with prefers-color-scheme: dark. favicon-96x96.png public/favicon-96x96.pngRequired Light-mode PNG fallback favicon. favicon-dark-96x96.png public/favicon-dark-96x96.pngOptional Dark-mode PNG fallback favicon. apple-touch-icon.png public/apple-touch-icon.pngRequired iPhone/iPad home screen icon. site.webmanifest public/site.webmanifestRequired Web app manifest containing app metadata and PWA icon references. web-app-manifest-192x192.png public/web-app-manifest-192x192.pngRequired 192×192 Android/PWA icon referenced by the web app manifest. web-app-manifest-512x512.png public/web-app-manifest-512x512.pngRequired 512×512 Android/PWA icon referenced by the web app manifest. - 4Add the config snippet in
server.js or app.js.server.js or app.jsconst express = require("express"); const path = require("path"); const app = express(); app.use(express.static(path.join(__dirname, "public"))); - 5Insert the favicon/head snippet in
views/layout.ejs, views/index.html, views/layout.pug, or shared head partial.views/layout.ejs, views/index.html, views/layout.pug, or shared head partial<meta name="color-scheme" content="light dark"> <link rel="icon" type="image/svg+xml" href="/favicon.svg?v=10" media="(prefers-color-scheme: light)"> <link rel="icon" type="image/svg+xml" href="/favicon-dark.svg?v=10" media="(prefers-color-scheme: dark)"> <link rel="icon" type="image/png" sizes="96x96" href="/favicon-96x96.png?v=10" media="(prefers-color-scheme: light)"> <link rel="icon" type="image/png" sizes="96x96" href="/favicon-dark-96x96.png?v=10" media="(prefers-color-scheme: dark)"> <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png?v=10"> <link rel="manifest" href="/site.webmanifest?v=10"> - 6Why this setup works.
- Express must expose public/ with express.static before the browser can request /favicon.svg.
- The HTML snippet belongs in the shared template head.
- ♥Support the creator→
Support Favico Studio
Satisfied with the result?
If Favico Studio helped you create your favicon faster, you can support the creator and help keep this tool free, fast, and available for everyone.
- 7Start your app and verify the favicon URLs.Run command
node server.js or npm run devVerify URLs/favicon.svg /favicon-dark.svg /site.webmanifest /web-app-manifest-192x192.png /web-app-manifest-512x512.png - 8Common mistakes to avoid.
Using the source folder name in the browser URL
Wrong:
/public/favicon.svg or /static/favicon.svgCorrect:
/favicon.svgMost frameworks copy public/static assets to the website root. The browser should usually request the root URL, not the source folder name.
Making favicon.ico the main favicon
Wrong:
<link rel="icon" href="/favicon.ico">Correct:
Use SVG and PNG links with light/dark media queries.favicon.ico is included as an old-browser fallback, but actively linking it can override the modern light/dark setup.
- 9Final checklist.✓ Correct stack selected.✓ Correct package downloaded and extracted.✓ Files copied to the exact folder shown in this guide.✓ Config snippet added only when this stack requires it.✓ Head/favicon snippet added to the exact head location shown in this guide.✓ No /public/ or /static/ URL is used unless the framework explicitly requires it.✓ favicon.ico is kept as fallback only, not actively linked as the main favicon.✓ favicon.svg loads directly.✓ favicon-dark.svg loads directly.✓ site.webmanifest loads directly.✓ Manifest icon PNG files load directly.✓ Browser cache cleared and Favico Studio checker passes.