A powerful and modern CLI and GUI application to convert images to ICO format with ease. Built with Node.js, Electron, and Sharp for high-quality image processing.
- Powerful Command-Line Interface - Convert images with simple commands
- Batch Processing - Convert multiple images at once
- Custom Icon Sizes - Choose from 16x16 to 256x256 or specify custom sizes
- Progress Indicators - Real-time progress bars and status updates
- Colorful Output - Beautiful, easy-to-read terminal output
- Multiple Format Support - JPG, PNG, WebP, GIF, SVG, TIFF, BMP
- Modern Sleek Interface - Beautiful gradient design with glass-morphism effects
- Drag & Drop - Simply drag images into the window
- Batch Conversion - Convert multiple files simultaneously
- Live Preview - See conversion progress in real-time
- Custom Settings - Select icon sizes and output directory
- Statistics Dashboard - Track conversions, successes, and failures
- Cross-Platform - Works on Windows, macOS, and Linux
- Node.js 16.0.0 or higher
- npm or yarn
npm installOr with yarn:
yarn installnode src/cli.js convert image.pngnode src/cli.js convert input.jpg output.iconode src/cli.js convert image.png -s 16,32,48,256node src/cli.js batch image1.png image2.jpg image3.webp -o ./iconsnode src/cli.js convert image.png -qnode src/cli.js infonpm startOr use the CLI command:
node src/cli.js gui- Add Files: Drag and drop images or click "Browse Files"
- Select Sizes: Choose which icon sizes to include (16x16 to 256x256)
- Set Output: Choose where to save converted icons
- Convert: Click "Convert All" or select a file and click "Convert Selected"
- Monitor: Watch real-time progress and statistics
imageto-ico convert <input> [output] [options]
Arguments:
input Input image file path
output Output ICO file path (optional)
Options:
-s, --sizes <sizes> Icon sizes (comma-separated, e.g., 16,32,48,256)
Default: 16,32,48,64,128,256
-q, --quiet Suppress output messages
-h, --help Display help for commandimageto-ico batch <input...> [options]
Arguments:
input... Input image file paths
Options:
-o, --output <dir> Output directory (default: "./output")
-s, --sizes <sizes> Icon sizes (comma-separated)
Default: 16,32,48,64,128,256
-q, --quiet Suppress output messages
-h, --help Display help for commandimageto-ico info
Display supported formats and default settingsimageto-ico gui
Launch the graphical user interface- JPEG (.jpg, .jpeg)
- PNG (.png)
- WebP (.webp)
- GIF (.gif)
- SVG (.svg)
- TIFF (.tiff, .tif)
- BMP (.bmp)
Standard sizes included:
- 16Γ16 (Small toolbar icons)
- 32Γ32 (Standard toolbar icons)
- 48Γ48 (Large toolbar icons)
- 64Γ64 (Extra large icons)
- 128Γ128 (High DPI displays)
- 256Γ256 (Ultra high DPI displays)
imageto-ico/
βββ src/
β βββ converter.js # Core conversion logic
β βββ cli.js # Command-line interface
β βββ main.js # Electron main process
β βββ preload.js # Electron preload script
βββ renderer/
β βββ index.html # GUI main page
β βββ renderer.js # GUI logic and interactions
βββ package.json # Project dependencies
βββ README.md # This file
npm run devnpm run buildnpm run cli -- convert test.png# Convert a PNG to ICO with default settings
node src/cli.js convert logo.png# Create ICO with only small sizes
node src/cli.js convert icon.png icon.ico -s 16,32,48# Convert all PNGs in current directory
node src/cli.js batch *.png -o ./output-icons# Batch convert without output messages
node src/cli.js batch img1.jpg img2.png img3.webp -o ./icons -q- Use Square Images - Icons look best when starting from square images
- High Resolution - Start with at least 256Γ256 for best quality
- Transparent Backgrounds - PNG files with transparency work great
- Simple Designs - Icons with clear, simple designs scale better
- Test Multiple Sizes - Always check how your icon looks at different sizes
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.
- Sharp - High-performance image processing
- Commander.js - CLI framework
- Electron - Cross-platform desktop apps
- Chalk & Ora - Beautiful terminal output
- Tailwind CSS - Modern styling
If you encounter any issues or have questions:
- Check the documentation above
- Run
node src/cli.js infofor format information - Try with different image formats
- Ensure Node.js version is 16.0.0 or higher
Edward Joseph Terry - Full Stack Developer
I'm passionate about building tools that making developers' lives easier. Check out my other projects and work:
- π» Portfolio - See my work and projects
- π GitHub - Follow my repositories
- π§ Email: sir_edward@icloud.com
- π± Phone: +255 763 815 413
- β Buy me a coffee - Support my work
Made with β€οΈ by Edward Terry
**Happy Converting!