@dicebear/schema
JSON Schema definitions for DiceBear avatar styles and options.
Schemas
This package exports two JSON Schemas (Draft 07):
definition.json
Validates avatar style definitions — the files that describe how a DiceBear avatar style is structured. A definition includes:
canvas(required) — The SVG canvas dimensions and root element treecomponents— Named, reusable SVG components with variants. At render time, a PRNG selects one variant per component. Components can also be declared as aliases of another component viaextends, producing an independently-randomized instance.colors— Named color palettes. Colors can define constraints such asnotEqualTo(must differ from another color) orcontrastTo(picks the highest-contrast value).attributes— Global SVG attributes applied to the root<svg>elementmeta— License, creator, and source metadata
Only a safe subset of SVG elements and attributes is permitted. Event handlers, external URL references, and CSS injection patterns are explicitly blocked.
Additional Documentation
https://www.dicebear.com/specification/definition-schema/
options.json
Validates the options object passed by users when generating an avatar. Supported properties include:
| Property | Type | Description |
|---|---|---|
seed |
string |
PRNG seed for reproducible avatars |
size |
integer |
Output size in pixels (1 to 4096) |
title |
string |
Accessible title rendered as <title> and aria-label |
flip |
string | array |
Mirror direction: none, horizontal, vertical, or both |
scale |
number | [min, max] |
Scaling factor (0 to 10, 1 = original size) |
rotate |
number | [min, max] |
Rotation in degrees (−360 to 360) |
translateX |
number | [min, max] |
Horizontal offset (−1000 to 1000) |
translateY |
number | [min, max] |
Vertical offset (−1000 to 1000) |
borderRadius |
number | [min, max] |
Corner radius (0 = sharp, 50 = circle) |
idRandomization |
boolean |
SVG ID randomization to avoid conflicts |
fontFamily |
string | array |
Font family for text rendering |
fontWeight |
integer | array |
Font weight (1 to 1000) |
*Probability |
number |
Component display probability (0 to 100) |
*Variant |
string | string[] | object |
Component variant filter and weights |
*Color |
string | array |
Hex colors |
*ColorFill |
string | array |
Color fill: solid, linear, or radial |
*ColorFillStops |
integer | [min, max] |
Gradient color stops (min 2) |
*ColorAngle |
number | [min, max] |
Gradient angle (−360 to 360) |
When an option accepts an array, the PRNG either picks from the list (for discrete values) or picks a value within the range (for numeric min/max pairs).
Usage
JavaScript
import definitionSchema from "@dicebear/schema/definition.json" with ;
import optionsSchema from "@dicebear/schema/options.json" with ;
PHP
Python
=
=
Rust
The schemas are embedded at compile time and exposed as raw JSON (&'static str). Parse them with serde_json and validate with the jsonschema crate:
use ;
let definition: Value = from_str?;
let options: Value = from_str?;
// Or look one up by name (None if unknown); all() lists the names:
let schema = get;
let all = all;
Go
The schemas are embedded at compile time and exposed as raw JSON (string). Parse them with encoding/json and validate with a library such as jsonschema:
import (
"encoding/json"
"github.com/dicebear/schema"
)
var definition map[string]any
_ = json.Unmarshal([]byte(schema.Definition), &definition)
var options map[string]any
_ = json.Unmarshal([]byte(schema.Options), &options)
// Or look one up by name (ok is false if unknown); All() lists the names:
raw, ok := schema.Get("definition")
all := schema.All()
CDN
The schemas are available directly via CDN — no installation required. We recommend using a specific version to ensure stability:
https://cdn.hopjs.net/npm/@dicebear/schema@1.2.0/dist/definition.min.json
https://cdn.hopjs.net/npm/@dicebear/schema@1.2.0/dist/options.min.json
Contributing
See CONTRIBUTING.md for local development, testing, and the release process.
Sponsors
Advertisement: Many thanks to our sponsors who provide us with free or discounted products.