Files
SnapOtter/apps/docs/tools/image/favicon.md
T
SnapOtter d24e244af4 docs: organize tool pages by modality under /tools/<modality>/
Move all 157 tool pages into image/video/audio/pdf/data subfolders so URLs read /tools/<modality>/<id> (e.g. /tools/image/crop). Nest the image sub-categories under an Image group in the sidebar so the nav reads by modality. Add public/_redirects (301, clean + .html forms) mapping every old flat /tools/<id> URL to its new path so inbound links keep working. Rewrite all internal /tools links. Verified with a clean docs build (no dead links).
2026-06-18 14:12:28 +08:00

2.9 KiB

description
description
Generate all standard favicon and app icon sizes from a source image.

Favicon Generator

Generate a complete set of favicon and app icon files from a source image. Produces all standard sizes needed for browsers, Apple devices, and Android, along with a web manifest and an HTML snippet.

API Endpoint

POST /api/v1/tools/image/favicon

Accepts multipart form data with one or more image files. No settings are required.

Parameters

This tool has no configurable parameters. It generates all standard sizes automatically.

Generated Files

For each input image, the following files are produced:

File Size Purpose
favicon-16x16.png 16x16 Browser tab icon
favicon-32x32.png 32x32 Browser tab icon (HiDPI)
favicon-48x48.png 48x48 Desktop shortcut
apple-touch-icon.png 180x180 iOS home screen
android-chrome-192x192.png 192x192 Android home screen
android-chrome-512x512.png 512x512 Android splash screen
favicon.ico 32x32 Legacy ICO format
manifest.json - Web app manifest with icon references
favicon-snippet.html - Ready-to-use HTML link tags

Example Request

Single source image:

curl -X POST http://localhost:1349/api/v1/tools/image/favicon \
  -H "Authorization: Bearer si_your-api-key" \
  -F "file=@logo.png"

Multiple source images (each gets its own set in a subfolder):

curl -X POST http://localhost:1349/api/v1/tools/image/favicon \
  -H "Authorization: Bearer si_your-api-key" \
  -F "file=@logo-light.png" \
  -F "file=@logo-dark.png"

Example Response

The response is a ZIP file streamed directly. The response headers are:

Content-Type: application/zip
Content-Disposition: attachment; filename="favicons-a1b2c3d4.zip"

HTML Snippet Included

The ZIP includes a favicon-snippet.html file you can paste into your HTML <head>:

<!-- Favicons -->
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="48x48" href="/favicon-48x48.png">
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
<link rel="manifest" href="/manifest.json">

Notes

  • Source images are resized using cover fit mode, meaning they are cropped to fill each square size. For best results, use a square source image.
  • When multiple files are uploaded, each gets its own subfolder in the ZIP (named after the source file).
  • For a single file upload, all outputs are at the root of the ZIP with no subfolder.
  • Files that fail validation or decoding are skipped, and a skipped-files.txt is included in the ZIP explaining the issues.
  • Supported input formats: JPEG, PNG, WebP, AVIF, TIFF, GIF, HEIC, SVG, RAW, PSD, and more.
  • EXIF orientation is auto-applied before resizing.