Open-source project
devicons/devicon avatar
devicons/devicon

devicon: a logo set for programming languages and tools, and how to wire it into a page

Set of icons representing programming languages, designing & development tools

11,833 stars2,442 forksCSSMIT

At a glance

What is it?
The devicon project collects logos for languages and developer tools and ships them as SVG files or an icon font. It is a good fit when you need a language badge in a README or a portfolio, and the wrong tool when you need an app's own UI icon set.
Who is it for?
Adopt devicon if you need language and tool logos for a README, a portfolio, a slide deck or a docs site, and you are willing to accept the brand policy that comes with each logo. Do not adopt it as a general-purpose UI icon set: every glyph in it is a third-party brand, and the README says usage should follow the owning company's brand policy.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 6 days ago.
What is it written in?
Mainly CSS, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 30, 2026, and from our analysis. They are not legal advice.

Editorial analysis

What devicon solves, and the audience it is built for

Any page that lists technologies runs into the same chore. You want a small, recognizable mark next to Python, Docker, Figma or PostgreSQL, and you want it to look consistent across the whole list. Drawing those marks yourself is not realistic, and pulling individual brand assets from a dozen vendor press kits produces a row of logos in twelve different weights, aspect ratios and background treatments.

devicon exists to flatten that. The README states the aim plainly: "Devicon aims to gather all logos representing development languages and tools." It is not a general icon library. Every glyph in it is a third-party brand, and the README is explicit that all product names, logos and brands belong to their respective owners and that usage should follow the brand policy of the company or service in question.

The audience is therefore narrow and easy to identify: developers writing READMEs, portfolio pages, conference slides, documentation sites and course material. If your page needs a magnifying glass, a gear or an arrow, this is not the project for you. If your page needs the Go gopher-adjacent mark or the React atom, it is exactly the project for you.

One scale figure is worth stating, with the caveat that it comes from the README rather than from a count of the icons directory: the README says "Devicon has 150+ icons. And it's growing!" The README also points readers to devicon.json and to devicon.dev for the complete and current list, which is the right place to check rather than trusting any number quoted in prose.

Variants, naming and the icon font mechanism

The core design decision is that each logo is not one file but a small matrix. The README describes the axes: font or SVG, original, plain or line, colored or not colored, wordmark or no wordmark. That is why a single brand can appear under several class names, and why picking the wrong suffix is the most common mistake when using the font build.

The naming pattern is visible in the README's own examples. A plain devicon mark is devicon-devicon-plain. The same mark with the wordmark is devicon-devicon-plain-wordmark. Adding the colored class to either one applies the brand color instead of the monochrome default. The prefix is always devicon-, then the icon slug, then the variant.

The font route works the way icon fonts generally do: the stylesheet maps class names to code points in a font file, and an empty <i> element renders the glyph. That means the icons inherit font-size and color from their context, which is convenient for inline use in text, and it also means the icons are text as far as the browser is concerned. The README's font section notes that if you skip a package manager you must download devicon.min.css and place the font files next to it, because the CSS references those font files by relative path.

The SVG route is a different trade. Copying raw SVG markup gives you a real vector element you can style with CSS fill, but it puts a block of path data directly into your markup. For a page with three logos that is fine. For a page with sixty, the font build is the more sensible default, and the README labels it as recommended.

Installing devicon and rendering your first icon

The README gives two installation routes. The package manager route installs the stylesheet and font files into your project:

bash
npm install --save devicon
yarn add devicon

After that, the stylesheet has to be linked in the document head. The README's local example is a single link tag pointing at devicon.min.css.

html
<link rel="stylesheet" href="devicon.min.css">

If you would rather not install anything, the README's TL;DR shows a CDN link to the jsDelivr build of the repository, which can be dropped straight into the head of an HTML file:

html
<!-- in your header -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/devicons/devicon@latest/devicon.min.css">

<!-- in your body -->
<i class="devicon-devicon-plain"></i>

With the stylesheet loaded, an icon is an <i> element carrying the class name. The README's own examples, using devicon as the icon, are these:

html
<!--  for devicon plain version -->
<i class="devicon-devicon-plain"></i>

<!--  for devicon plain version with wordmark -->
<i class="devicon-devicon-plain-wordmark"></i>

<!--  for devicon plain version colored with devicon main color -->
<i class="devicon-devicon-plain colored"></i>

What you should see is the mark rendered at whatever font-size the surrounding text has. If you get an empty box instead, the class name does not match an entry in the stylesheet, which usually means a typo in the slug or a variant that does not exist for that particular icon. The README points to devicon.json and devicon.dev as the authoritative list, so check the slug there before assuming the stylesheet is broken.

The third route the README documents is copy and paste. The icons directory in the repository holds the SVG files, and the project page shows the same markup, so you can paste an <svg> element with a viewBox and a path directly into your template. That is the route to take when you need one icon and do not want a font dependency.

Where devicon stops being the right answer

The first limitation is legal rather than technical. The README carries a notice that all product names, logos and brands are property of their respective owners, that they are used for identification purposes only, and that use does not imply endorsement. It then says usage of these logos should follow the brand policy of the company, brand or service. That is a constraint on where you can put them. A neutral list of technologies you work with is one thing. A logo wall that implies a partnership, a certification or a customer relationship is a different thing, and the README's notice does not give you permission for it.

The second limitation is coverage. The README says 150+ icons. That sounds like a lot until you look for the specific tool you use. Niche languages, internal frameworks, regional products and anything released in the last few months may simply not be there. The README has a dedicated icon request flow with its own issue template, which tells you the maintainers expect gaps and handle them through issues rather than expecting you to add a logo quietly. If your list contains a tool that is not in devicon.json, you are either filing a request and waiting, or mixing devicon with hand-supplied SVGs, which reintroduces the inconsistency devicon was meant to remove.

The third limitation is that this is a font and a folder of SVGs, not a component library. There is no React component, no tree-shaking story in the README, and no theming API beyond the colored class and normal CSS inheritance. If you need icons that respond to a design token system, you will be writing that layer yourself.

Finally, the release cadence is worth noting for planning rather than as a criticism. The listed releases are v2.17.0 on 2025-07-21, v2.16.0 on 2024-02-05 and v2.15.1 on 2022-03-23. New logos arrive between releases, but if you pin to a released version, expect to wait for the next one to pick up an icon that was added recently.

devicon compared with a general-purpose icon library

The obvious alternative is a general icon set such as Font Awesome or a similar library that includes some brand marks alongside its UI icons. The difference in approach is in what the library is optimized for. A general icon set is built around a consistent drawing grid so that a gear, a user and a calendar look like they came from the same hand. Brand marks are an add-on, and they are usually limited to the largest companies.

devicon inverts that. Its whole purpose is the brand marks, and the README describes the variant matrix precisely so that a logo can be adapted to a monochrome list or a colored one. The cost of that focus is that you get nothing for your UI. A project that needs both a settings icon and a Kubernetes icon is looking at two dependencies.

A second alternative is pulling official SVGs from each vendor's own brand or press page. That gets you the current, authoritative artwork and the current brand rules, which matters when a company refreshes its identity. The cost is that you are now maintaining a folder of assets from a dozen sources with no shared naming scheme, and every refresh is a manual diff. devicon's value is that someone else normalizes the artwork and the class names.

The choice usually comes down to volume. One or two logos: take the official asset. A long, frequently edited list: devicon pays for itself in consistency.

Licence, contribution and what a version bump costs you

The repository is MIT licensed, and package.json carries "license": "MIT". That covers the code and the packaging: the stylesheet, the build tooling, the font. It does not relicense the logos, and the README's brand notice sits separately from the licence for exactly that reason. Treating the MIT licence as blanket permission for every mark in the set would be a misreading. This is a description of what the files say, not legal advice, and if the logos are going into anything commercial or promotional, the brand policy of each company is the thing to read.

On upgrade cost, the practical risk is not the CSS. It is the class names. If a slug changes, or a variant is renamed, your markup keeps compiling and the icon quietly disappears. That is the failure mode to guard against, and it is why pinning matters: the README's CDN example uses the @latest tag, which means the stylesheet can change under you without any change in your own repository. Pinning to a released version such as v2.17.0 trades freshness for predictability, and for a site that is not actively adding technologies, predictability is usually the better deal.

Contributing is a documented path rather than an open door. There is a CONTRIBUTING.md, a CODE_OF_CONDUCT.md, an icon request issue template, and a documented distinction between the develop and master branches. The repository also documents how to build devicon locally, with a gulp-based CSS task and a separate icon build step. That build step is not trivial: package.json shows it driving a Python script against geckodriver, with separate entries for Linux and macOS versus Windows, which tells you the icon font is generated through browser automation rather than assembled by hand. Anyone planning to add an icon should read CONTRIBUTING.md before touching anything.

Editorial conclusion

Adopt devicon if you need language and tool logos for a README, a portfolio, a slide deck or a docs site, and you are willing to accept the brand policy that comes with each logo. Do not adopt it as a general-purpose UI icon set: every glyph in it is a third-party brand, and the README says usage should follow the owning company's brand policy. Before you commit, open devicon.json or devicon.dev and confirm the exact icon name you need exists in the variant you want, because the class name encodes the variant and a missing one fails silently as an empty box.

Frequently asked questions

What is devicon?

devicon is a collection of logos representing programming languages, design and development tools, gathered into one project. Each icon is available as a font glyph or as an SVG, in original, plain or line form, colored or not, with or without a wordmark.

What is the icon for a programming language in devicon?

There is no single icon for programming languages as a category. devicon holds one mark per language or tool, so the icon for a given language is the entry named after that language in devicon.json, and the README points to devicon.json and devicon.dev as the current reference for what is available.

What is a devicon alternative if I need other logos?

The README does not name any alternative. The two routes it does describe are the SVG folder in the repository and the icon font, and for a logo the set does not cover, the project's documented path is the icon request issue template rather than a substitute library.

Official sources

  1. devicons/devicon on GitHub
  2. License: MIT
  3. Project website
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/devicons-devicon.svg)](https://hysenlabs.com/projects/devicons-devicon)