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, andfavicon-integration.htmlincluded- 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
--jsonsummary 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)
- Download and unzip the release archive
unzip favico.zip
- Optional: verify the published checksum before installing
shasum -a 256 favico.zip
# or
openssl dgst -sha256 favico.zip
- 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
- 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
192x192and512x512 - Manifests:
site.webmanifest,browserconfig.xml - Integration:
favicon-integration.html(HTML for<head>)
- Icons:
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
IMAGEPath 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).--forceForce generation even when upscaling from smaller sources.--overwriteOverwrite 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-sizesShow size breakdown by preset and exit.--descriptionPrint the verbose Favico description and exit.-q, --quietMinimize output (final summary / JSON only).-v, --verboseDetailed per‑file output.--jsonOutput machine‑readable JSON summary.--no-bannerDo not print the startup banner.--no-progressDo not show progress bar.--no-colorDisable ANSI colors in progress output.-h, --helpPrint help.-V, --versionPrint 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|darkor include in--background-variants. - Cropping to square is expected in
--mode crop; use--mode fitto preserve aspect ratio with padding. - Upscaling is skipped unless
--forceis 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
- Docs and downloads: https://favico.theodd0ne.com
- Changelog: see the homepage for the current version and release notes.
Copyright
Copyright (c) 2025 Igor Maric. All rights reserved.