The icon field ACF
should have shipped with.
Seven thousand icons, searchable inside the field. The SVG is written into your markup by PHP — no icon font, no sprite sheet, no extra request.
Free on WordPress.org with 324 Heroicons · No account · Works with ACF Free and ACF Pro
Select icon
48 icons loaded · 7,000+ in Pro
<?php
$icon = get_field('feature_icon');
// Colour token C — Accent (#4F46E5)
get_openicon($icon, [
'size' => 32,
'class' => 'card__icon',
]);calendar-days
32px · token CHow it works
Pick an icon. Get an SVG in your markup.
01 — Storage
Nothing lands in the media library.
ACF 6.3 added an Icon Picker with three sources: Dashicons, the media library, or a URL. Dashicons is the only icon set in there — everything else means you supply a file, and that file is yours forever: a name to remember, a size and a colour baked in, and a row someone has to clean out.
Open Icons stores the icon in the field itself: which library, which name, which colour token, and the SVG markup. No attachment, no media library row, nothing for an editor to delete by accident.
ACF Icon Picker
// return format: array
{
"type": "media_library",
"value": 4182
}An attachment ID. The icon is a row in the media library and a file on disk.
Open Icons
// return format: array
{
"provider": "lucide",
"version": "0.544.0",
"iconKey": "calendar-days",
"colorToken": "A",
"svg": "<svg …>"
}The icon and its markup, in the field. Nothing in the media library.
<?php
$icon = get_field('feature_icon');
get_openicon($icon, [
'size' => 32,
'class' => 'card__icon',
]);Output
<!-- rendered on the server -->
<svg class="card__icon" width="32" height="32"
viewBox="0 0 24 24" fill="none">…</svg>02 — Rendering
One function. No assets.
The SVG is written into your markup by PHP, before the page is sent. There is no script to enqueue, no stylesheet, no font file and no CDN request.
0 KB
added to the frontend
0
network requests
03 — Finding it
Search that forgives your typing.
An ordered subsequence match with up to three inserted characters, so calendr finds calendar and arw finds every arrow. It runs across every library on your licence at once.
The picker in the hero is the real one. Type in it.
Live, against the 324 Heroicons loaded on this page.
In Pro
What Pro adds.
Your choice of library
Heroicons, Lucide or Tabler — 324, 1,500 or 5,200 icons. Pick one in settings and every icon field uses it.
Your own icon set
Upload a whole set at once. Scripts and event handlers stripped on the way in, then pick it like any library.

Colour tokens
Three named colours. Pick a token instead of a hex, and changing the token rewrites every icon using it.

Library migration
Changed your mind halfway through. Matching names move across on save. The rest you remap by name, all instances at once.
Works where ACF works
It is an ordinary ACF field. Wherever you already read field data, the icon comes with it.
Pricing
One licence. Every site you build.
Not per install, not per seat, not per client.
$0forever
Install from WordPress.orgHeroicons only. No Lucide, no Tabler, no custom SVGs, no migration tool.
$19per year
Renews yearly. Cancel and the plugin keeps working — updates stop.
$69once
Already on yearly? Email us — we deduct what you have paid from the Lifetime price.
30-day money-back guarantee on both paid plans. Email us inside thirty days and we refund it.
“Open Icons is truly a game changer for adding icons to my sites. The integration into ACF is so smooth, fitting perfectly as a new field type, and the ability to customise colours allows me to tailor icons to each brand with ease.”
Jay Lewis · WordPress developerInstall it on the next build.
Free on WordPress.org, 324 Heroicons, no account. Pro is $19 a year or $69 once, for every site you build.