Make your own Snuggling

A pet is a .zip with a pet.json manifest, a gallery thumbnail and PNG sprite strips. Upload it from My pets, preview every state, then send it for review.

Download the example (Lil Cub) Upload a pet

What's in the zip

my-pet.zip
โ”œโ”€โ”€ pet.json
โ”œโ”€โ”€ preview.png              square thumbnail, 64-512 px
โ””โ”€โ”€ sprites/
    โ”œโ”€โ”€ baby_idle.png        <form>_<animation>.png
    โ”œโ”€โ”€ baby_bottle.png
    โ”œโ”€โ”€ balanced_idle.png
    โ””โ”€โ”€ โ€ฆ

Each sprite is one horizontal strip: width = frames ร— frame width, height = frame height. Zip limit is 10 MB, PNG only. A single top-level folder inside the zip is fine.

pet.json

{
  "formatVersion": 1,
  "id": "lil-cub",                       // lowercase, numbers, dashes
  "name": "Lil Cub",
  "author": "your name",
  "description": "A tiny lion cub with a big heart.",
  "species": "lion cub",
  "pixelArt": true,                      // crisp scaling (false for painted art)
  "voice": "en_US-amy-low",              // optional storytime voice
  "frameSize": { "w": 48, "h": 48 },     // 16-256 px
  "stats": {                             // optional: tune how needy the pet is
    "tummy":  { "label": "Tummy",  "drainMinutes": 45 },
    "sleepy": { "label": "Sleepy", "drainMinutes": 90 },
    "fun":    { "label": "Fun",    "drainMinutes": 40 },
    "comfy":  { "label": "Comfy",  "drainMinutes": 35 },
    "fresh":  { "label": "Fresh", "mode": "event", "style": "diaper" }   // diaper | potty | none
  },
  "animations": {
    "idle":   { "frames": 4, "fps": 4, "loop": true },
    "bottle": { "frames": 6, "fps": 6 },
    โ€ฆ
  },
  "forms": {
    "baby":     { "label": "Baby" },
    "balanced": { "label": "Balanced" },
    "snuggly":  { "label": "Snuggly" },
    "bouncy":   { "label": "Bouncy" },
    "sleepy":   { "label": "Sleepy" }
  }
}

Comments above are for explanation; real JSON can't contain them.

Forms

Every pet starts as baby. Every 6 stream-hours (streamers can change this) it shifts toward the form that matches how chat cared for it:

  • snuggly: mostly cuddles, paci and headpats
  • bouncy: mostly play, bubbles and coloring
  • sleepy: mostly naps and lullabies
  • balanced: needs met evenly

baby and balanced are required. Missing forms fall back to balanced.

Animations

Required in every form:
idle happy bottle play paci sleep needs_change change fussy crying tantrum cuddle

Optional (falls back when missing):

snackโ†’ bottle
bathโ†’ change
bubblesโ†’ play
coloringโ†’ play
storytimeโ†’ cuddle
lullabyโ†’ sleep
celebrateโ†’ happy
visitorsโ†’ happy
missed_youโ†’ happy
evolveโ†’ happy
no_thanksโ†’ idle

If you list an optional animation in pet.json, every form you include needs a strip for it.

Content policy

Snugglings show up on public Twitch streams, so every pet must be completely SFW.

  • No sexual or suggestive content, fetish framing, nudity or adult references, in the art, names or descriptions.
  • No real people's likeness without their permission, and no copyrighted or trademarked characters.
  • Cute, cozy and kind. Fussy and crying states should read like a sad baby animal, nothing upsetting.

Every custom pet is reviewed before it can be used on stream, and so is every new version. Pets that break the policy are removed and the uploader can be suspended. Streamers are responsible for following Twitch's guidelines and labeling their streams appropriately; the diaper / potty mechanic is off unless a streamer turns it on.