Skill Icons
Documentation

API Reference

A single HTTP endpoint that returns SVG icon sheets for embedding anywhere.

Base URL
https://skillicons.dev

Usage

Pass a comma-separated list of icon names to the i parameter.

Request
GET /icons?i=js,html,css,wasm
Example
ParamTypeRequiredDescription
istringYesComma-separated icon names, or "all"
tdark | lightNoIcon theme. Default: dark
perlinenumberNoIcons per row, 1–50. Default: 15

Themes

Use t=dark or t=light. Unthemed icons ignore this parameter.

t=dark
Dark
t=light
Light

Icons Per Line

Control the grid width with perline. Accepted range: 1–50. Default: 15.

Example
GET /icons?i=aws,gcp,azure,react,vue,flutter&perline=3
perline=3

Short-name Aliases

Common shorthands are accepted — e.g. ts resolves to typescript.

AliasResolves to
jsjavascript
tstypescript
pypython
tailwindtailwindcss
vuevuejs
nuxtnuxtjs
gogolang
cfcloudflare
wasmwebassembly
postgrespostgresql
k8skubernetes
nextnextjs
mongomongodb
mdmarkdown
psphotoshop
aiillustrator
prpremiere
aeaftereffects
scsssass
scscala
netdotnet
gatsbyjsgatsby
gqlgraphql
vlangv
amazonwebservicesaws
botsdiscordbots
expressexpressjs
googlecloudgcp
muimaterialui
windiwindicss
unrealunrealengine
nestnestjs
ktorioktor
pwshpowershell
auaudition
rolluprollupjs
rxjsreactivex
rxjavareactivex
ghactionsgithubactions
sklearnscikitlearn

All Icons (284)

Use any of these names in the i parameter.

awsabletonactivitypubactixadonisaftereffectsaiscriptalpinejsanacondaandroidstudioangularansibleanthropicantigravityapolloappleappwritearcharduinoastroatomauditionautocadazulazurebsdbabelbashbevybitbucketblenderblueskybootstrapbuncclioncmakecppcscsscanvacassandraclaudeclojurecloudflarecodepencoffeescriptcrystalcursorcypressd3dbeaverdenodavinciresolvedartdatagripdebiandevtodiscorddiscordbotsdiscordjsdjangodockerdotnetdynamodbeclipseelasticsearchelectronelixirelysiaemacsemberemotionexpressjsfacebookfastapifediversefigmafirebaseflaskflutterflyforthfortranframerframermotiongcpgtkgamemakerstudiogatsbygentoogherkingitgitlabgithubgithubactionsgmailgolanggodotgooglecolabgooglescholargradlegrafanagraphqlgsapgulphtmlhackerrankhaskellhaxehaxeflixelherokuhibernatehtmxhuggingfaceipfsideaillustratorinstagramjqueryjavajavascriptjenkinsjestjuliakafkakalikotlinktorkuberneteslatexlangchainlaravellesslinearlinkedinlinuxlitlivewireluamarkdownmastodonmaterialuimatlabmavenmintmisskeymongodbmongoosemysqlneovimnestjsnetlifynextjsnginxnimnixnodejsnotionnpmnuxtjsocamlobsidianoctaveollamaopenaiopencvopenshiftopenstackphpperlphotoshopphpstormpiniapinterestpklplan9planetscalepnpmpolarspostgresqlpostmanpowershellpremiereprismaprocessingprometheuspugpycharmpytorchpythonqtquarkusrrosrabbitmqrailsrailwayraspberrypireactreactrouterreactivexredhatredditredisreduxregexremixrenderreplitriderrobloxstudiorocketrollupjsrubyrustsqlitesvgsassscalascikitlearnseleniumsentrysequelizesignalsketchupsnapchatsolidjssolidityspotifyspringstackoverflowstyledcomponentssublimesupabasesvelteswiftsymfonytailwindcsstauritelegramtensorflowterraformthreadsthreejstrelloturborepotwitchtwittertypescriptubuntuuipathunityunrealenginevvimvscodevscodiumvalavercelverilogvisualstudiovitevitestvuejsvuetifywarpwebassemblywebstormwebflowwebpackwhatsappwindicsswindowswordpressworkersxxdyarnyewyoutubezedzigp5js

Adding a New Icon

Want to contribute an icon? Follow these steps to make sure it renders correctly in the composite SVG sheet.

1

Prepare your SVG

Icons must be 256×256 with viewBox="0 0 256 256". No <style> blocks — CSS class names collide when icons are composited. Use inline fill="..." attributes instead. Prefix gradient/filter IDs with a unique string to avoid conflicts.

Correct format
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="256" viewBox="0 0 256 256">
  <!-- paths with inline fill attributes -->
  <linearGradient id="myicon_grad1" ...>...</linearGradient>
  <path fill="url(#myicon_grad1)" d="..." />
</svg>
2

Name the file

Use TitleCase. Themed icons get -Dark / -Light suffixes. Single unthemed icons get no suffix.

✅ Correct

ReactRouter-Dark.svg

ReactRouter-Light.svg

GoogleColab.svg

❌ Incorrect

react-router-dark.svg

googlecolab.svg

Google-Colab-Dark.svg

3

Drop it in icons/ and rebuild

Terminal
# Place your file(s) in icons/
# Then rebuild the icon map:
node build.js
4

Test locally

Terminal
npx esbuild index.js --bundle --outfile=dist/worker.js --platform=browser --format=iife
./node_modules/.bin/miniflare dist/worker.js --wrangler-config wrangler.dev.toml \
  --no-update-check --port 8787 --upstream https://skillicons.dev

Then open http://localhost:8787/icons?i=youriconname and check both t=dark and t=light if applicable.

5

Open a pull request

Title: feat: add <IconName> icon. Include the icon's license and source. One icon per PR keeps review fast. See CONTRIBUTING.md for the full checklist.