Shiplog

Backend

AvatarForge

September 2, 2026

AvatarForge wraps every DiceBear style adventurer, bottts, pixel-art, notionists, and 50-plus more behind one endpoint: GET /:id/:seed, where :id picks the style and :seed (a username, an email, anything) deterministically picks the avatar. The homepage lists all of them with a live preview so picking a style is a click, not a guess. Size, radius, scale, background color, and flip are all forwarded straight through as query params.

Requests are rate-limited per IP via Cloudflare's native Rate Limiting binding and served from Cloudflare's edge cache with a one-year immutable Cache-Control, so a repeat request for the same style/seed never touches DiceBear's renderer twice.

Why: Wanted one avatar endpoint to own instead of hot-linking a third-party avatar service from every project a single Worker with all 60+ DiceBear styles behind it, so any app just needs a seed and a style id to get a deterministic default avatar.

Stack: TypeScript, Hono, Cloudflare Workers, DiceBear, Cloudflare Cache API, Cloudflare Rate Limiting