banner.maker
Generate a social media banner from a grid of project icons, instantly.

- Role
- Design + Engineering
- Timeline
- 2026
- Stack
- Next.js 16 · Tailwind v4 · html-to-image · React 19
Every project ships an icon. Very few ship a banner.
A Twitter/X profile without a banner reads as unfinished. The gap between having an icon and having a presentable header is small in theory, but every existing tool wants an account, a file upload, or a canvas-based editor that fights its own coordinate system.
banner.maker was built to close that gap in one sitting. Drop your project icons into a grid, set a background, pick a shape, download a PNG at the correct platform resolution. Nothing persists, nothing leaves the browser, and the URL hash encodes the full configuration so a shared link round-trips exactly.

Real DOM, not a canvas.
The export is rasterized from real DOM. Two identical BannerCanvas trees render simultaneously, one scaled for the on-screen preview and one hidden at the exact pixel dimensions the platform expects (1500×500 for X, 1584×396 for LinkedIn). html-to-image snapshots the hidden mirror. There is no coordinate mapping between a canvas and the DOM, no pixel-density fudge, no visual drift between the preview and the download. The tradeoff is that web fonts must be pre-loaded and cross-origin images must proxy through a single /api/proxy-image endpoint, which also strips private addresses to prevent SSRF. The squircle icon corners are a true superellipse path (|x|ⁿ + |y|ⁿ = 1, n ≈ 5) applied as an SVG mask, not a border-radius approximation.




- 0 KB
- Server storage: runs entirely in the browser
- 2
- Platform formats: Twitter / X and LinkedIn
- Live
- Ships as a Next.js app, deployable to Vercel
The tool does one thing and the constraints are load-bearing: no accounts means no auth surface, no file storage means no cleanup, URL-encoded state means sharing is a copy-paste. The only server-side code is the image proxy, which exists purely to keep the canvas from being tainted by cross-origin resources.