High-res animated C.AI avatars

Make Character.AI avatars load in their full resolution (400px) and quality (100%), and let them be animated when they should be. I also try to manually find sources of characters' images that are recommended to me by CAI, WARNING: There is some (mostly furry) NSFW content. Great moderation going there, CAI. Original script: https://greatest.deepsurf.us/en/scripts/482793-always-hi-res-c-ai-avatars/code

Από την 17/08/2025. Δείτε την τελευταία έκδοση.

Δημιουργός
Atemo-C
Βαθμολογίες
0 0 0
Έκδοση
17-08-2025.63
Δημιουργήθηκε την
17/08/2025
Ενημερώθηκε την
17/08/2025
Μέγεθος
90 KB
Άδεια
Zero-Clause BSD
Εφαρμόζεται σε

An updated version of https://greatest.deepsurf.us/en/scripts/482793-always-hi-res-c-ai-avatars/code. It:

  • Loads profile pictures in their highest-available resolution (400×400px)
  • Loads profile pictures in their highest-available quality (100%)
  • Removes the limitation on animated profile pictures, allowing them to be animated again

Additionally, it manually fetches original profile pictures of characters I have come across in my recommendations. This part is network-intensive, can contain NSFW content (who would have guessed that some Character creators bait others with cropped NSFW? …), and most likely not desired by a lot of users. If you do not want that, and only want to load the profile pictures in their highest resolution and quality, you can simply remove that part, so, basically, using only this:

// ==UserScript==
// @name        High-res animated C.AI avatars
// @namespace   none
// @version     17-08-2025.63
// @description Make Character.AI avatars load in their full resolution (400px) and quality (100%), and let them be animated when they should be. Original script: https://greatest.deepsurf.us/en/scripts/482793-always-hi-res-c-ai-avatars/code
// @author      Atemo Cajaku, logan.uswp
// @match       https://*character.ai/*
// @icon        https://yt3.ggpht.com/515uN-5u5m3gyl5FJZjlNKekL6nYw6Pdu-9kvtvaxtzsVGNFSNinjszJXWKTaa3dIqmxIjtYGw=s256
// @run-at      document-idle
// @license     Zero-Clause BSD
// @grant       none
// ==/UserScript==

(function() {
    'use strict';

    const observer = new MutationObserver(mList => {
        mList.forEach(m => {
            const avatar = m.target.querySelectorAll("img[src^=\"https://characterai.io\"]");
            avatar.forEach(i => {
                i.src = i.src.replace(
                    "i/80", "i/400").replace(
                    "i/200", "i/400").replace(
                    "?webp=true&anim=0", "").replace(
                    "?anim=0", ""
                );
            });
        });
    });

    observer.observe(document.body, {attributes: false, childList: true, characterData: false, subtree: true});

})();