# line-awesome

> Line Awesome by Icons8: more than 1,500 free line icons as a web font, as tree-shakeable SVG icons for Vue and React, and as components through unplugin-icons in Vite, webpack, Rollup and Nuxt.

Latest version **2.1.0** (published 2026-11-05) · MIT license · 0 weekly downloads

## Install

```sh
npm install line-awesome
pnpm add line-awesome
yarn add line-awesome
bun add line-awesome
```

## Health

**Score 75/100 (B)** — status: active.

Positive: has types; esm support; no vulnerabilities; has provenance; recently updated; high maintenance score; high quality score.

Warnings: low downloads; large bundle.

## Facts

| | |
|---|---|
| Version | 2.1.0 |
| Published | 2026-11-05 |
| First published | 2018-03-20 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Dependencies | 0 |
| Unpacked size | 11.9 MB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Provenance | attested (GitHub Actions) |
| GitHub stars | 1318 |
| Maintainers | icons8, gevvos |
| Keywords | font, awesome, icons, svg, icons8, line-awesome, font-awesome, vue, react, tree-shaking, unplugin-icons, iconify |

## Links

- npm: https://www.npmjs.com/package/line-awesome
- Repository: https://github.com/icons8/line-awesome
- Homepage: https://github.com/icons8/line-awesome#readme
- Issues: https://github.com/icons8/line-awesome/issues
- npm.io page: https://npm.io/package/line-awesome

## Alternatives

- [@fortawesome/react-fontawesome](https://npm.io/package/@fortawesome/react-fontawesome.md) — 2.2M weekly downloads
- [roboto-fontface](https://npm.io/package/roboto-fontface.md) — 196.0K weekly downloads
- [@react-native-vector-icons/common](https://npm.io/package/@react-native-vector-icons/common.md) — 150.4K weekly downloads
- [stockfish](https://npm.io/package/stockfish.md) — 27.0K weekly downloads
- [@procore/core-icons](https://npm.io/package/@procore/core-icons.md) — 4.6K weekly downloads

## Recent versions

- 2.1.0 (latest) — 2026-11-05
- 2.0.0-rc.0 (next) — 2026-10-13
- 2.0.1 — 2026-10-16
- 2.0.0 — 2026-10-15
- 1.3.0 — 2019-11-21
- 1.2.1 — 2019-11-07
- 1.2.0 — 2019-11-07
- 1.0.2 — 2018-06-06
- 1.0.0 — 2018-03-20

## README

<p align="center">
  <a href="https://icons8.com/line-awesome"><img src="https://raw.githubusercontent.com/icons8/line-awesome/master/.github/assets/banner.svg" alt="Line Awesome: line icons for your code" width="100%"></a>
</p>

<p align="center">
  <a href="https://www.npmjs.com/package/line-awesome"><img src="https://img.shields.io/npm/v/line-awesome?style=flat-square&color=1a66f0" alt="npm version"></a>
  <a href="https://www.npmjs.com/package/line-awesome"><img src="https://img.shields.io/npm/dm/line-awesome?style=flat-square&color=1a1a1a" alt="npm downloads per month"></a>
  <a href="https://github.com/icons8/line-awesome/actions/workflows/ci.yml"><img src="https://img.shields.io/github/actions/workflow/status/icons8/line-awesome/ci.yml?branch=master&style=flat-square&label=CI" alt="CI status"></a>
  <a href="#svg-icons"><img src="https://img.shields.io/npm/types/line-awesome?style=flat-square&color=3178c6" alt="TypeScript types included"></a>
  <a href="LICENSE.md"><img src="https://img.shields.io/badge/license-MIT%20or%20Good%20Boy-1a1a1a?style=flat-square" alt="License: MIT or Good Boy"></a>
</p>

<p align="center">
  <a href="#vue"><img src="https://img.shields.io/badge/Vue-3-4FC08D?style=flat-square&logo=vuedotjs&logoColor=white" alt="Vue 3"></a>
  <a href="#react"><img src="https://img.shields.io/badge/React-18%2B-149ECA?style=flat-square&logo=react&logoColor=white" alt="React 18+"></a>
  <a href="#bundler-plugins"><img src="https://img.shields.io/badge/Vite%20·%20webpack%20·%20Rollup%20·%20Nuxt-unplugin--icons-1a66f0?style=flat-square" alt="unplugin-icons for Vite, webpack, Rollup and Nuxt"></a>
  <a href="#the-font"><img src="https://img.shields.io/badge/CSS-web%20font-1a1a1a?style=flat-square&logo=css3&logoColor=white" alt="CSS web font"></a>
</p>

<p align="center">
  <a href="https://icons8.com/line-awesome"><b>Browse icons</b></a>
  ·
  <a href="#quick-start">Quick start</a>
  ·
  <a href="#svg-icons">SVG icons</a>
  ·
  <a href="#upgrading-from-1x">Upgrading from 1.x</a>
  ·
  <a href="CHANGELOG.md">Changelog</a>
</p>

# Icons8 Line Awesome

Line Awesome is a free set of more than 1,500 line icons from [Icons8](https://icons8.com) in regular, solid and brand styles. It is based on the [Icons8 Windows 10 style](https://icons8.com/icons/windows), and its class names follow Font Awesome 5, so it works as a drop-in replacement for it, and a separate stylesheet replaces Font Awesome 6 and 7.

Use it as a web font with CSS classes, import icons one by one as SVG for Vue, React or plain JavaScript, or get them as components through [unplugin-icons](#bundler-plugins) in Vite, webpack, Rollup and Nuxt.

<p align="center">
  <img src="https://raw.githubusercontent.com/icons8/line-awesome/master/.github/assets/facts.svg" alt="More than 1,500 icons in 3 styles: 616 B for the first imported icon, 16 KB of CSS for the font" width="100%">
</p>

<p align="center">
  <a href="https://icons8.com/line-awesome"><img src="https://raw.githubusercontent.com/icons8/line-awesome/master/.github/assets/icons.svg" alt="A grid of Line Awesome icons in solid, regular and brand styles" width="100%"></a>
</p>

## Quick start

```shell
npm install line-awesome
```

**Web font.** Import the CSS once, then put classes on an element: `las` for solid, `lar` for regular, `lab` for brands.

```js
import 'line-awesome/dist/line-awesome/css/line-awesome.min.css';
```

```html
<i class="las la-star"></i>
```

**SVG, tree-shakeable.** Import an icon by name; icons you don't import stay out of the bundle.

```jsx
import { lasStar } from 'line-awesome';
import { LaIcon } from 'line-awesome/react'; // or 'line-awesome/vue'

export const Favorite = () => <LaIcon icon={lasStar} size={24} title="Favorite" />;
```

No bundler? Load the CSS [from a CDN](#cdn).

## Choose how to use it

Every icon comes two ways: as a web font with CSS classes, as in 1.x, and since 2.0 as a tree-shakeable SVG module.

| You want | Use | What the page loads |
|---|---|---|
| Icons by CSS class, no build step | [The font](#the-font), from a CDN or npm | the CSS (16 KB gzip) and the font files of the styles in use (13–97 KB each) |
| Only the icons you use, in a Vue or React app | [SVG icons](#svg-icons) with `LaIcon` | each imported icon, inlined in your JavaScript |
| Icon components without imports | [Bundler plugins](#bundler-plugins) through unplugin-icons | each used icon, inlined in your JavaScript |

In the Rollup example, one icon with `toSvgString` is 616 B gzip, and every further icon adds about 200 B.

## The font

### CDN

Add the stylesheet to your page:

```html
<link
  rel="stylesheet"
  href="https://cdn.jsdelivr.net/npm/line-awesome@2/dist/line-awesome/css/line-awesome.min.css"
/>
```

Keep the version in the URL. Without it the CDN serves whatever version is latest.

### npm

```shell
npm install line-awesome
```

Import the CSS by its path:

```js
import 'line-awesome/dist/line-awesome/css/line-awesome.min.css';
```

Sass users can load the SCSS with Sass's `NodePackageImporter`. Point `$la-font-path` at the package, so the bundler finds the fonts and copies them into the build:

```scss
@use 'pkg:line-awesome' with (
  $la-font-path: 'line-awesome/dist/line-awesome/fonts'
);
```

`pkg:` URLs need the importer in your Sass options. In Vite:

```js
// vite.config.js
import { NodePackageImporter } from 'sass';

export default {
  css: {
    preprocessorOptions: {
      scss: {
        importers: [new NodePackageImporter()],
        silenceDeprecations: ['import', 'global-builtin'],
      },
    },
  },
};
```

`silenceDeprecations` is optional. The SCSS predates the Sass module system, and without it Dart Sass prints `import` and `global-builtin` deprecation warnings for it.

### Classes

An icon has one of three styles, each with its class: `las` for solid, `lar` for regular and `lab` for brands. Put the style class and the icon class on an element:

```html
<i class="las la-battery-three-quarters"></i>
```

Size classes: `la-xs`, `la-sm`, `la-lg`, `la-1x` to `la-10x`, and `la-fw` for fixed width.

Search icons and copy their classes on the [Line Awesome page](https://icons8.com/line-awesome).

### Icons added after 1.3.0

Icons added after 1.3.0 (`la-x-twitter`, `la-tiktok`, `la-sparkles` and others, listed in [`added-icons.json`](added-icons.json)) are in the main fonts and the main stylesheet: nothing to load besides `line-awesome.css`. Their glyphs were appended to the 1.3.0 fonts, so every earlier icon keeps its codepoint, glyph and shape, and a test compares them with the 1.3.0 fonts glyph by glyph.

```html
<i class="lab la-x-twitter"></i>
```

Use the style class of the icon's font: `las` for the new solid icons and `lab` for the new brands (`lab la-x-twitter`); `la la-sparkles` without `las`, or `lar la-sparkles`, shows nothing.

As SVG icons they need nothing extra either: `labXTwitter` is exported like any other icon.

The old `.eot` and `.svg` fonts (Internet Explorer 8 and older) are not rebuilt and have no added icons. Every other browser uses WOFF2, WOFF or TTF.

To see every icon in the fonts, open [`examples/all-icons/index.html`](examples/all-icons/README.md).

### Replacing Font Awesome

Swap the Font Awesome stylesheet for the Line Awesome one that matches your Font Awesome version and keep the markup.

**Font Awesome 6 or 7** (`fa-solid fa-house`, `fas fa-house`, `fa-brands fa-github`):

```html
<link
  rel="stylesheet"
  href="https://cdn.jsdelivr.net/npm/line-awesome@2/dist/font-awesome-6-7-line-awesome/css/all.min.css"
/>
```

It knows the names of Font Awesome Free 6.7.2 and 7.3.1 and their old names (`fa-home` for `fa-house`), the `fa-solid`, `fa-regular`, `fa-brands` and `fas`, `far`, `fab` prefixes, and the utility classes: sizes, `fa-fw`, lists, animations, rotation, `fa-stack`, `sr-only`. CSS of your own that sets `font-family: "Font Awesome 6 Free"` (or 7) and a codepoint gets the Line Awesome font too.

Icons are as wide as their glyph, as in Font Awesome 6, and `fa-fw` makes them 1.25em wide. Font Awesome 7 gives every icon the fixed width; to keep that, add `:root { --fa-width: 1.25em; }`.

Line Awesome has about three quarters of the free Font Awesome icons: 76% of 6.7.2 and 72% of 7.3.1. A class for an icon it lacks shows nothing, as an unknown class does in Font Awesome. A regular icon that Line Awesome has only in solid shows the solid one. Check the icons you use on the [Line Awesome page](https://icons8.com/line-awesome) or with [`examples/font-awesome-6-7`](examples/font-awesome-6-7/index.html).

**Font Awesome 5** (`fas fa-star`, `fab fa-github`):

```html
<link
  rel="stylesheet"
  href="https://cdn.jsdelivr.net/npm/line-awesome@2/dist/font-awesome-line-awesome/css/all.min.css"
/>
```

It is the Font Awesome 5.11.2 stylesheet with Line Awesome fonts in place of the Font Awesome ones. Keep it for Font Awesome 5 markup: a few names, such as `fa-desktop` and `fa-hands`, mean different icons in 5 and 6.

## SVG icons

Each icon is a plain data object exported by name. Import only what you use; everything else is left out of the bundle.

Names follow the font classes: the style prefix plus the icon name in camel case.

| Font class | Import |
|---|---|
| `las la-star` | `lasStar` (solid) |
| `lar la-star` | `larStar` (regular) |
| `lab la-github` | `labGithub` (brands) |

### Vue

```vue
<script setup>
import { lasStar } from 'line-awesome';
import { LaIcon } from 'line-awesome/vue';
</script>

<template>
  <LaIcon :icon="lasStar" />
  <LaIcon :icon="lasStar" size="2em" title="Favorite" class="text-yellow" />
</template>
```

### React

```jsx
import { lasStar } from 'line-awesome';
import { LaIcon } from 'line-awesome/react';

export function Rating() {
  return <LaIcon icon={lasStar} size={24} title="Favorite" className="text-yellow" />;
}
```

### Without a framework

```js
import { lasStar } from 'line-awesome';
import { toSvgString } from 'line-awesome/core';

element.innerHTML = toSvgString(lasStar, { size: 24 });
```

### `LaIcon` props

| Prop | Default | Description |
|---|---|---|
| `icon` | — | An icon object, e.g. `lasStar`. |
| `size` | `1em` | Height; width follows the icon's aspect ratio. A number means pixels. |
| `title` | — | Accessible name. Without it the icon is decorative and hidden from screen readers (`aria-hidden`). |

Other attributes (`class`, `style`, event handlers) go to the `<svg>`. Monochrome icons use `currentColor`, so they take the text color. To align an icon with text like the font does, give it a class such as `.icon { vertical-align: -0.125em; }`.

`LaIcon` renders the same markup on the server and in the browser, and sets no inline styles, so it works under a strict Content Security Policy. TypeScript types ship with the package.

A single icon can also be imported from its own path: `import lasStar from 'line-awesome/icons/las-star'`.

## Bundler plugins

Line Awesome ships `icons.json` in the [Iconify](https://iconify.design) format, so [unplugin-icons](https://github.com/unplugin/unplugin-icons) (Vite, webpack, Rollup, Rspack, esbuild) takes icons straight from this package, with no per-icon registration.

### Vite + Vue, with auto-import

Install the plugins:

```shell
npm install -D unplugin-icons unplugin-vue-components
```

Add them to `vite.config.js`:

```js
import vue from '@vitejs/plugin-vue';
import Icons from 'unplugin-icons/vite';
import IconsResolver from 'unplugin-icons/resolver';
import { ExternalPackageIconLoader } from 'unplugin-icons/loaders';
import Components from 'unplugin-vue-components/vite';

export default {
  plugins: [
    vue(),
    Components({
      resolvers: [
        IconsResolver({
          customCollections: ['line-awesome'],
          alias: { la: 'line-awesome' },
        }),
      ],
    }),
    Icons({
      compiler: 'vue3',
      customCollections: ExternalPackageIconLoader('line-awesome'),
    }),
  ],
};
```

Use icons in templates, no imports needed:

```vue
<template>
  <i-la-heart-solid />
  <i-la-github />
</template>
```

With pnpm, list `vue` in your own `dependencies`. The icon components unplugin-icons generates import `vue` from the project root, and pnpm puts only direct dependencies there.

### Nuxt

Install the same plugins:

```shell
npm install -D unplugin-icons unplugin-vue-components
```

Add their Nuxt modules to `nuxt.config.ts`:

```ts
import IconsResolver from 'unplugin-icons/resolver';
import { ExternalPackageIconLoader } from 'unplugin-icons/loaders';

export default defineNuxtConfig({
  modules: [
    [
      'unplugin-icons/nuxt',
      { customCollections: ExternalPackageIconLoader('line-awesome') },
    ],
    [
      'unplugin-vue-components/nuxt',
      {
        dts: false,
        resolvers: [
          IconsResolver({
            customCollections: ['line-awesome'],
            alias: { la: 'line-awesome' },
          }),
        ],
      },
    ],
  ],
  build: { transpile: ['line-awesome'] },
});
```

`build.transpile` matters once your code imports from `line-awesome`, for icons or for `LaIcon`. Without it, the server build copies the whole package into `.output/server/node_modules` (7.3 MB) instead of bundling the icons in use.

Templates use the same `<i-la-heart-solid />` tags, and `LaIcon` works as in any Vue app. The pnpm note above applies here too.

### webpack + React

Install the plugin and the JSX compiler it uses:

```shell
npm install -D unplugin-icons @svgr/core @svgr/plugin-jsx
```

Add it to `webpack.config.js`:

```js
import Icons from 'unplugin-icons/webpack';
import { ExternalPackageIconLoader } from 'unplugin-icons/loaders';

export default {
  plugins: [
    Icons({
      compiler: 'jsx',
      jsx: 'react',
      customCollections: ExternalPackageIconLoader('line-awesome'),
    }),
  ],
};
```

Import icons as components:

```jsx
import LaHeart from '~icons/line-awesome/heart-solid';

export function Like() {
  return <LaHeart />;
}
```

### Rollup

Install the plugin:

```shell
npm install -D unplugin-icons
```

Add it to `rollup.config.js`:

```js
import Icons from 'unplugin-icons/rollup';
import { ExternalPackageIconLoader } from 'unplugin-icons/loaders';

export default {
  plugins: [
    Icons({
      compiler: 'raw',
      customCollections: ExternalPackageIconLoader('line-awesome'),
    }),
  ],
};
```

With the `raw` compiler an import is an SVG string:

```js
import heart from '~icons/line-awesome/heart-solid';

document.body.innerHTML = heart;
```

### Icon names in Iconify

Iconify names match the [`la` set](https://icon-sets.iconify.design/la/). An icon drawn in both styles has the regular one unsuffixed and the solid one ending in `-solid` (`heart`, `heart-solid`). Solid-only and brand icons have no suffix (`times`, `github`), and `-solid` works for them as an alias (`times-solid`). The same `icons.json` works with UnoCSS `preset-icons` and Tailwind Iconify plugins.

Working setups for each recipe live in [`examples/`](examples), and CI builds them all.

## Upgrading from 1.x

Nothing changes for the font: the same CSS and font files at the same paths, the same `la-*`, `lar`, `las`, `lab` classes. Pinned CDN URLs such as `line-awesome@1.3.0` keep serving 1.3.0; unversioned ones serve 2.x with the same icons, plus the ones added since (see [Icons added after 1.3.0](#icons-added-after-130)).

**The package has a JavaScript entry now.** Published 1.x had none, so `import 'line-awesome'` did not resolve; in 2.x it gives the icons and loads no styles. Keep importing the CSS by its path, [as shown above](#npm). A CSS `@import 'line-awesome';` resolves to the stylesheet through the `style` export condition.

**Sass:** use `@use 'pkg:line-awesome'` with `$la-font-path`, [as shown above](#npm).

**Font Awesome 4 names** from the font's compatibility section (`la la-close`, `la la-star-o`) are exported too, marked deprecated: `lasClose` points to `lasTimes`, `larStarO` to `larStar`.

**Font Awesome 6 and 7 names** that Line Awesome lacks are exported as well (since 2.1.0): `lasHouse` is `lasHome`, `lasMagnifyingGlass` is `lasSearch`. They are also aliases in `icons.json` and listed under `fa` in `metadata.json`.

**The JavaScript is ESM only.** Node 20.19+ and all current bundlers load it. `require('line-awesome')` works on Node 20.19+; on Node 18 use `import` instead. Jest with babel-jest needs to be told to transform the package:

```js
// jest.config.js
export default {
  transformIgnorePatterns: ['node_modules/(?!line-awesome)'],
};
```

**Vue and React are optional peer dependencies.** Install the one whose `LaIcon` you import; the font and `line-awesome/core` need neither.

## Using in Figma, Sketch, Photoshop, etc.

To use Line Awesome in a design tool, install the font files. There are three, one per style (regular, solid, brands); install all three to get every icon. The files are in `dist/line-awesome/fonts/` (`.ttf` for design tools), and every icon is also a separate file in `svg/`.

## Contributing

Bug reports and ideas are welcome in [issues](https://github.com/icons8/line-awesome/issues). To change the code, see [CONTRIBUTING.md](CONTRIBUTING.md).

## License

Line Awesome is released under either the [MIT License](LICENSE.md) or the [Good Boy License](https://icons8.com/good-boy-license/), at your choice. See [LICENSE.md](LICENSE.md) for both texts.

## Beyond the font

Line Awesome is a free slice of [Icons8](https://icons8.com). For more:

- **[Line Awesome](https://icons8.com/line-awesome)**: browse and search all the icons in the font
- **[Icons](https://icons8.com/icons)**: many more styles, including the [Windows 10 set](https://icons8.com/icons/windows) this font is built from
- **[Illustrations](https://icons8.com/illustrations)**: when line icons aren't enough, illustrations from flat to 3D

## Credits

Based on the [Icons8 Windows 10 icon pack](https://icons8.com/download-huge-windows8-set/); the original set is larger than a single font can reasonably carry, so Line Awesome ships a selection.

Questions or ideas about the icons? [Open an issue](https://github.com/icons8/line-awesome/issues).

---
_Source: https://npm.io/package/line-awesome · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
