Turn the tools you use into a scrolling stack for your GitHub profile.
Build your stack · Use the URL · Options · Contribute
Open stack.rajinkhan.com, choose your tools, arrange them, and copy the finished GitHub markup. The preview updates while you work.
These are generated by the public renderer. They are not screenshots. Click any Stack to open its exact configuration in the builder.
|
Frontend |
Backend |
|
AI and ML |
Mobile |
|
DevOps |
Design |
Every presentation control lives in the URL. These examples use the same six Tools so you can see what each combination changes.
You can also write the image URL yourself. Paste this into a profile README and replace the tool IDs:
[](https://stack.rajinkhan.com)The part after i= is an ordered, comma-separated list. The hosted URL returns the finished SVG directly.
- 745 tools sourced from Simple Icons, Devicon, official project assets, and reviewed neutral glyphs
- Tool names on by default, so the stack stays readable beyond the logos
- Dark, light, and transparent treatments
- Infinite, one-pass, and static motion
- A useful static strip for readers who prefer reduced motion
- Shareable builder URLs and immutable versioned image URLs
- Self-contained SVG output with no third-party requests at render time
Stacks can contain 2 to 100 tools. Duplicate IDs are removed, invalid input returns a readable SVG error, and the service does not inspect GitHub accounts or repositories.
Tip
Try to keep a Stack under 30 Tools if you want people to actually read it. Split bigger setups into separate rows. The renderer still supports 100 Tools in one row for the psychopaths among you.
The builder can copy a picture snippet that switches automatically between light and dark treatments:
<a href="https://stack.rajinkhan.com/?i=typescript,react,nextdotjs,tailwindcss">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://stack.rajinkhan.com/v1/stack.svg?i=typescript%2Creact%2Cnextdotjs%2Ctailwindcss&t=dark">
<source media="(prefers-color-scheme: light)" srcset="https://stack.rajinkhan.com/v1/stack.svg?i=typescript%2Creact%2Cnextdotjs%2Ctailwindcss&t=light">
<img alt="My stack: TypeScript, React, Next.js, and Tailwind CSS" src="https://stack.rajinkhan.com/v1/stack.svg?i=typescript,react,nextdotjs,tailwindcss&t=light">
</picture>
</a>The image links back to its builder configuration, so you can edit the same stack later.
Add options to the hosted image URL:
https://stack.rajinkhan.com/v1/stack.svg?i=typescript,react,nextdotjs&s=slow&d=right
| Parameter | Controls | Accepted values | Default |
|---|---|---|---|
i |
Ordered tool IDs | 2 to 100 comma-separated IDs | README Stack default |
t |
Treatment | dark, light, transparent |
dark |
s |
Speed | slow, normal, fast |
normal |
d |
Direction | left, right |
left |
g |
Spacing | compact, comfortable |
comfortable |
l |
Tool names | on, off |
on |
m |
Motion | infinite, once, static |
infinite |
z |
Tool size | small, large |
large |
Use the builder to search valid tool IDs. Successful /v1/stack.svg URLs are immutable, so an existing profile embed will not silently change when a future renderer version ships.
You need Node.js 22 or newer and pnpm 9 or newer.
git clone https://github.com/rajin-khan/readme-stack.git
cd readme-stack
pnpm install --frozen-lockfile
pnpm build
pnpm devOpen http://127.0.0.1:4173. Run the full check before opening a pull request:
pnpm build
pnpm check
pnpm test
WRANGLER_LOG_PATH=/tmp/readme-stack-wrangler.log pnpm exec wrangler deploy --dry-runThe Wrangler dry run does not contact or change a Cloudflare account.
- Contributing explains the local workflow and pull request checks.
- Tool catalog policy covers logo sources, additions, and corrections.
- Logo use and attribution explains what README authors and asset reusers need to know.
- Third-party notices records catalog licenses, attributions, and trademark sources.
- Compatibility records supported GitHub and browser behavior.
- Architecture describes the builder, renderer, and generated catalog.
- Security model documents the public renderer's input boundary.
- Domain language keeps product terms consistent.
README Stack is available under the MIT License. Third-party names and marks belong to their owners and only identify the corresponding tools. Their inclusion does not imply affiliation, sponsorship, or endorsement. Package licenses do not grant trademark rights. See the third-party notices for sources, licenses, attributions, and correction requests.