SHA-256 → symmetric 5×5 grid SVG. Same seed always renders the same avatar — great for comments, admin tables, and test data.
Live requests to this host (not static placeholders).
?seed=user@example.com
Opaque id
?seed=org:acme:user:42
Display name
?seed=Ada Lovelace
URL as seed
?seed=https://example.com/u/7
32×32
64×64
128×128
256×256
Default
?rounded=1
Presets, live preview, copy buttons — same as /embed/.
| Method | Path | Description |
|---|---|---|
| GET | / | This documentation page |
| GET | /{size} | SVG identicon (16–512px square) |
| GET | /v1/{size} | Versioned alias |
| GET | /v1/spec | JSON with resolved URLs |
| GET | /v1/validate | Validate seed/size without rendering |
| GET | /v1/presets | Size presets + example URLs |
| GET | /embed/ | Interactive widget |
| GET | /meta | Machine-readable spec |
| GET | /health | Uptime check |
| Param | Required | Default | Description |
|---|---|---|---|
| seed | No | anonymous | Any string; hashed with SHA-256 |
| rounded | No | off | 1 / true / yes for rounded tiles |
| Code | HTTP | Meaning |
|---|---|---|
| invalid_dimensions | 400 | Non-square or size out of range |
| input_too_large | 400 | seed exceeds max length |
| not_found | 404 | Unknown path |
| bad_request | 400 | Unexpected handler error |
<img src="https://avatar.tools.town/128?seed=user%40example.com" width="128" height="128" alt="" />
curl -sS "https://avatar.tools.town/128?seed=test" -o avatar.svg