A simple and easy-to-use cross-platform application icon generation tool that can convert various image formats to rounded application icons.
- ✨ Automatically generates all required icon sizes
- 🎨 Automatically adds macOS-style rounded corners (20% corner radius)
- 🖼️ Supports multiple image formats (PNG, JPG, WEBP, SVG, GIF, etc.)
- 🛠️ Supports command line usage
- 📦 Simple and easy to use, zero configuration
- 🌍 Cross-platform support (Windows, macOS, Linux)
- 🪟 Automatically generates Windows ICO files
- 🍎 Automatically generates ICNS files on macOS (requires iconutil)
- Node.js 14.0.0 or higher
- macOS requires
iconutilcommand (Xcode Command Line Tools) for.icnsgeneration - Windows and Linux can generate PNG iconset and
.icofiles
# Using npm
npm install -g icns-generator
# Using pnpm (recommended)
pnpm add -g icns-generator# Clone repository
git clone https://github.com/CatKeee/icns-generator.git
cd icns-generator
# Install dependencies
pnpm install
# Link globally
pnpm link --global# Basic usage (finds icon.png in current directory and generates icon.icns)
icns-generator
# Specify input file
icns-generator --input my-icon.jpg
# Specify output file
icns-generator --output app-icon.icns
# View supported file formats
icns-generator --list-formats
# Full parameters
icns-generator --input my-icon.png --output app-icon.icns --dir temp.iconset --output-dir icons --padding 10 --work-dir /path/to/project-i, --input <path>: Input image path (default:icon.png)-o, --output <path>: Output ICNS file path (default:icon.icns)-d, --dir <path>: Temporary iconset directory name (default:icon.iconset)-O, --output-dir <path>: Output directory for all generated files (default:output)-p, --padding <percent>: Padding around the icon as percentage per side (default:8.75)-w, --work-dir <path>: Working directory (default: current directory)--list-formats: Display supported file formats-v, --version: Display version number-h, --help: Display help information
import { generateIcons, generateIcns, generateIco } from "icns-generator";
// Recommended: Use cross-platform method (auto-adapts to current system)
// - All platforms: generates PNG iconset + .ico file
// - macOS (with iconutil): additionally generates .icns file
const result = await generateIcons({
inputFile: "my-icon.png",
outputDir: "icons",
padding: 10,
});
console.log(result); // { iconset, icons, ico, icns }
// Generate ICO file only (all platforms)
await generateIco({
inputFile: "my-icon.png",
outputIco: "app-icon.ico",
outputDir: "icons",
});
// Generate ICNS file only (macOS only, requires iconutil)
await generateIcns({
inputFile: "my-icon.png",
outputIcns: "app-icon.icns",
iconsetDir: "temp.iconset",
outputDir: "icons",
padding: 10,
workDir: "/path/to/project",
});pnpm install# Run directly
node src/index.js
# Or run via CLI
node bin/cli.jsMIT