Iconotype

An open-source IcoMoon alternative

IcoMoon is a good tool, and for a font you make once it is hard to beat. Iconotype is for the other case: a font that ships repeatedly, from a repository, with other people reviewing it. It imports IcoMoon's own formats, keeps every codepoint, and never asks you to upload anything.

Open the web app VSCode extension Download for desktop

Your existing project comes across

The thing that keeps people on IcoMoon is not the editor, it is the selection.json in their repository and the codepoints baked into every stylesheet they have already shipped. Iconotype reads all of it:

Codepoints come across exactly as they were. That is the point: a font you already shipped has its codepoints baked into every built stylesheet, and renumbering them would silently change which glyph each existing class renders. From then on they are append-only and recorded in a lockfile, so no future export can move them either.

npx @iconotype/cli init --input icomoon/project.json \
  --fonts-dir app/fonts --styles-dir app/css --style-kind scss-variables

That writes a committed <name>.iconotype.json and a codepoints.lock. Nothing is uploaded, and the IcoMoon file is left untouched.

What is actually different

IconotypeIcoMoon
Where the project lives a JSON file in your repo, reviewable in a diff in the browser, or a file you download
Building without a network iconotype build
Inside your editor VSCode extension: completion, previews, rename, usage
Codepoint drift locked, and iconotype diff fails the PR
Licence and designer credit carried into the generated stylesheet
Reproducible output same input, same bytes
Licence MIT, self-hostable proprietary service

Written to be checkable rather than flattering. If something here is wrong or has changed, say so and it gets corrected.

What stays the same

The zip you know

Same layout: fonts, style.css, variables, a demo page, and selection.json so you can go back to IcoMoon whenever you like.

Class names and prefixes

.icon-home, prefixes, postfixes and the ${u} interpolation IcoMoon supports — so an existing stylesheet keeps working untouched.

Multicolour glyphs

IcoMoon's stacked-layer model, palettes included, rather than a flattened approximation of it.

And what you get for moving

230+ libraries, searched at once

Lucide, Material Symbols, MDI, Tabler, Phosphor and hundreds more, each landing with its own licence attached to the artwork.

An SVG fixer with receipts

Strokes outlined, transforms baked, even-odd converted — and anything that cannot survive the trip reported instead of silently mangled.

CI that can say no

iconotype diff fails a pull request that would move a codepoint; scan finds icons nothing references any more.

Questions

Can I import my IcoMoon project?
Yes — the project file, a selection.json, a downloaded font package zip, or a folder of SVGs. Codepoints are preserved exactly.
Will my existing stylesheets keep working?
Yes, provided the codepoints do not move, and they do not: allocation is append-only and recorded in a lockfile. Renaming an icon moves its name, never its number.
Does it work offline?
Everything except searching the online icon libraries. The fixer, the font build and the export all run locally, in the browser tab, the desktop app or Node.
Is it really free?
MIT licensed, no account, no upload, no paid tier.
Can I go back to IcoMoon?
Yes. Every export includes a selection.json IcoMoon can open, which is the same file it would have written itself.
Is this affiliated with IcoMoon?
No. It reads IcoMoon's file formats; it does not use IcoMoon's service.

Try it with your own project

The web app opens with nothing to install. Drop your selection.json on it and see whether the codepoints line up.