NewCustom SVG upload — your own marks in the same picker

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

wp-admin › Field group › Feature card

Select icon

Heroicons

48 icons loaded · 7,000+ in Pro

32
Colour tokenC · #4F46E5
optional
<?php
$icon = get_field('feature_icon');

// Colour token C — Accent (#4F46E5)
get_openicon($icon, [
    'size'  => 32,
    'class' => 'card__icon',
]);

calendar-days

32px · token C
7,000+icons
324free
0 KBon the frontend
Unlimitedsites

How 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.

page-home.php
<?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.

calendr
arw
chvrn

Live, against the 324 Heroicons loaded on this page.

In Pro

What Pro adds.

The Icon Set dropdown in the plugin settings, with Lucide selected

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.

A batch of custom SVG icons uploading in the plugin settings

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.

The colour token palette in the plugin settings

Colour tokens

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

The migration tool listing icons with no match in the new library

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.

Field groups
Options pages
Repeaters
ACF blocks
Flexible content
REST API

Pricing

One licence. Every site you build.

Not per install, not per seat, not per client.

Free

$0forever

Install from WordPress.org
324 Heroicons
The same fuzzy search
Three colour tokens
ACF Free and ACF Pro
0 KB on the frontend

Heroicons only. No Lucide, no Tabler, no custom SVGs, no migration tool.

Pro

$19per year

Everything in Free
7,000+ icons
Lucide and Tabler icons
Custom SVG upload
Icon library migration
Unlimited sites
Priority support

Renews yearly. Cancel and the plugin keeps working — updates stop.

LifetimeBest value

$69once

Everything in Pro
Free updates
One year of support
One payment

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.

Questions

Before you install

Anything else — .

No. Open Icons works with ACF Free and ACF Pro, version 5.0 or higher. You need ACF installed and activated, nothing else.
No. The SVG is rendered by PHP straight into your markup. No script, no stylesheet, no icon font, no CDN request — nothing is enqueued at all.
Every icon already chosen keeps rendering — the SVG is in your field data and the render function is in the free plugin, so nothing has to phone home. The picker is what stops: after a seven-day grace period the field asks you to reactivate before you can choose a new icon. Live sites are unaffected either way.
Yes. The field value is an array — library, icon name, colour token, and the SVG markup itself — so it comes through the REST API with your other fields and your frontend prints the SVG directly. Nothing to resolve, nothing to fetch.
One payment of $69: everything in Pro, unlimited sites, updates for the life of the plugin, and one year of support from the date you buy.
Yes. Email us and we send a code that deducts what you have already paid on the current subscription from the Lifetime price.
“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 developer

Install 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.