Hugeicons gallery

Free icons with search and categories: the Hugeicons stroke set, and Solar in six styles, from linear to bold duotone. Click any icon to copy it the way you work: straight into Figma, as HTML, React, Vue, Laravel, Flutter or React Native code, or as a file. Search matches the icon's name and its code name.

arrow-shrink-02 → HugeIcons.arrowShrink02
How to use it — Flutter
  1. Take the two files. hgi-stroke-rounded.ttf into assets/fonts/, and app_icons.dart into lib/ — it's the whole set as static const IconData, already generated.
  2. Declare the family in pubspec.yaml:
    flutter:
      fonts:
        - family: HugeiconsStrokeRounded
          fonts:
            - asset: assets/fonts/hgi-stroke-rounded.ttf
  3. Use it like any icon. Click a tile above to copy its symbol.
    Icon(HugeIcons.callRinging01, size: 22, color: Colors.teal);
    
    IconButton(
      onPressed: refresh,
      icon: const Icon(HugeIcons.refresh),
    );
  4. The other four styles work differently. Stroke and solid are single-colour, so they can be font glyphs. Twotone, duotone and bulk need two tones — and a glyph is one silhouette in one colour, so those stay SVG and render through a small wrapper:
    HugeIconSvg('moon-02', style: HugeIconStyle.duotone,
                size: R.sp(22), color: CustomColors.black())
    
    // the wrapper, in full:
    SvgPicture.asset(
      'assets/icons/hugeicons/duotone/moon-02.svg',
      theme: SvgTheme(currentColor: color),   // NOT colorFilter
    );
    Tint with SvgTheme(currentColor:), never ColorFilter.mode(c, srcIn) — that repaints every path one colour and flattens the second tone away. Hugeicons also ships stroke="#141B34" rather than currentColor, so run the SVGs through svg_currentcolor.py once.
    Note these four are Pro: they belong in your app, not in this repo. Only stroke is free.
  5. Solar icons are SVG too, and free in every style. Set Copy for to SVG file to download one into assets/icons/solar/bold/, then back on Flutter a click copies the SvgPicture.asset(…) line for it.

Two things that will bite you. Keep every IconData compile-time const — IconData(lookupByName(x)) fails the release build outright. And don't ship a name→icon Map of all 6,228: referencing them all defeats --tree-shake-icons, which otherwise cuts the 3 MB font to about 1.4 KB.

Point this at your Hugeicons folder

Stroke is free, so it is here for everyone. Solid, Twotone, Duotone and Bulk are Pro and can't be given away, so the page reads those from your own Hugeicons download: drag the folder that holds the styles onto this page — the folder they all sit in, not one of the five — or pick it with the button, and every tab fills at once. With a key they come from your own private online library instead, and no folder is needed.

Your files never leave this machine — the page reads them locally and uploads nothing. Chrome and Edge remember your folders; other browsers ask again each visit.

! Marks a name that can't turn into a code name cleanly — it collides with another icon and takes an Alt suffix, or starts with a digit and takes an icon prefix, like 24-hours-clock. Both names show on every tile, so trust the mono one.