Subtle Icons is a bloat-free, lightweight plugin that brings thousands of icons directly into the WordPress block editor and Advanced Custom Fields (ACF).
Search and insert icons from Lucide, Material, Heroicons, and dozens of other icon libraries without leaving the editor — or upload your own SVGs.
The complete source code for this plugin, including all uncompiled JavaScript and CSS, is publicly available at:
https://github.com/skysarwer/subtle-icons
Build requirements: Node.js and npm.
To build from source:
git clone https://github.com/skysarwer/subtle-iconsnpm installnpm run buildnpm startThis plugin connects to the Iconify API to power the icon search and picker interface. The API is only contacted from within the WordPress admin area when a logged-in user with post-editing capabilities is using the Icon Picker — it is never called on the public-facing frontend.
Iconify API
Used to search the Iconify icon registry and to retrieve individual SVG files. The following data is sent:
* Icon search queries (the keyword string typed by the editor).
* Icon set prefix and icon name when fetching a specific SVG.
No personally identifiable information is transmitted. Requests are made only when the Icon Picker is actively used by an authenticated user.
All icon search, browse, and individual SVG selection requests are made server-to-server: the editor’s browser calls a WordPress REST endpoint on your own server, which then forwards the query to Iconify. Only your server’s IP address is visible to Iconify for these requests.
Icon preview thumbnails displayed in the browsable grid are loaded directly from the editor’s browser by the bundled @iconify/react library. The editor’s IP address and standard browser headers are sent with these thumbnail requests.
Primary endpoint: https://api.iconify.design
Fallback endpoints (provided by the bundled @iconify/react library): https://api.simplesvg.com, https://api.unisvg.com
All three endpoints are operated by the Iconify project.