Favico

One logo in —
every favicon out.

Favico turns a single image into a complete, standards‑compliant favicon set for modern browsers and platforms. It generates PNGs and ICO, Apple touch icons, Android icons, Windows tiles, manifests, and an HTML snippet you can drop into your <head>.

Copyright (c) 2025. Igor Maric. All rights reserved.

Favico v0.95.5

Favico turns a single image into a complete, standards‑compliant favicon set for modern browsers and platforms. It generates PNGs and ICO, Apple touch icons, Android icons, Windows tiles, manifests, and a tidy HTML snippet you can drop into your <head> — without manual image wrangling.

Why Favico

Favico is for anyone who needs consistent, correct favicon sets without the tedium — from solo developers to teams and agencies. It produces predictable outputs with sensible filenames, an integration snippet, and manifests so you can commit assets and forget about image tooling in your builds.

Who It’s For

  • Front‑end and full‑stack developers standardizing web app icons
  • Agencies and product teams maintaining many sites with consistent branding
  • Platform engineers ensuring reproducible, committed assets in CI/CD
  • Anyone who wants to avoid hand‑exporting dozens of icon sizes

At a Glance

  • Presets: Essential → Standard → Comprehensive → Complete
  • PNG + ICO outputs; platform‑aware sizes across iOS/Android/Windows/Web
  • Processing: crop/fit/stretch/maskable with crop positioning
  • Background variants and shapes (light/dark/transparent; square/rounded/circle)
  • site.webmanifest, browserconfig.xml, and favicon-integration.html included
  • Fast generation; no telemetry; offline‑first

Key Features

Drive your favicon set to a clean, standards‑compliant state. Favico processes one source image and emits the whole ecosystem of icons, manifests, and an HTML head snippet. It optimizes files, respects safe‑zones for platforms, and defaults to high‑quality downscaling.

  • Presets map to predictable size sets per platform
  • High‑quality resampling defaults (e.g., Lanczos3) for crisp results
  • Maskable/PWA mode with safe‑zones
  • Background variants and shapes for non‑transparent designs
  • Machine‑readable --json summary for automation

Supported Platform

Favico is currently distributed as a macOS binary (Apple Silicon) via direct download from the website. Additional platforms may follow in future releases.

Note: Favico does not require design tools or Node.js. It is a standalone terminal (CLI) binary.

Installation

Download from https://favico.theodd0ne.com (or see releases/).

System‑wide install (macOS)

  1. Download and unzip the release archive
unzip favico.zip
  1. Optional: verify the published checksum before installing
shasum -a 256 favico.zip
# or
openssl dgst -sha256 favico.zip
  1. Install the binary system‑wide
sudo mkdir -p /usr/local/bin
sudo cp ./favico /usr/local/bin/
sudo chmod +x /usr/local/bin/favico
xattr -d com.apple.quarantine /usr/local/bin/favico 2>/dev/null || true
  1. Verify installation
favico --version
favico --help

Local install (single user)

Copy the favico binary to ~/.local/bin and ensure it’s on your PATH.

mkdir -p "$HOME/.local/bin"
cp ./favico "$HOME/.local/bin/"
chmod +x "$HOME/.local/bin/favico"
grep -q 'export PATH="$HOME/.local/bin:$PATH"' "$HOME/.zshrc" || echo 'export PATH="$HOME/.local/bin:$PATH"' >> "$HOME/.zshrc"
exec zsh
favico --version

Homebrew (site formula)

A simple formula is generated during releases at www/public/homebrew/favico.rb.

# Example of installing via the generated formula when hosted
brew tap theodd0ne/favico   # custom tap (internal/private)
brew install favico         # installs macOS arm64 zip

Quick Start

Generate an essential set:

favico image.png

Comprehensive set with dark background and custom output directory:

favico image.png --set comprehensive --background dark --output ./icons/

List planned outputs without generating:

favico --list-sizes

Machine‑readable summary for CI:

favico image.png --json --output ./public/favicons > favico-summary.json

How It Works

  • Input image: PNG, JPEG, GIF, WebP, BMP, or TIFF. Min 16px; up to ~50MB.
  • Processing:
    • Modes: crop (default), fit (pad), stretch (exact), maskable (PWA safe‑zones)
    • Background: light, dark, or transparent; optional shapes (square, rounded, circle)
  • Outputs:
    • Icons: favicon.ico, favicon.png, favicon-16x16.png, favicon-32x32.png
    • Larger sizes per preset: 64, 128, 192, 256, 512, 1024
    • Apple touch icons; Android 192x192 and 512x512
    • Manifests: site.webmanifest, browserconfig.xml
    • Integration: favicon-integration.html (HTML for <head>)

Generated Files

  • Always: favicon.ico, favicon.png, favicon-16x16.png, favicon-32x32.png
  • Comprehensive adds: favicon-64x64.png, favicon-128x128.png, favicon-192x192.png
  • Complete adds: favicon-256x256.png, favicon-512x512.png, favicon-1024x1024.png
  • Apple touch icons (various sizes)
  • Android: android-chrome-192x192.png, android-chrome-512x512.png
  • Manifests: site.webmanifest, browserconfig.xml
  • Integration: favicon-integration.html (copy‑paste into <head>)
  • Complete set may include social previews (Open Graph / Twitter)

CLI Reference

Positional

  • IMAGE Path to source image (PNG, JPEG, GIF, WebP, BMP, TIFF). Min 16px, Max ~50MB.

Flags

  • -o, --output <DIR> Output directory (default: <name>-favicons).
  • -s, --set <essential|standard|comprehensive|complete> Icon set. Default: standard.
  • -b, --background <light|dark|transparent> Background style (required when using --shape).
  • --shape <square|square-rounded|circle> Background shape (only with light/dark background).
  • --force Force generation even when upscaling from smaller sources.
  • --overwrite Overwrite existing files without confirmation.
  • -m, --mode <crop|fit|stretch|maskable> Processing mode. Default: crop.
  • -c, --crop <center|top|bottom|left|right|top-left|top-right|bottom-left|bottom-right> Crop position. Default: center.
  • --background-variants <light,dark,transparent> Generate multiple background variants (comma‑separated).
  • --list-sizes Show size breakdown by preset and exit.
  • --description Print the verbose Favico description and exit.
  • -q, --quiet Minimize output (final summary / JSON only).
  • -v, --verbose Detailed per‑file output.
  • --json Output machine‑readable JSON summary.
  • --no-banner Do not print the startup banner.
  • --no-progress Do not show progress bar.
  • --no-color Disable ANSI colors in progress output.
  • -h, --help Print help. -V, --version Print version.

Examples

Crop with custom positioning:

favico logo.png --mode crop --crop top-left

Fit mode (preserve aspect ratio):

favico logo.png --mode fit

Maskable icons for PWA:

favico logo.png --mode maskable

Overwrite existing files:

favico logo.png --overwrite

Safety & Privacy

Favico runs locally and has no telemetry. It writes only to the chosen output directory and never modifies your source image.

CI

  • Quick e2e: sh/smoke.sh path/to/logo.png (builds release if needed; checks key outputs)
  • JSON artifact: favico image.png --json --output ./public/favicons > favico-summary.json
  • Fail on missing outputs: compare generated file list to your expected set

Troubleshooting

  • “Image path does not exist” → validate the input path; absolute paths are safest in CI.
  • “--shape requires a solid background” → add --background light|dark or include in --background-variants.
  • Cropping to square is expected in --mode crop; use --mode fit to preserve aspect ratio with padding.
  • Upscaling is skipped unless --force is provided.

Limitations

  • Preset outputs keep results predictable and compatible across platforms.
  • Extremely large sources don’t improve results; start with clean, high‑quality inputs.
  • The HTML snippet assumes web‑root paths — adjust for your setup.

Upgrade

Replace the installed binary with a newer release and re‑verify:

unzip favico.zip
sudo cp ./favico /usr/local/bin/
sudo chmod +x /usr/local/bin/favico
xattr -d com.apple.quarantine /usr/local/bin/favico 2>/dev/null || true
favico --version

Uninstall

Remove the installed binary from your PATH:

sudo rm -f /usr/local/bin/favico

Support & Docs

Copyright (c) 2025 Igor Maric. All rights reserved.