Semantic Icons

3000 icons · 71 categories · one drawing hand

Ask for an icon the way
you would say it.

Most icon sets make you guess the file name. This one reads a sentence. Type what is happening, and the set answers from 3000 marks drawn to one contract — 24 units, a 2-unit stroke, no fill.

3000curated icons 71categories 0 msnetwork time 18search tags per icon 63/64labelled prose cases
searchIcons()
/

How it ranks

Retrieval, not a file name lookup.

Every mark carries a phrase, a category and about 18 search tags — synonyms, both regional spellings, and the whole sentences a caller types. A query is stemmed, stripped of stopwords, and scored against all of it. Nothing here is a model call.

01

Reduce the words

Stopwords go. Plurals and verb endings fold to a stem, so tomatoes meets tomato. Accents fold too.

02

Score every mark

Each term pays by where it sits, times how rare it is in the set, times how much of the query the mark answers.

03

Pay the exact hits

A whole phrase found inside the prose outranks a longer phrase that shares one word, so put on your raincoat is a raincoat.

04

Guard against a thief

A term counts at most twice across one mark's tags, so a long tag list widens reach without taking another mark's own name.

SignalWhy it countsWeight
Term in the phraseThe mark is named for this idea6
Term in a keywordA synonym, or how a person says it4
Term in the categoryWeak, but it breaks a tie1
Exact phraseThe query is the mark’s own name140
Exact keywordThe query is a listed synonym100
Exact keyword, shaded… but the query names another mark outright30
Phrase inside the prosePer word, so longer is stronger40
Keyword inside the prosePer word14

Browse

Every mark, by category.

Filter by name or keyword, set the size you ship at, and click any mark to copy its SVG.

When the words do not match

Three stages, and only the last one draws.

Word search cannot answer a word the set never names. A phrase under the score floor goes to the semantic-icon function, which first looks for the nearest curated mark by meaning, and pays a model to draw only when nothing is close. The panel below replays that path with prepared results.

stage 1

Words, in the page

The lexical index over all 3000 marks. No key, no request, no model. This answers most prose.

stage 2

Meaning, in the database

A voyage-3 vector per mark in pgvector. match_icons returns the nearest by cosine distance, above a floor of 0.62.

stage 3

A new mark

Only when nothing is close. The model states a concept, draws, passes the geometry check, and the mark is cached.

Preview resolve(phrase)

Pick a phrase the set does not hold

  • Word search over 3000 curated marks
  • Best score is under the floor of 8
  • Nearest mark by meaning is under 0.62 similarity
  • Send the phrase to the drawing service
  • Check the geometry, then cache the mark

This panel is a preview. It makes no network call, and this page runs stage 1 only. The four marks were drawn by hand for this page, in the same 24-unit contract as the set. Each phrase is a real miss: the word search returns nothing for all four.

Waiting no phrase yet

Pick a phrase on the left to replay the path.

Use it

A package, an SDK, and an MCP server.

The set ships inside the package, so a curated phrase costs no request and no key.

Reactsemantic-icons/web
// Curated phrases answer with no request.
import { SemanticIcon }
  from 'semantic-icons/web';
import { createLocalResolver }
  from 'semantic-icons/library';

configureSemanticIcons({
  functionUrl,
  anonKey,
  resolveLocally: createLocalResolver(),
});

<SemanticIcon phrase="time for bed" />
SDKsemantic-icons/sdk
// No framework. Node and the browser.
import { createSemanticIcons }
  from 'semantic-icons/sdk';

const icons = createSemanticIcons({
  functionUrl,
  anonKey,
});

icons.search('my phone battery is low');
icons.get('battery-low');

// Curated first, then the model.
await icons.resolve('a barnacle');
MCPsemantic-icons-mcp
# Give an assistant the whole set.
claude mcp add semantic-icons \
  -- npx -y semantic-icons-mcp

# Tools it gains:
#   search_icons     rank prose
#   get_icon         one mark by name
#   list_categories  the 71 groups
#   list_category    one group
#   resolve_icon     curated, then model