Important
We'd really appreciate it if you would consider starring our repository! It helps us gain visibility and support the project.
Icoziv is a fast, serverless service that generates beautiful skill and technology icon badges for your GitHub README files. Built for lightning-fast performance and global CDN distribution, it provides an easy way to showcase your tech stack with customizable themes and layouts.
Simply specify the technologies you use, and get a professional-looking SVG badge that automatically adapts to your README's theme.
Fast and Serverless: Built for speed and efficiency, leveraging serverless architecture for instant icon generation.
Global CDN & Smart Routing: Icons are served from Cloudflare's global CDN with Smart Placement for optimal edge routing and low latency worldwide.
Immutable Content: SVG icons are cached indefinitely with the
immutable flag, ensuring unchanged assets are always served instantly from edge caches.
Stale-While-Revalidate: Stale content is served immediately while the cache updates in the background, minimizing latency on cache misses.
CDN-Friendly & Conditional Headers: Optimized for Cloudflare's CDN infrastructure with advanced cache-control, ETag, and If-None-Match support for efficient conditional requests (304 Not Modified).
CORS Support: Cross-origin resource sharing enabled for seamless caching and embedding across domains.
Compression: Automatic gzip/brotli compression via Accept-Encoding negotiation for reduced payload sizes.
Resource Limits: Predictable performance with CPU time limits and resource caps at the edge.
Customizable Themes: Choose between dark and light themes to match your README's style.
Flexible Layouts: Easily adjust the number of icons per line and their alignment.
Extensive Icon Library: A wide range of technology and skill icons to choose from.
Open Source: Fully open source, welcoming contributions from the community.
Easy Integration: Simple URL parameters to customize your icon badges.
Lazy Loading: Improve initial loading times by lazy loading icons as they come into view.
Pagination: Implement pagination or infinite scroll for easier navigation through icons.
Playground: Interactive playground to experiment with icon configurations before embedding them in your README.
API Access: Comprehensive API for fetching icon lists and SVG data programmatically.
Minified Output: Icons are delivered as lightweight SVGs for crisp visuals and minimal load times.
Classify: Icons are organized into categories for easier selection and discovery.
Copy and paste the code block below into your readme to add the skills icon element!
Change the ?i=js,html,css to a list of your skills separated by ","s! You can find a full list of icons here.
[](https://github.com/thuongtruong109/icoziv)Some icons have a dark and light themed background. You can specify which theme you want as a url parameter.
This is optional. The default theme is dark.
Change the &theme=light to either dark or light. The theme is the background color, so light theme has a white icon background, and dark has a black-ish.
Light Theme Example:
[](https://github.com/thuongtruong109/icoziv)You can specify how many icons you would like per line! It's an optional argument, and the default is 15.
Change the &perline=3 to any number between 1 and 50.
[](https://github.com/thuongtruong109/icoziv)Want to center the icons in your readme? The SVGs are automatically resized, so you can do it the same way you'd normally center an image.
<p align="center">
<a href="https://github.com/thuongtruong109/icoziv">
<img
src="https://i.icoziv.workers.dev/icons?i=git,kubernetes,docker,c,vim"
/>
</a>
</p>Endpoint: GET /icons
| Parameter | Short | Description | Required | Default |
|---|---|---|---|---|
icons |
i |
Comma-separated list of icon names | Yes | / |
theme |
t |
Theme - dark (default) or light |
No | dark |
perline |
Number of icons per line (1-50) | No | 15 | |
radius |
Icon(s) corner radius (value between 25 and 85) | No | 40 |
Example:
GET /icons?i=javascript,typescript,react,vue&theme=dark&perline=4
Response: SVG image
Endpoint: GET /api/icons
Returns a JSON array of all available icon names.
Example:
GET /api/icons
Response:
["javascript", "typescript", "react", "vue", ...]Endpoint: GET /api/svgs
Returns a JSON object with all icon SVG data.
Example:
GET /api/svgs
Response:
{
"javascript": "<svg>...</svg>",
"typescript": "<svg>...</svg>",
...
}Currently, there are over 800+ icons available, and more are being added regularly.
To view full list of all available icons, check out the Playground. It lets you browse, search, and customize icons easily.
- Cloudflare Workers + CDN caching for hosting the icon APIs.
- JSON → GZIP + GCM/AES CBC 256 + Base64 encoding for efficient and secure icon data transmission.
- TypeScript for type-safe development.
- Node.js for fallback server-side JavaScript execution.
- ESLint and Prettier for code quality and formatting.
- Vitest for testing
We welcome contributions!
- See CONTRIBUTING.md for details.
- Check todo.md for ideas on what to work on.
- View the contributors who made this project possible.
- View the changelog for recent changes
We strive to respect all branding guidelines and intellectual property. If you represent a company whose icon is included in this project and you would like it removed, or if you believe we have used an icon in a way that violates your branding guidelines, please open an issue on this repository detailing your request. We will review your request promptly and take appropriate action. We appreciate your understanding and cooperation.
Thank you so much already for using my projects! If you want to go a step further and support my open source work, buy me a coffee:
To support the project directly, feel free to open issues for icon suggestions, or contribute with a pull request!
This project is licensed under the MIT LICENSE. Copyright (c) Thuong Truong 2025.




