Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

roleplay-gifs

A curated collection of high-quality anime roleplay GIFs, organized by action category and ready to use in bots, apps, or anything else.


Stats

Stat Value
Total categories 61
Total GIFs 682
Hosted on GitHub Raw CDN
Index file index.json

Direct URL pattern

https://raw.githubusercontent.com/itsfizys/roleplay-gifs/main/{category}/{n}.gif

Replace {category} with any category name and {n} with a number from 1 to the category's count.


index.json

The index.json file at the root of this repo contains all category names and their GIF counts. Fetch it once and use it to resolve valid ranges without hardcoding anything.

{
  "base_url": "https://raw.githubusercontent.com/itsfizys/roleplay-gifs/main",
  "total_categories": 61,
  "total_gifs": 682,
  "categories": {
    "hug": 17,
    "slap": 16,
    ...
  }
}

Usage examples

JavaScript

async function randomGif(category) {
  const index = await fetch(
    "https://raw.githubusercontent.com/itsfizys/roleplay-gifs/main/index.json"
  ).then((r) => r.json());

  const count = index.categories[category];
  if (!count) throw new Error(`Unknown category: ${category}`);

  const n = Math.floor(Math.random() * count) + 1;
  return `${index.base_url}/${category}/${n}.gif`;
}

// Example
const url = await randomGif("hug");
console.log(url);
// https://raw.githubusercontent.com/itsfizys/roleplay-gifs/main/hug/7.gif

Python

import httpx
import random

def random_gif(category: str) -> str:
    index = httpx.get(
        "https://raw.githubusercontent.com/itsfizys/roleplay-gifs/main/index.json"
    ).json()

    count = index["categories"].get(category)
    if not count:
        raise ValueError(f"Unknown category: {category}")

    n = random.randint(1, count)
    return f"{index['base_url']}/{category}/{n}.gif"

# Example
print(random_gif("pat"))
# https://raw.githubusercontent.com/itsfizys/roleplay-gifs/main/pat/3.gif

Fetching a specific GIF

If you already know the category and want a specific GIF, you can construct the URL directly:

https://raw.githubusercontent.com/itsfizys/roleplay-gifs/main/hug/1.gif
https://raw.githubusercontent.com/itsfizys/roleplay-gifs/main/slap/4.gif
https://raw.githubusercontent.com/itsfizys/roleplay-gifs/main/cry/11.gif

npm package

An npm wrapper is also available if you prefer installing via a package manager.

npm install gifcdn

npmjs.com/package/gifcdn

import { random, get, list, categories } from "gifcdn";

await random("hug");        // → full URL to a random hug GIF
await get("slap", 3);       // → .../slap/3.gif
await list("cry");          // → array of all 22 cry GIF URLs
await categories();         // → ["airkiss", "angrystare", ...]

The package ships with TypeScript types and zero dependencies — it's a thin wrapper around the same raw CDN URLs above.


Categories

All categories listed alphabetically with their GIF count, URL pattern, and a preview.

Category Count URL pattern Preview
airkiss 7 .../airkiss/{1..7}.gif airkiss
angrystare 18 .../angrystare/{1..18}.gif angrystare
bite 13 .../bite/{1..13}.gif bite
bleh 7 .../bleh/{1..7}.gif bleh
brofist 8 .../brofist/{1..8}.gif brofist
celebrate 7 .../celebrate/{1..7}.gif celebrate
cheers 6 .../cheers/{1..6}.gif cheers
clap 8 .../clap/{1..8}.gif clap
confused 8 .../confused/{1..8}.gif confused
cool 4 .../cool/{1..4}.gif cool
cry 22 .../cry/{1..22}.gif cry
cuddle 20 .../cuddle/{1..20}.gif cuddle
dance 18 .../dance/{1..18}.gif dance
drool 10 .../drool/{1..10}.gif drool
evillaugh 10 .../evillaugh/{1..10}.gif evillaugh
facepalm 5 .../facepalm/{1..5}.gif facepalm
handhold 10 .../handhold/{1..10}.gif handhold
happy 11 .../happy/{1..11}.gif happy
headbang 8 .../headbang/{1..8}.gif headbang
hug 17 .../hug/{1..17}.gif hug
kiss 21 .../kiss/{1..21}.gif kiss
laugh 16 .../laugh/{1..16}.gif laugh
lick 10 .../lick/{1..10}.gif lick
love 9 .../love/{1..9}.gif love
mad 20 .../mad/{1..20}.gif mad
nervous 13 .../nervous/{1..13}.gif nervous
nom 18 .../nom/{1..18}.gif nom
nuzzle 9 .../nuzzle/{1..9}.gif nuzzle
nyah 7 .../nyah/{1..7}.gif nyah
pat 18 .../pat/{1..18}.gif pat
peek 6 .../peek/{1..6}.gif peek
pinch 9 .../pinch/{1..9}.gif pinch
poke 14 .../poke/{1..14}.gif poke
pout 17 .../pout/{1..17}.gif pout
punch 12 .../punch/{1..12}.gif punch
sad 5 .../sad/{1..5}.gif sad
scared 17 .../scared/{1..17}.gif scared
shout 9 .../shout/{1..9}.gif shout
shrug 3 .../shrug/{1..3}.gif shrug
shy 13 .../shy/{1..13}.gif shy
sigh 8 .../sigh/{1..8}.gif sigh
sip 10 .../sip/{1..10}.gif sip
slap 16 .../slap/{1..16}.gif slap
sleep 18 .../sleep/{1..18}.gif sleep
slowclap 3 .../slowclap/{1..3}.gif slowclap
smack 16 .../smack/{1..16}.gif smack
smile 14 .../smile/{1..14}.gif smile
sneeze 4 .../sneeze/{1..4}.gif sneeze
sorry 4 .../sorry/{1..4}.gif sorry
stare 16 .../stare/{1..16}.gif stare
surprised 14 .../surprised/{1..14}.gif surprised
sweat 4 .../sweat/{1..4}.gif sweat
thumbsup 6 .../thumbsup/{1..6}.gif thumbsup
tickle 9 .../tickle/{1..9}.gif tickle
tired 12 .../tired/{1..12}.gif tired
wave 15 .../wave/{1..15}.gif wave
wink 18 .../wink/{1..18}.gif wink
woah 8 .../woah/{1..8}.gif woah
yawn 9 .../yawn/{1..9}.gif yawn
yay 7 .../yay/{1..7}.gif yay
yes 8 .../yes/{1..8}.gif yes

License

MIT © 2026 itsfizys

About

682 anime roleplay GIFs across 61 categories — served via GitHub Raw CDN

Topics

Resources

Contributing

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors