Seeded
Deterministic avatars from any string, user id, team, or slug.
procedural svg avatars
Procedural SVG avatars with retro planet texture.
Deterministic avatars from any string, user id, team, or slug.
Self-contained markup with no image assets or canvas runtime.
Small generated SVGs that stay sharp at every avatar size.
Built-in palettes plus custom color arrays for product identity.
The generator returns a self-contained SVG string, so it works in vanilla JS and stays easy to wrap for frameworks.
Named visual styles you can pass directly to the `variant` option.
Any string can become a stable avatar, even when the preset stays on `auto`.
Import the core generator for vanilla JavaScript, or use thin React and Vue adapters from subpath exports.
import { createPlanetAvatar, mountPlanetAvatar } from 'planet-avatar'
const svg = createPlanetAvatar({
seed: 'nova-42',
size: 128,
variant: 'luna',
rings: true,
title: 'Nova avatar'
})
document.querySelector('#avatar').innerHTML = svg
mountPlanetAvatar(document.querySelector('#compact'), {
seed: 'viking',
size: 48
})import { PlanetAvatar, usePlanetAvatar } from 'planet-avatar/react'
export function ProfileAvatar() {
const svg = usePlanetAvatar({
seed: 'nova-42',
size: 128,
variant: 'luna',
rings: true,
title: 'Nova avatar'
})
return (
<div>
<PlanetAvatar seed="viking" size={64} variant="orbit" />
<output>{svg.length}</output>
</div>
)
}<script setup lang="ts">
import { PlanetAvatar } from 'planet-avatar/vue'
</script>
<template>
<PlanetAvatar
seed="viking"
:size="64"
variant="orbit"
title="Viking avatar"
/>
</template>Avatar scale
Planet Avatar stays legible as a small account image, member badge, or activity feed identity.