CharacterLibrary

CharacterLibrary
Loading your collection

Import Characters

Paste character URLs below (one per line):

Supports URLs from any registered provider. Characters will be imported as PNG files.

Download Remote Media

Scanning character for remote media...

Downloading media... 0/0

Bulk Media Localization

Preparing...

Scanning library...

Overall Progress 0/0 characters
Current Character 0/0 files
0 downloaded
0 skipped
0 errors

Bulk Localization Complete

Page 1 of 1

Character Duplicates

Scanning library for duplicates...

Potential Duplicate Found

Settings

General Settings

Search, sort, and display preferences

Search Defaults
Default Sort
Pin favorited characters to the top of the grid, sorted amongst themselves by the active sort.
Default Filter Preset
Loads a saved Advanced Filter preset on page load.
Duplicate Detection
35
Lower = more matches shown
Theme & Layout
Auto uses the mobile layout on small screens and touch-first devices (phones, tablets). Stored per device, not per account.
Adjust the overall UI zoom level
Adjust the size of modal dialogs. Extra Large is available only at the smallest UI Scale (80%).
Click to change
Glass uses translucent buttons, Solid uses opaque fills
Custom CSS
Add your own CSS to theme or tweak the UI. Persists across reloads. Use at your own risk: class names may change between versions.
Character Details
Display the provider tagline below metadata in the Details tab (ChubAI, CharacterTavern, etc.)
Render HTML formatting in taglines (sanitized). Use with care.
Uses sandboxed iframe to render with full CSS/HTML support. May cause issues with unusual formatting.
Automatically expand the creator's notes section when opening character details.
Gently snap to content sections (creator's notes, description, etc.) when scrolling character previews
In online browse previews, start every section collapsed except creator's notes. Click a section title to toggle it open.
Display Names
Use the provider's listing/page name instead of the card's internal name. Only affects linked characters with a known listing name.
Show the card/listing name toggle button in the character detail modal header
Card Grid & Browse
Hide card name and tags by default, reveal them with a slide-up animation on hover
Hide the playlist indicator icon on character cards
Desktop: arrow buttons on the sides of the modal. Mobile: swipe left/right on the modal header. Order follows current sort and filters.
Show a provider icon button next to the view tabs for quick provider switching in the Online view
Removes the back-arrow buttons in modal headers. Frees up header space so titles can breathe. Use the Android back button to close modals.
Shows a single icon-only Download / Import / Extract button mirroring the primary action's state (accent / warning / in-library). When disabled, all actions live behind a kebab popover instead.
Swipe right on a card to toggle favorite, swipe left to open the context menu. Disable to suppress accidental triggers.
Short vibrations on swipe actions, toggles, and destructive confirms. Requires device support.
Imports
When importing from URLs, treat links no provider recognizes as direct card-PNG downloads (catbox, Discord attachments, etc.).
Version History
Automatically save a snapshot of the character's current state before applying edits, card updates, or restores
0 = unlimited

Online Providers

Configure online character source connections and features

Provider Order & Defaults

Drag to reorder. First provider opens by default in the Online tab.

Infinite Scroll

Automatically load more characters as you scroll. When disabled, a manual "Load More" button is shown instead.

Possible Match Detection

Online cards that look like a character already in your library get a "Possible Match" badge whose brightness reflects confidence.

65
Lower = more flags (looser); higher = stricter. Each provider's "Hide possible matches" filter removes flagged cards from the grid entirely.
ChubAI
Authentication
Token location: DevTools → Application → Cookies → "__Secure-next-auth.session-token"
Update Source
Uses the Git repository's card.json instead of the metadata API. Slower and may fail for some characters. Lorebooks from linked projects always use V4 regardless.
Exclude Tags
Tags entered here are always excluded from ChubAI browse results.
Pygmalion
Login
Credentials are stored on your server and used to log in through it. Never sent to third parties.
Exclude Tags
Tags entered here are always excluded from Pygmalion browse results.
JannyAI
Exclude Tags
Tags entered here are always excluded from JannyAI browse results (filtered client-side).
JanitorAI Beta
Step 1: Browser
Required. JanitorAI is only reachable from a real browser, so this provider is built around one. Character Library can run and manage that browser for you, or drive one you host yourself. Nothing else here works until this does, including signing in.
A hidden browser starts on the machine running Character Library, the first time something actually needs it, and shuts itself down after 10 minutes idle. It needs a working GPU: Cloudflare does not let software-rendered browsers through, so this will not work on a headless server or a small single-board computer. Point an endpoint at a desktop for those.
Not started
Point this at any Chrome DevTools endpoint and Character Library drives it. Useful when Character Library runs somewhere without a GPU, since the built-in browser needs one. On an ordinary desktop, start Chrome with --remote-debugging-port=9222 and paste that endpoint here.
It does two jobs. Cloudflare: janitorai.com challenges everything that is not a real browser, and passing it earns a cf_clearance cookie that only a browser can hold, so no server-side request ever gets through on its own. Hidden definitions: around half of all characters withhold theirs (the field is simply absent from the API) and the only way to see one is to let JanitorAI build a chat prompt and read it back.
Use a throwaway JanitorAI account. Recovering a definition briefly points that account's API settings at a dummy preset and opens a chat, then puts everything back. It is tidy, but it is still your live account.
Step 2: Account Login
Also required. The browser gets you to JanitorAI; an account gets you the content. Without one you see the first page of results and nothing else: no follows, and no character extraction, which is the only way to recover a hidden definition. Sign in here rather than on the site, since the login runs through the browser above. The session refreshes itself, so you should rarely repeat this, though signing in to JanitorAI elsewhere can end it. Your email, password and session are saved server-side against your account, not just in this browser.
Not logged in
Use this if you sign in to JanitorAI with Google, Discord, X or Apple (those accounts have no password to give here), or if the sign-in above keeps failing. Log in at janitorai.com, open DevTools (F12) → Application → Cookies → janitorai.com, and copy the value of the sb-auth-auth-token cookie. If you see sb-auth-auth-token.0 and .1 instead of one cookie, paste their values joined in order. The session refreshes itself afterwards, the same as signing in above.
Update Checks
Runs the browser extraction for hidden-definition characters before comparing, so definition edits show up in update checks instead of being skipped as unreadable. Much slower per character, and needs the browser plus a signed-in JanitorAI account.
Exclude Tags
Tags entered here are always excluded from JanitorAI browse results. Tags that match JanitorAI's own tag list are excluded by the server; anything else (custom tags) is filtered locally.
DataCat Migration
Re-links DataCat-linked characters to JanitorAI directly. DataCat aggregated JanitorAI cards, so most carry their original JanitorAI identity; migrating moves update checks, previews and stats to the source.
CharacterTavern
Session Cookies
Paste your session cookie from DevTools → Application → Cookies. Expires after ~10 days. Required for NSFW content visibility.
Refreshes your CharacterTavern session on startup so it doesn't lapse between visits. Each use already slides the session 10 days forward; with this off, it only refreshes when you open the CharacterTavern browse view.
Exclude Tags
Tags entered here are always excluded from CharacterTavern browse results.
Wyvern
Login
Credentials are stored locally and used to authenticate via Firebase. Never sent to third parties.
Exclude Tags
Tags entered here are always excluded from Wyvern browse results.
DataCat Beta
Session
Checking...
Anonymous session token. Persists across sessions. Used for browsing public characters.
Extraction
When enabled, extracted characters appear on the public DataCat feed and are accessible via URL. Disable to keep extractions private (API-only access).
Force DataCat to re-extract character data from JanitorAI before checking for updates. Slower, but ensures comparisons use fresh data instead of a stale cache.
Hampter sorts need the companion userscript. Latest, Trending, Trending 24h, Popular and Relevance are served by JanitorAI behind Cloudflare, and the userscript (install it with Tampermonkey or Violentmonkey) is what reaches them: it borrows the Cloudflare pass from the browser you are reading this in. Every other DataCat sort works without it. More in Help & Tips.
JanitorAI Login (Hampter pagination)
Optional, and separate from the JanitorAI provider's own login. JanitorAI serves only the first page of the Hampter sorts without an account. Paste your session cookie to page through more; the session then refreshes itself (no repeated pasting). To get it: log in at janitorai.com, open DevTools (F12) → Application → Cookies → janitorai.com, and copy the value of the sb-auth-auth-token cookie. Stored locally in your browser. Tip: paste from a browser you are not actively browsing JanitorAI in, so the two sessions do not rotate each other out.
Not logged in
Exclude Tags
Card Maintenance
Cards imported before mid-July 2026 carry DataCat's downsized 640px card image. This scans your DataCat-linked characters, shows the current and original avatars side by side, and replaces only the ones you approve. Card data is never modified, only the image.
Saucepan Beta
Account
Optional for browsing; required for native extraction. Log in (or paste a Bearer token) to pull open-definition Saucepan characters directly from saucepan.ai.
Exclude Tags
Botbooru
Login
Downloads
Feeds the download counters on the site when you import a card. Disable to import silently.
Content
Only applies while the NSFW toggle is on. Sets the matching account-side switch on your Botbooru account.
Favorite Tags
Account-side switch. Replaces the simple favorite-tags boost with per-tag weights (-1000 to 1000) plus always-follow / always-block flags, and unlocks extra Curated orderings in browse. While on, the site ignores the simple list below.
Favorite tags boost matching cards in the Curated sort. Stored on your Botbooru account (login required); also manageable via the star icons in the browse Tags dropdown.
Exclude Tags
Tags entered here are always excluded from Botbooru browse results. Your Botbooru account's own site blacklist also applies automatically while logged in.
Card Updates
Check all provider-linked characters for differences against the remote version. You can review each change and selectively apply updates.

Media Localization

Download and manage embedded media

URL Replacement
Auto-replace embedded remote media with local gallery files. Files must be downloaded first.
Bulk Operations
Scan and download remote media for ALL characters. Previously processed are skipped.
Reset the processed list so bulk localize scans everyone again.
Options
Also download gallery images from linked providers that support galleries.
Scan lorebook entries for embedded media URLs. Some cards have thousands of images in their lorebooks.
Detect and download images from external gallery pages linked in character card text: Catbox, CivitAI, Dropbox, Google Drive, ImgBB, Imgbox, Imgchest, MEGA, Pixiv and PostImg. Some need credentials in Settings > Media.
Rename files to their correct prefix format when duplicates are detected.
Skip already-localized files by matching filenames instead of downloading and hashing. Much faster for re-runs, and your local copies stay as saved even if the remote images change. Enable the size check below to catch corrupted or truncated files.
What happens to a card's gallery / embedded media after import. Background runs quietly in a queue you track from the notifications bell (survives reloads); Ask shows a prompt; Do nothing skips it.
Civitai API Key
Required to extract images from private or hidden Civitai posts. Public content works without a key. Stored per user on your server and pushed to the provider service when you save it. Generate one at civitai.com/user/account.
Pixiv Login
Required only for R-18 artworks; public artworks extract without a login. R-18 works also need "View R-18 works" turned ON in your Pixiv account settings, or their images come back empty. Log in at pixiv.net, then copy the PHPSESSID cookie value from DevTools (Application → Cookies → pixiv.net). Stored persistently and pushed to the provider service. Requires the provider service.

Account

Your session on this server

Signed In
...

Info

Project information and links

Version Info
Character Library (version unavailable)
Repository
View on GitHub If you find Character Library useful, consider starring the repo

AI Profiles

LLM endpoints for the AI features. Keys stay on the server and are never sent back to the browser.

Profiles

Chat

Who you are in a conversation, and how much history the model sees.

Prompt presets
Presets live in the Prompt Manager, inside a conversation: open a chat and use the sliders button in its header. Everything is there, including creating, renaming, importing and exporting, next to the messages the preset actually produces.
Personas
A persona is your side of the chat: the name and description the character sees. The active one supplies {{user}} and {{persona}} when a prompt is built.
Generation
Used only when no persona is active and the chat carries no name of its own.
How many recent messages go into the prompt. Higher costs more tokens per turn.
Oldest messages are dropped until the prompt fits. The character, its lore and its examples are never trimmed, so if those alone exceed the budget you get a clear error instead of a failed request. Leave at 0 to send everything and let the provider decide.
Held back from the budget so the model has room to answer.
Reading
68
How many characters a line of a message may reach before it wraps, independent of how wide the chat window is. Around 68 is where a long reply stays easiest to read; drag to the far right for Fill width if you would rather use the whole window.

Developer Options

Debugging and troubleshooting tools

Logging
Output detailed info to browser console (DevTools → Console)
Show a button in Appearance settings to open the live token customizer
Character Inspection
Displays card metadata, file paths, and internal mappings for debugging
Export
Copy provider URLs to clipboard instead of downloading PNGs. Unlinked characters are skipped. Useful for sharing or reimporting in another session.