icons8-dl

command module
v0.1.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 15, 2026 License: MIT Imports: 4 Imported by: 0

README ยถ

๐Ÿ–ผ๏ธ icons8-dl

A fast, dependency-free command-line tool for downloading PNG icons from Icons8.com. Ships as a single static binary โ€” no runtime to install.

[!WARNING] Uses the public, undocumented Icons8 website API (not the official Icons8 API). No API token is required or supported. Only icons can be downloaded (not illustrations or photos), and only in PNG format.

๐Ÿ“ฆ Installation

Prebuilt binary (recommended): download the archive for your OS/architecture from the latest release, extract it, and put the icons8-dl binary on your PATH.

With Go (1.26+):

go install github.com/alexander-danilenko/icons8-dl@latest

๐ŸŽฏ Usage

Download one or more icon style packs by their code. Each pack is a positional argument and downloads into its own <target>/<Title>/ subdirectory:

icons8-dl ios_filled                      # one pack
icons8-dl ios_filled m_rounded fluent     # several at once
icons8-dl ios_filled -d ~/icons           # choose a target directory (default: current)

Re-runs skip icons already on disk, so an interrupted download resumes where it left off. Filenames don't encode size, so a file downloaded at one --size is skipped rather than refreshed at another โ€” use --force to re-download.

Finding pack codes

Use list and search to print each pack's code and title live from the API:

icons8-dl list             # every available pack
icons8-dl search windows   # packs matching "windows"

The codes shown by list/search are the authoritative ones โ€” they don't always match the style slug in an Icons8 website URL.

Options

Options work with every command and may appear before, between, or after positional arguments.

Option Short Description
--target-directory -d Target directory for downloaded icons (default: current directory)
--size -s Icon size: 24, 48, 96, 192, 384, or 512 (default: 512)
--force -f Re-download and overwrite files that already exist
--no-cache -C Disable response caching
--verbose -v Stream verbose JSON logs to stderr
--version Show version and exit
--help Show help message and exit
Downloading every pack

Pipe the codes from icons8-dl list (its first column) into a loop:

# Linux/macOS (Bash)
icons8-dl list | tail -n +2 | awk '{print $1}' | while read -r id; do icons8-dl "$id" -d ./icons; done
# Windows (PowerShell)
icons8-dl list | Select-Object -Skip 1 | ForEach-Object { icons8-dl ($_ -split '\s+')[0] -d .\icons }

๐Ÿ“„ License

Licensed under the MIT License โ€” see LICENSE. Icons and API courtesy of Icons8.

๐Ÿ’ฌ Support

Found a bug or have a request? Open an issue.

Documentation ยถ

Overview ยถ

Command icons8-dl downloads icons from the Icons8 website API.

main.go is the composition root: it holds the build-time version and the production Icons8 endpoints, and hands off to the cli inbound adapter. All program logic lives under internal/ in the domain, application, and infrastructure layers.

Directories ยถ

Path Synopsis
internal
application
Package application holds the use-cases (Assemble, DownloadQueue, List, Search) and the ports they depend on (Catalog, Downloader, Workspace).
Package application holds the use-cases (Assemble, DownloadQueue, List, Search) and the ports they depend on (Catalog, Downloader, Workspace).
domain
Package domain holds the Icons8 entity types and the pure business rules that operate on them.
Package domain holds the Icons8 entity types and the pure business rules that operate on them.
infrastructure/api
Package api adapts the Icons8 HTTP endpoints and the on-disk response cache.
Package api adapts the Icons8 HTTP endpoints and the on-disk response cache.
infrastructure/cli
Package cli parses command-line arguments, dispatches commands, and wires the infrastructure adapters into the application use-cases.
Package cli parses command-line arguments, dispatches commands, and wires the infrastructure adapters into the application use-cases.
infrastructure/fs
Package fs adapts the local filesystem for downloads.
Package fs adapts the local filesystem for downloads.
infrastructure/render
Package render presents results on the terminal: a download progress bar, an indeterminate fetch throbber, and the style-pack / failure tables.
Package render presents results on the terminal: a download progress bar, an indeterminate fetch throbber, and the style-pack / failure tables.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL