npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

seedface

v0.1.2

Published

Modern, framework-agnostic deterministic placeholder avatar generator. React, Vue, Svelte, Web Components, CLI. Zero-dependency core.

Readme

Seedface

Modern, framework-agnostic deterministic placeholder avatar generator. Same string → same avatar, forever. One tiny zero-dependency core engine powers React, Vue, Svelte, Web Components and a CLI — plus static SVG/PNG export for emails, OG images and server-rendered lists.

A modern rewrite inspired by nusu/avvvatars (MIT). The 60 base shapes are reused from that project with credit; Seedface adds new shapes, themes, adaptive dark mode, more styles and multi-framework support.

Why Seedface

  • Zero dependencies in the core. Generates a standalone <svg> string — no CSS-in-JS, no runtime.
  • 🧩 Multi-framework: React (RSC-friendly), Vue, Svelte, and a native Web Component.
  • 🌗 Adaptive dark mode: every theme ships light + dark palettes; the same user keeps their identity.
  • 🎨 7 themes, 69 shapes, and 5 styles: character, shape, gradient, rings, pixel.
  • 🖥️ RSC / SSR safe: avatars are pure static markup — render on the server with zero client JS.
  • 🏭 Performance at scale: raw SVG generation benchmarks ~100k+ avatars/sec; great for long user lists.
  • 🖼️ Static export: a CLI emits SVG or PNG for emails, OG images, favicons, etc.
  • 🎬 Subtle, accessible animation: respects prefers-reduced-motion.
  • 🔒 Deterministic: cyrb53 hash + mulberry32 PRNG — stable across machines and versions.

Install

Pick your package manager:

NPM

npm i seedface

pnpm

pnpm add seedface

Yarn

yarn add seedface

Bun

bun add seedface

Framework peers (only install what you use):

# React
npm i seedface react react-dom
# Vue
npm i seedface vue
# Svelte
npm i seedface svelte
# PNG export via CLI (optional)
npm i -D @resvg/resvg-js

React (works in Server Components)

import { Avatar } from 'seedface/react';

export function User({ email }: { email: string }) {
  return <Avatar value={email} style="shape" theme="ocean" variant="dark" size={48} shadow animated />;
}

variant="auto" follows prefers-color-scheme. Need the raw string?

import { generateAvatar } from 'seedface';
const { svg, initials, shapeIndex } = generateAvatar({ value: '[email protected]', style: 'pixel' });

Vue

<script setup>
import { Avatar } from 'seedface/vue';
</script>
<template>
  <Avatar value="[email protected]" style="gradient" theme="candy" :size="64" animated />
</template>

Svelte

<script>
  import { Avatar } from 'seedface/svelte';
</script>
<Avatar value="[email protected]" style="rings" theme="neon" size={64} />

Web Component (any framework, or none)

<script type="module">
  import 'seedface/webcomponent'; // auto-registers <seedface-avatar>
</script>
<seedface-avatar value="[email protected]" style="shape" theme="forest" variant="dark" size="64"></seedface-avatar>
import { registerSeedface } from 'seedface/webcomponent';
registerSeedface('my-avatar'); // custom tag name

CLI (static SVG / PNG)

seedface generate --value "[email protected]" --style shape --theme sunset --size 128 --out avatar.svg
seedface generate --value "[email protected]" --out avatar.png --size 256   # needs @resvg/resvg-js

API

generateAvatar(options)AvatarData

| Option | Type | Default | Notes | | --- | --- | --- | --- | | value | string | — | required seed | | style | character \| shape \| gradient \| rings \| pixel | character | visual style | | size | number | 64 | px (8–512) | | radius | number \| 'full' \| 'none' | full | corner radius | | theme | string | default | see listThemes() | | variant | light \| dark | light | dark adapts the palette | | background / color | string | theme | color overrides | | displayValue | string | derived | force the initials | | border / borderSize / borderColor | boolean / number / string | false / 2 / auto | | | shadow | boolean | false | soft drop shadow | | animated | boolean | false | load + hover animation | | salt | string \| number | — | extra entropy |

Develop

npm install
npm run build   # tsup → dist (esm + cjs + dts)
npm test        # determinism / style / theme checks
npm run demo    # vite playground + showcase site (controls + perf test)

Credits

MIT licensed. Original shapes © Nusu Alabuga & Oguz Yagiz Kara, reused under MIT. Banner art by Molret.