An AI model for icons.

Describe an icon. Get an editable SVG in the Blode style.

Try an example

Style 24px · Outline · 2px stroke · R3
Size
Stroke
Radius
Finish
About this model

Model card

Every number links to its receipt. Gaps are marked.

Family
blode-icons, 4,357 drawings, 12 pinned anchorspublic librarySOURCE.jsonrevision.json
Checks
17 rules, exact replay; only compiler output reaches the pageThe checks constrain geometry. They do not establish that an icon reads as the right object.public librarytoolsstyle.ts
House yardstick
blode-icons passes its own strict spec 40.9% of the time (gate 99.0%)The set fails its own strict reading; a generator is not held to 1.0. Re-derived from the vendored library with the current linter.public librarypublic-conformance.v1.json
Against other stroke packs
house strict 33.8% vs tabler 22.3%; pooled floor of 4 packs 20.3%Measured on the private store with the August linter; the third-party packs are not vendored and cannot be re-measured here.private store2026-08-19calibration.v1.json
Generated, development set
10/10 gate, 4/10 strict after repair; 7/10 review-clear first pass; median 260 s per concept pairn=10, 24px, repaired outputs, root visual review. Development yield, not a craft score; qualification false in the receipt.generated, n=102026-09-09validation.jsonvalidation.json
Off-axis edges
29.1% of stroked house icons carry one (480 of 1,649)Off-axis edges are the set's own habit, so the canvas permits them by name and the linter warns rather than errors.public librarypublic-conformance.v1.jsonlint.ts
Instruments
style similarity (facebook/dino-vitb8) discarded at AUC 0.476; rendered cosine AUC 0.864; judge gate claude-haiku-4.5 83% (discarded), claude-sonnet-4.5 93%, gemini-3.5-flash 100%, gemini-3.7-flash 100%Published because a metric that failed is evidence too. Judge accuracy is a forced choice between a shipped icon and an unrelated one, n=30 per model.private store2026-08-19calibration.v1.jsonstress-cosine.v1.json
Benchmark
not yet runFilled from the newest live receipt under packages/iconsmith/bench/runs once one exists (scripts/icon-bench.ts). Sandbox runs are not scores.generated, n=10icon-bench.ts
Cost and latency per draw
not yet measuredFilled from docs/log/web-draws-*.json once 100 metered draws are on file. No estimate stands in for the measurement.this pagelog

Use it

In your coding agent

Installs the public skill. In Claude Code: claude plugin marketplace add mblode/iconsmith, then claude plugin install iconsmith@iconsmith. Test keys are sandboxed; live keys spend credit.

npx skills add mblode/iconsmith --skill iconsmith

Over HTTP

The route this page calls. Send a prompt, concept or images; add stream: true to stream.

curl https://blode.co/iconsmith/api/v1/icons \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer ism_test_00000000000000000000000000000000' \
  -d '{
    "concept": "bookmark-check",
    "cut": {
      "finish": "outlined",
      "radius": 3,
      "size": 24,
      "stroke": 2
    },
    "model": "iconsmith-1",
    "n": 2
  }'