A web-based application for organizing and managing thousands of AI Lora and Checkpoint models with their associated metadata, thumbnails, and Civitai information.
The AI Lora Model Manager is a powerful tool designed to help you organize, search, and manage large collections of Lora and Checkpoint models. It provides an intuitive interface for viewing model metadata, editing information, and syncing with Civitai.
Go from this to this in seconds.
See the full changelog at CHANGELOG.md
- Grid View: Visual card-based layout with thumbnails
- Table View: Detailed spreadsheet-style view with sortable columns
- Grouped View: Organize models by category, folder, or base model
- Folder Tree & List View Sidebar: Sidebar layout allowing toggleable Tree or List representations of directories. The sidebar's visibility and current view mode are persisted in your browser's local storage.
- Full-text search across all model metadata (including tags)
- Multi-select base model filtering to filter by multiple base models simultaneously
- Filter by category, tags, creator
- Safe Mode toggle for NSFW content filtering
- Sort by name, date, size, or any column
Manage both LoRA and Checkpoint models from separate directories:
- LoRAs Tab: Browse and manage LoRA models
- Checkpoints Tab: Browse and manage Checkpoint models
- Each location has its own configuration and folder structure
- Switch between locations with tab buttons in the header
- Multiple preview images with carousel navigation
- Drag-and-drop thumbnail upload for custom previews
- Editable metadata including:
- Model Name (separate from filename)
- Filename (renames all associated files)
- Model Version and High/Low variant toggle
- Tags, Category, Subcategory
- NSFW toggle for content rating
- Preferred weight slider (-4 to +4 range with color gradient)
- Built-in JSON editor for powerful metadata management
- File information split into File Info (with SHA256 display) and File Data panels
- SHA256 Hash Generation: Instantly compute the SHA256 checksum of model files
- Model Deletion: Safely delete the model file and all associated files (metadata JSON, preview images) directly from the details view
Powerful buttons to help format and manage filenames:
- Model Name: Copy model name to filename field
- Recommended: Build filename from model name, type, version, and creator
- Civitai Name: Auto-populate filename from Civitai metadata
- Clean: Format filename with proper capitalization and spacing
- Trim Name: Remove base model and version suffixes from model name
- Creator Suffix: Append " - [creator name]" to filename
- High/Low: Swap High/Low variants for WAN 2.2 models
- Append Prefix: Add base model prefix ([P], [X], [I], [Z])
- Append Suffix: Add WAN Video model suffixes
Dedicated Civitai Scan page with powerful tools:
- Get Civitai Data: Fetch model info using SHA256 hash lookup (creates JSON directly)
- All-In-One Scan: Automate matching, metadata JSON creation, and thumbnail downloads in a single click
- Manual URL Matching: Enter Civitai URL when hash matching fails
- Download Thumbnails: Download preview images from Civitai
- Fix Thumbnail Names: Standardize thumbnail filenames
- Dummy JSON Files: Create marker files for unmatched models
Action buttons in the model popup for single-model operations:
- Get Civitai Data for current model
- Download Thumbnail
- Fix Thumbnail Name
- Generate SHA256 Hash for model integrity and duplicate scanning
- Delete Model to clean up the model and its associated metadata/previews
Perform batch operations on multiple models at once:
- Click the Bulk button in the header to enter selection mode
- Click on model cards to select/deselect them
- Use the action buttons to perform operations:
- Move: Move all selected models to a different folder
- Edit: Update Category, Subcategory, Version, High/Low for all
- Rename: Preview and apply recommended filenames
- Click Cancel to exit bulk mode
Customize what information appears on model cards in grid view via Settings → Grid Card:
-
Image Display:
- Carousel: Show navigation arrows to cycle through preview images
- Single: Show only the first preview image (faster loading)
-
Title: Choose what to display as the card title:
- File Name: Shows the model filename
- Model Name: Shows the display name from JSON metadata
-
Subtitle 1, 2, 3: Configure up to three data fields to show below the title:
- None, File Name, Model Name, Folder, Category, Subcategory
- Base Model, Model Version, High/Low, Trigger Words, Creator, Tags
- Fields are joined with " | " and empty fields are automatically hidden
Example Configurations:
- Classic:
Folder | Base Model(default) - Detailed:
Category | Base Model | Creator - Minimal:
Base Modelonly (set others to None)
- View mode: Textareas shrink to fit content (max 20 lines with scrollbar)
- Edit mode: Textareas expand to show all content with auto-resize
Organize and clean up folder navigation when moving models by mapping Base Model Types to specific root directories:
- Set Roots in Settings: Map any base model (e.g.
Qwen) to a target root folder (e.g.,Comfy/QWEN) under the Model Type Roots settings tab. - Smart Path Auto-complete: Configured via a drop-down combo-box that fetches valid, actual relative folders from both your LoRA and Checkpoint directories.
- Dynamic Move Filtering: When moving a model, the target location dropdown filters automatically to only show the configured root folder and its subdirectories.
- Bulk Operations Integration: Filters the destination folder list in bulk move operations if all selected models share the same base model.
- Python 3.8 or higher
- Modern web browser (Chrome, Firefox, Edge)
- Windows operating system
-
Clone or download the repository to your local machine
-
Install Python dependencies:
pip install -r requirements.txt
-
Configure your models directories:
- Launch the application (see "Running the Application")
- Click the Settings gear icon
- Set your Lora models directory path
- Set your Checkpoints directory path
- Configure your preferred view and sort options
-
Start the server:
python manager.py
-
Open your browser and navigate to:
http://localhost:8000 -
Set your models directories in Settings if this is your first time
Each model consists of:
model_name.safetensors # The model file
model_name.json # Metadata (including Civitai data)
model_name.preview.png # Primary thumbnail
model_name.preview2.png # Additional previews (optional)
model_name.preview3.png # Additional previews (optional)
model_name.preview4.png # Additional previews (optional)
The model_name.json file contains metadata in the following structure:
{
"activation text": "trigger_word",
"base model": "SDXL 1.0",
"category": "Style",
"subcategory": "Anime",
"description": "Model description",
"example prompt 1": "Example prompt text",
"example prompt 2": "Additional example",
"high low": "High",
"model name": "Display Name",
"model version": "v1.0",
"negative text": "negative, keywords",
"nsfw": "false",
"notes": "Personal notes about the model",
"preferred weight": "0.8",
"tags": "tag1, tag2, tag3",
"web_civitai_data": {
"civitai name": "Official Model Name",
"civitai text": "official, trigger, words",
"creator": "Artist Name",
"url": "https://civitai.com/models/...",
"model_id": "123456",
"file_id": "7890",
"published_date": "2024-03-19T00:00:00Z"
}
}Settings are stored in config.json and include:
- modelsDirectory: Path to your Lora models folder
- checkpointsDirectory: Path to your Checkpoints folder
- theme: "dark" or "light"
- defaultView: "grid" or "table"
- defaultSort: Sorting preference
- hideNSFW: Safe Mode toggle
- visibleColumns: Which columns to show in table view
- Navigate to Civitai Scan page (button in header)
- Select LoRAs or Checkpoints tab
- Click "Scan & Fetch Missing" to fetch metadata directly into JSON
- For unmatched models: enter Civitai URL manually or create dummy JSON
- Click "Download Preview Images" to get thumbnails
- Click "Fix Thumbnail Names" to standardize filenames (optional)
- Smart delays (0.5s default) respect Civitai API limits
- Configurable delay between 0-5 seconds
- Only delays when API calls are needed
Copies the display name from Model Name field to filename.
Builds a standardized filename from:
- Model Name
- Model Version (if set)
- High/Low variant (if set)
- Base model type
Formats filenames with:
- Underscores replaced with spaces
- Proper capitalization
- Clean spacing around dashes
- Removal of extra spaces
Example: my_model_name-v2 → My Model Name - V2
Removes base model identifiers and version suffixes from the model name.
Example: MyModel SDXL v1.5 → MyModel
Appends the creator name as a suffix.
Example: MyModel → MyModel - ArtistName
Swaps "High" and "Low" in filenames for WAN 2.2 model pairs.
Example: MyModel_High_v1 → MyModel_Low_v1
Adds base model prefix to filename:
- Pony →
[P] - SDXL 1.0 →
[X] - Illustrious →
[I] - ZImageTurbo →
[Z]
Example: MyModel_v1 → [P] MyModel_v1
Adds WAN Video model suffix to filename:
- Wan Video 2.2 I2V-A14B →
- High I2v - Wan22 14b - Wan Video 2.2 T2V-A14B →
- High T2v - Wan22 14b - Other WAN variants supported
Configure custom "Recommended" filename formats per Base Model type in Settings → Filename Formatting.
Each rule consists of:
- Base Model: Which model type the rule applies to (e.g., "Pony", "SDXL 1.0", "Illustrious")
- Format String: Template using variables to build the filename
| Variable | Description | Example |
|---|---|---|
{modelname} |
Display name from Model Name field | My Character |
{version} |
Model Version field | 2 |
{highlow} |
High/Low toggle value | High |
{category} |
Category field | Character |
{subcategory} |
Subcategory field | Anime |
- Default:
{modelname} {version}→My Character 2 - With High/Low:
{modelname} {highlow} {version}→My Character High 2 - With Category:
{category} - {modelname}→Character - My Character
- When you click Recommended on a model, the app finds a matching format rule by Base Model
- If no specific rule exists, it falls back to the Default rule
- Variables are replaced with actual values; empty values are omitted
- Extra spaces are automatically cleaned up
- The Default rule cannot be deleted (ensures fallback always exists)
- When adding a new rule, a dropdown shows detected Base Models that don't yet have rules
- Click the delete button to remove a rule (disabled for Default)
- Organize before you start: Set up your folder structure first
- Use Civitai Scan: Automatically fetch metadata for all models
- Standardize filenames: Use the filename helper tools for consistency
- Use categories: Organize models with categories and subcategories
- Tag everything: Good tags make searching much easier
- Regular backups: Back up your .json files regularly
- Use Model Name field: Keep display name separate from filename
- Escape: Close open modals
- Left/Right Arrows: Navigate between models in popup
- Ctrl+F5: Hard refresh (useful after updates)
- Check that your models directory path is correct in Settings
- Ensure the directory contains .safetensors files
- Try clicking the Refresh button
- Check your internet connection
- Increase the delay between requests in scan options
- Some models may not exist on Civitai
- Use manual URL matching for unmatched models
- Make sure you click the Save button after editing
- Check the browser console (F12) for errors
- Verify file write permissions in your models directory
- Frontend: HTML, CSS, JavaScript (Vanilla)
- Backend: Python HTTP Server
- Styling: Custom CSS with CSS variables
- Icons: Font Awesome 6
App1/
├── manager.py # Python backend server
├── config.json # Application configuration
├── changelog.txt # Version history
├── pages/
│ ├── index.html # Main application page
│ └── civitai-scan.html # Civitai scan tools
├── css/
│ ├── styles.css # Global styles
│ ├── modal.css # Modal styling
│ ├── model-modal.css # Model popup styling
│ ├── grid-view.css # Grid view styling
│ ├── table-view.css # Table view styling
│ ├── toast.css # Toast notifications
│ └── civitai-scan.css # Scan page styling
├── scripts/
│ ├── app.js # Main application logic
│ ├── settings.js # Settings management
│ ├── grid-view.js # Grid view rendering
│ ├── table-view.js # Table view rendering
│ ├── grid-group-view.js # Grouped view rendering
│ ├── bulk-operations.js # Bulk edit mode operations
│ ├── search-parser.js # Search functionality
│ ├── civitai-scan.js # Scan page logic
│ ├── civitai-api.js # Civitai API functions
│ ├── civitai_handler.py # Civitai API integration
│ ├── toast.js # Toast notification system
│ └── zCivitai-2-JSONv4.py # JSON conversion
└── assets/
└── placeholder.png # Default thumbnail
See the full changelog at CHANGELOG.md
This project is provided as-is for personal use. Please respect Civitai's API terms of service when using the scanning features.
This is a personal project, but suggestions and bug reports are welcome.
- Civitai for providing the model metadata API
- Font Awesome for icons
- The AI community for inspiration



