Wildcard Gallery V2 [Github]
What is this
This Automatic1111 extension primary adds a new extra networks gallery for wildcards along with preview thumbnails and other features for an enhanced wildcards management and user experience.
Installation
git clonethis repo to theextensionsfolder in your Web UI installation, or paste the its link to theextensions/Install form URLtab in WebUiif you have the old Wildcard Gallery V1 extention consider removing before installing the new one (this a whole rebase from V1 so a clean reinstall is remcommended)
make sure to backup a copy the folders
metadataandcardsif you already have those populated then copy them back to the new extension folder afterward
requirements
This extension extends on the wildcard functionality so it goes without saying that you already have the sd-dynamic-prompts extension in your WebUi ecosystem if not then you'll need to install the .
This extension was made with Gradio 3.x in mind things may break with higher versions
Settings
to limit indexation to specific wildcard branches you can add the parent activation path wildcard to the Whitelist (default behavior)
important!! you wont see any wildcard in the gallery unless you add its file name to whitelist in the webui settings and restart it
to exclude wildcards from indexation you can add their activation path to the Blacklist
you can toggle the Downscale preview images to resize and compress generated previews to take far less size on the disk
Wildcard Filter Tab
Overview
The Wildcard Filter Tab is the most notable addition in Version 2 of the Wildcard Gallery addon. Without the limitations of the previous Extra Network subtab, this tab introduces a wide range of powerful features, such as:
More advanced card filtering options
A cleaner, more resource-efficient viewer
Real-time preview channel switching
Card tagging support
Live card selection for operations (e.g., export, preview generation, tag editing)
Wildcard creation directly from within the WebUI
Tab Layout
The layout is intentionally simple and includes:
Filtering Options
Handles the creation and execution of filtering queries.
Cards Viewer
Displays filter results as cards, paginated (typically 25 per page).
Allows card selection for future operations
Enables card creation
Includes a Viewer Options subsection for tag visibility, preview cycling, and card grouping
Operations Sections
Contains actions for selected cards or the entire wildcard dictionary.
Terminology
Preview Channel: A named profile that contains a different set of preview images for the wildcard dictionary. Used to visualize how wildcards behave in various prompt scenarios.
Tag Group: A logical collection of tags that share display properties (e.g., color, masking behavior).
Wildcard Sequence: An ordered set of wildcards under a shared parent, executed in a chained manner. Designed for niche cases like prompt-based storytelling.
Filter Modes
Mode: wildcard
The simplest mode. Displays a searchable dropdown of all wildcards in the dictionary.
You can select one or multiple cards.
Optionally extend the filter to include all cards with the same parent as the selected one.
Mode: selector text
Uses selector-style input (e.g.,
__parentA/parentB/exampleCard__) to filter results.Wildcards can be targeted directly or via wildcard globbing:
__parentA/parentB/*__will show all cards underparentB.
Supports multiple comma-separated selectors (e.g.,
__x/y/*__, __z/card__).
Mode: tags
Filters cards based on custom user-defined tags.
Supports Inclusion Logic:
AND: All specified tags must be present in a card.OR: Any of the specified tags can be present.
Tags placed in the Excluded dropdown will be used to reject cards with those tags.
Mode: prompt search
The most specific and niche mode.
Filters based on the card’s internal prompt text.Supports Included and Excluded comma-separated terms (unordered).
Cards Viewer
This is where you'll interact with filtered results in the form of cards.
Uses pagination to ensure performance even with large datasets.
Selection mode defaults to Stacked, but can be changed to Single in the top-right corner of the viewer.
Viewer Options
Additional utilities can be accessed from the collapsed section above the card viewer:
Card Stacking Level
Groups cards based on their parent rank.E.g., setting stacking to 3 will group
parentA/parentB/parentC/Card1and.../Card2under a sharedparentC/*stack.Selecting a stack selects all cards within it.
Changing stacking level does not reset card selections.
Tag Masking
Allows hiding or decluttering tags on cards based on their tag group settings.Selected Preview Channel
Lets you cycle through different preview images per card based on the chosen channel.
Card Detail Panel
When you select a card, details and actions become available on the left-side panel.
Actions (available for single or multiple selections): 
Copy to Clipboard: Copies the wildcard activation text for manual prompt use.
Edit Card Tags:
Add/remove tags using the dropdown or by typing a new one.
"Add Tag" attaches the tag; "Remove Tag" detaches it.
Favorite: Adds cards to your favorites list.
Remove: Currently disabled until card editing is fully implemented.
Tags: Full list of card tags (ignores masking).
Card Path: The virtual path of the card in the dictionary.
Prompt: The raw prompt text embedded in the wildcard.
File: The physical location of the wildcard file.
Protected: Indicates whether the card is protected from editing (feature not yet implemented).
Channels: Lists which preview channels contain this card.
Operations Sections
Import Wildcard Pack: Imports a Wildcard Pack zip into the dictionary (including all of it metadata and perviews)
Export as Wildcard Pack: Export the selected cards (or all filtered results) as a valid Wildcard Pack
Tag Groups: Create new Tag Groups or edit existing ones by adding member tags and setting tag colors
Misc Actions
Rebuild Wildcard Dictionary: rescan for changes and builds an up to date wildcard dictionary (think of it as a refresh action)
Collect Redundant Thumbnails Files: round up all images that don’t correspond to any existing entry in the "USER_OUTPUT/STRAY_RESOURCES" folder.
Collect Thumbnails: collects copies of selected cards thumbnails from the active channel in "USER_OUTPUT" folder.
Nullify Thumbnails: Sets the thumbnails for selected cards thumbnails in the active channel so that they can be skipped with batch generating perviews.
Remove Thumbnails: Clears the thumbnails for selected cards thumbnails in the active channel.
Wildcard Preview Utils
This is a txt2img script used in conjunction with the Wildcard Filter Tab to automate preview generation and deployment for multiple wildcards within the dictionary. It also provides additional utilities depending on the selected script mode.
Disabled: Bypasses script logic and generates images normally.
Batch Prompting: Uses the selected (or filtered) wildcards from the Wildcard Filter Tab to generate images for each wildcard individually.
Setting Prompt Usage Mode to Combine Cards will instead generate a single image using all selected wildcards.
Sequence Generation: Generates all images for a sequence-type wildcard in the correct order.
Simply select any wildcard that belongs to the sequence — the entire sequence will be generated automatically.
Preview Generation: Generates and assigns preview images to the selected (or filtered) wildcards.
Make sure to switch to the channel where you want the resulting image(s) to be saved.
Enabling Override Existing Previews will force regeneration and replacement of previews for all selected wildcards, even if they already have a preview in the chosen channel.
Simplified Usage Steps:
Select the desired cards in the Wildcard Filter Tab.
Add the base positive and negative prompts for image generation.
Activate the Wildcard Preview Utils script, choose Preview Generation, and set the desired channel for output.
You can also check how many cards are included in the generation queue by clicking Count Selected Cards.
Click Generate and wait for the generation queue to finish.
Back in Wildcard Filter Tab, confirm that previews were assigned by switching to the correct channel.
(Sometimes you may need to deselect and reselect a card for the info to refresh.)
Description
FAQ
Comments (42)
I was literally just looking at this yesterday and was sad that it didn't function anymore. What a treat, thanks! This is the only decent way to keep wildcards organized in a way I want
EDIT: I don't understand at all how I'm supposed to whitelist wildcards inside of subfolders or why whitelist is the default and unchangeable way of doing this
EDIT: nvm it just doesn't work on forge
there is no tab wildcard filters
imma need more context then that, like any errors logged on console and what fork of webui ur using
navimixu I use forge, automatic f2.0.1v1.10.1-1.10.
sekimiri yee forge is an odd one it uses Gradio 4, while this addon was written with Gradio 3 in mind
sekimiri tho "it might" be the simple case of the wildcards directory not being automatically picked up , if that's the case u might have to specify it manually in the addon's settings section
navimixu tab i had was wildcard manager, but i downloaded the version from dualdragoon and now it works for me
sekimiri Speaking of I literally just fixed the search issue I was having a few days ago and uploaded it to my github fork.
Dualdragoon I tried installing your fork and still am not able to see the gallery extension. I'm also running forge. Though someone I know who had it all working beforehand isn't having any issues at all despite being on the same gradio version as me (3.41.2). Do I have to do something with your fork to get it to work? I installed the extension by using your git's URL
yla683 How old is the version of forge you're using? The whole reason I made the fork I did is that the existing version didn't work in forge after they updated to Gradio 4. If you're using a version that still uses Gradio 3 I'd recommend either trying to use the new official version of the extension or upgrading to a much newer version of forge for the overall code improvements.
Dualdragoon My forge version is "f1.0.0v2dev-v1.10.1RC-latest-2443-gd6f13b7d" which seems to be from a commit from last week? Unless this is incompatible with reForge?
yla683 I wasn't even aware that reForge was a thing until just now. I'm not really sure why my modifications would fail to work in Gradio 3 but according to another comment chain on here it seems like the new version of the official extension should work now since a new fix was applied.
Dualdragoon Seems like it won't even let me install the extension anymore. Simply keeps spitting out fatal: repository 'https://github.com/navimixu/wildcard-gallery/tree/main/' not found
yla683 Pretty sure it needs to be https://github.com/navimixu/wildcard-gallery.git
Unfortunately, I also can't get the v2 Wildcard Filters tab to show up in my UI. I am using the forge classic fork, which is built on Gradio 3. The only version of this extension that seems to work (i.e., show up) is Wildcard Gallery v1. Any help would be appreciated!
After a fresh install, I get these errors (and the extension doesn't show up at all in the UI):
*** Error loading script: extra_cards.py
Traceback (most recent call last):
File "C:\Users\Me\Pictures\sd-webui-forge-classic\webui\modules\scripts.py", line 536, in load_scripts
script_module = script_loading.load_module(scriptfile.path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Me\Pictures\sd-webui-forge-classic\webui\modules\script_loading.py", line 10, in load_module
module_spec.loader.exec_module(module)
File "<frozen importlib._bootstrap_external>", line 940, in exec_module
File "<frozen importlib._bootstrap>", line 241, in callwith_frames_removed
File "C:\Users\Me\Pictures\sd-webui-forge-classic\webui\extensions\sd-wildcard-gallery_v2\scripts\extra_cards.py", line 5, in <module>
from scripts.misc_utils import (
File "C:\Users\Me\Pictures\sd-webui-forge-classic\webui\extensions\sd-wildcard-gallery_v2\scripts\misc_utils.py", line 37, in <module>
WILDCARDS_FOLDER = fetch_wilcards_dir()
^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Me\Pictures\sd-webui-forge-classic\webui\extensions\sd-wildcard-gallery_v2\scripts\misc_utils.py", line 25, in fetch_wilcards_dir
setattr(shared.opts,"wcc_wildcards_directory",found_path)
File "C:\Users\Me\Pictures\sd-webui-forge-classic\webui\modules\options.py", line 109, in setattr
if info.do_not_save:
^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'do_not_save'
---
*** Error loading script: misc_utils.py
Traceback (most recent call last):
File "C:\Users\Me\Pictures\sd-webui-forge-classic\webui\modules\scripts.py", line 536, in load_scripts
script_module = script_loading.load_module(scriptfile.path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Me\Pictures\sd-webui-forge-classic\webui\modules\script_loading.py", line 10, in load_module
module_spec.loader.exec_module(module)
File "<frozen importlib._bootstrap_external>", line 940, in exec_module
File "<frozen importlib._bootstrap>", line 241, in callwith_frames_removed
File "C:\Users\Me\Pictures\sd-webui-forge-classic\webui\extensions\sd-wildcard-gallery_v2\scripts\misc_utils.py", line 37, in <module>
WILDCARDS_FOLDER = fetch_wilcards_dir()
^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Me\Pictures\sd-webui-forge-classic\webui\extensions\sd-wildcard-gallery_v2\scripts\misc_utils.py", line 25, in fetch_wilcards_dir
setattr(shared.opts,"wcc_wildcards_directory",found_path)
File "C:\Users\Me\Pictures\sd-webui-forge-classic\webui\modules\options.py", line 109, in setattr
if info.do_not_save:
^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'do_not_save'
---
*** Error loading script: preview_processing.py
Traceback (most recent call last):
File "C:\Users\Me\Pictures\sd-webui-forge-classic\webui\modules\scripts.py", line 536, in load_scripts
script_module = script_loading.load_module(scriptfile.path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Me\Pictures\sd-webui-forge-classic\webui\modules\script_loading.py", line 10, in load_module
module_spec.loader.exec_module(module)
File "<frozen importlib._bootstrap_external>", line 940, in exec_module
File "<frozen importlib._bootstrap>", line 241, in callwith_frames_removed
File "C:\Users\Me\Pictures\sd-webui-forge-classic\webui\extensions\sd-wildcard-gallery_v2\scripts\preview_processing.py", line 7, in <module>
from scripts.misc_utils import (
File "C:\Users\Me\Pictures\sd-webui-forge-classic\webui\extensions\sd-wildcard-gallery_v2\scripts\misc_utils.py", line 37, in <module>
WILDCARDS_FOLDER = fetch_wilcards_dir()
^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Me\Pictures\sd-webui-forge-classic\webui\extensions\sd-wildcard-gallery_v2\scripts\misc_utils.py", line 25, in fetch_wilcards_dir
setattr(shared.opts,"wcc_wildcards_directory",found_path)
File "C:\Users\Me\Pictures\sd-webui-forge-classic\webui\modules\options.py", line 109, in setattr
if info.do_not_save:
^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'do_not_save'
---
*** Error loading script: wg_filter_tab.py
Traceback (most recent call last):
File "C:\Users\Me\Pictures\sd-webui-forge-classic\webui\modules\scripts.py", line 536, in load_scripts
script_module = script_loading.load_module(scriptfile.path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Me\Pictures\sd-webui-forge-classic\webui\modules\script_loading.py", line 10, in load_module
module_spec.loader.exec_module(module)
File "<frozen importlib._bootstrap_external>", line 940, in exec_module
File "<frozen importlib._bootstrap>", line 241, in callwith_frames_removed
File "C:\Users\Me\Pictures\sd-webui-forge-classic\webui\extensions\sd-wildcard-gallery_v2\scripts\wg_filter_tab.py", line 3, in <module>
from scripts.misc_utils import ( load_tags, save_tags, save_tag_config, process_selector,WildcardEntry, TagConfig,update_wildcard_yaml,create_dir_and_file, unpack_wildcard_pack,
File "C:\Users\Me\Pictures\sd-webui-forge-classic\webui\extensions\sd-wildcard-gallery_v2\scripts\misc_utils.py", line 37, in <module>
WILDCARDS_FOLDER = fetch_wilcards_dir()
^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Me\Pictures\sd-webui-forge-classic\webui\extensions\sd-wildcard-gallery_v2\scripts\misc_utils.py", line 25, in fetch_wilcards_dir
setattr(shared.opts,"wcc_wildcards_directory",found_path)
File "C:\Users\Me\Pictures\sd-webui-forge-classic\webui\modules\options.py", line 109, in setattr
if info.do_not_save:
^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'do_not_save'
have u tried checking the wildcard directory setting in the extension's section on settings tab and see if the correct path was set ?
I have the same problem (I am using Reforge which use Gradio 3). The wildcard directory setting doesn't appear as well.
EDIT : Found a way to make it work by modifying those lines in misc_utils.py:
if os.path.isdir(found_path):
setattr(shared.opts, "wcc_wildcards_directory", found_path)
return found_path
else:
print("No wilcards directory was found, make sure you have the sd-dynamic-prompts extension installed, if you have a custom directory make sure to set it manually in the settings")
return None
To this :
if os.path.isdir(found_path):
if hasattr(shared.opts, "data_labels") and "wcc_wildcards_directory" in shared.opts.data_labels:
setattr(shared.opts, "wcc_wildcards_directory", found_path)
return found_path
else:
print("No wilcards directory was found, make sure you have the sd-dynamic-prompts extension installed, if you have a custom directory make sure to set it manually in the settings")
return None
DarkShadow_45 I've updated the github repository with a potential fix, can you confirm if it solves ur problem ?
DarkShadow_45 ye that also works xD
I tried your fix and it seems to work
navimixu Hi! I checked and the wildcard directory was correct. So I tried the fix you just added to the GitHub repo and it worked! Thanks for the fast response! 💙
astral_diva glad it did :D
navimixu Wait, I may have spoken too soon. 😅 The extension is showing up now, but I can't get any wildcards to show up. In the settings I put the folder where my wildcards are listed my wildcards, but it still says:
Nothing here... Add some contents to the following folder(s):
C:\Users\Me\Pictures\sd-webui-forge-classic\webui\extensions\sd-wildcard-gallery\cards
I have my cards in the sd-wildcard-gallery\cards folder and my wildcards txt files in the sd-dynamic-prompts\wildcards\ folder, and in the settings I added my wildcards folder, but it's not finding them. (The cards were preexisting from v1, which I just copied over to v2.)
Am I typing these in incorrectly?
https://ibb.co/hx93y0BN
astral_diva you need to put the names of yaml files containing the wildcards (no need for the path just the name of the file is enough) as the extension will go though every file in the wildcard directory any ways an avoids any file that aint in the whitelist
navimixu Oh, so it looks like it can only read yaml and not txt files. All my wildcards are txt, so I have to convert them all the yaml for the extension to see them?
to which folder for the new version should I move .yaml files from the previous version?
tbh, I don't like this update at all.
Why do I have to type out all single wildcards I already have (which are a lot) in the settings just for them to show up in the gallery? Previous versions did that automatically, so Imma stick with those for now
Update: I got the wildcards to show up, but they will not stay in their subfolders. It saves the cards again outside their folders, in the parent cards folder, and seems to ignore the thumbnails I already generated from v1.
Going back to v1 for now, I guess.
how to delete tags?
some of them or all ?
@navimixu some of them, or edit them
@kjw4ckuaxw790 select the card or cards, on the side nav click on the pen icon to edit , you type or select the tags u want and click add/ remove .
Sadly does not seem to work with last Stable Diffusion Forge Release.
The Tab between "txt to img" and "Settings" is missing.
yeah the newer releases moved too fast that I stopped updating for a while, I'll take a look once i update my own webui
@navimixu thank you very much - don't feel obliged. It's just I tried quiet long to get it running - i wanted to let others now that they do not waste their time. Sadly I am so much not of a programmer, I always have to look up what git clone and stuff means and how it's done ^^
not to stick my nose into other peoples business but the fix for me is just changing ='file' to ='filepath' in wildcard-gallery\scripts\wg_filter_tab.py
6hrs experimenting, here's solution for a couple of versions:
1.Put all your .yaml files to extensions\sd-dynamic-prompts\wildcards\wildcard_gallery\imported
for example: put XXX.yaml, XXX2.yaml, XXX3.yaml file to the above-mentioned folder.
2.Set all your yaml file to the whitelist, for example: Go to setting, select Wildcard Gallery, type the name of the .yaml to the whitelist, like:
2.XXX2
3.XXX3
This corresponds to the aforementioned 3.yaml files.
3.Go to Wildcard Filter, which is next to txt2image, select Misc Action, select Rebuild Wildcards Dictionary. After this action, you will see a text: Dictionay have been rebuilt with a total of [XXX] Entries.
4.Go to extensions\wildcard-gallery\cards, you will see all the .card files in folders.
5.Put the preview image corresponding to the file into the folder, like: XXX1.card and XXX1.png/XXX2.card and XXX2.png.
6.Restart, if images aren't show, then refresh the UI.
Hi there, I got a problem of deleting card. The button doesn't work. How to fix it?
its a placeholder button, that i ended up not implementing at the end.
@navimixu OK, thank you for the progress. Great mod.
















.jpg)
.jpg)



