Soft icons for crisp interfaces.

367 icons in stroke and solid, drawn on a 24px grid. Free and MIT licensed for every major framework.

Browse icons

Stroke when it rests.
Solid when it's chosen.

Every icon ships in both styles under the same name, so an active state is a one-word import change.

import { HomeIcon } from "@softstroke/react"

Built for real screens.

  1. Tab bars that feel native

    Tap a tab: its icon turns solid while the rest stay stroke.

  2. Dashboards that stay calm

    Readable at 18px in a busy sidebar, with one weight throughout.

  3. Menus people scan

    Even 1.5px strokes keep a long list of actions quiet and aligned.

  4. Controls with clear states

    Play, pause, like. Each state change is a swap from stroke to solid.

Tab bars that feel native. Tap a tab: its icon turns solid while the rest stay stroke.

9:41
MK

Tuesday, 10 Nov

Morning, Mira

3 tasks left

1 of 4 done today

Tasks

See all

Tomorrow: 3 tasks, first at 09:00

Overview

Revenue

$18,240

+12.4%

Projects

14

+2

Hours

326

+8.1%

Done

Low Tide

Harbour Lights

1:123:28

Seven screens, one icon set

Menus, tab bars, dashboards and app cards, drawn with nothing but Softstroke. Each one lists the icons it uses.

See all use cases
App cards built with Softstroke iconsAn account menu built with Softstroke iconsA glass tab bar built with Softstroke icons

Works where you build.

Native packages for every major framework, plain SVG for everything else, and a CDN when you just need one icon.

import { HomeIcon } from "@softstroke/react";

<HomeIcon size={24} strokeWidth={1.5} />
Planned after v1FigmaFramerWordPressVS Code

Make them yours.

Size, stroke width and color are plain props. Try them.

Color

Tree-shakable. Your bundle gets only the icons you import.

About 0.4 KB each. Optimised paths, no runtime, no fonts to load.

Request an icon

Tell us what you need. Every icon is drawn from scratch in the Softstroke style; brand logos are not added.

Posted publicly on GitHub