🏷️ TagComplete Neo

Tag autocompletion for Forge Neo — suggests Danbooru/e621 tags, LoRA/embedding names, wildcards, and chants as you type, with automatic trigger word injection and CivitAI lookup support.
Fork of a1111-sd-webui-tagcomplete by DominikDoom, maintained here exclusively for Forge Neo. If you are not running Forge Neo, use the original extension instead.
🎯 Features
⭐ = added or fixed in this Neo fork · everything else is original work by DominikDoom
🏷️ Tag Autocompletion
Instant suggestions as you type, sourced from Danbooru, e621, or merged lists
Keyboard navigation — arrow keys, Tab, Enter, Escape, all configurable
Tag color coding by category, with post count for relevance
Alias and translation search — find tags by their alternate names or translated terms
Frequency sorting — remembers your most-used tags and promotes them to the top ⭐
➕ Extra Networks
LoRA and LyCORIS autocomplete triggered by
<Embedding autocomplete triggered by
<e:Thumbnail preview in the completion popup
Correct alias insertion — uses the same identifier Forge Neo expects (
ss_output_nameor filename, respecting your Extra Networks setting) so tokens never blink ⭐Trigger word injection on LoRA selection — inserts activation keywords automatically
Fetches from CivitAI if not set locally ⭐
Cached by SHA256 — only re-fetched when the model file changes ⭐
Configurable position: Start of prompt, End of prompt, Before or After the LoRA token ⭐
✳️ Wildcards
Wildcard file autocomplete triggered by
__Nested folder support
YAML wildcard format (UMI-compatible)
🪄 Chants
Prompt preset completion for longer phrase templates stored in JSON files
Triggered by
<c:or<chant:
📦 Installation
Open Forge Neo WebUI
Go to Extensions → Install from URL
Paste:
https://github.com/eduardoabreu81/sd-webui-tagcomplete-neoClick Install and reload the WebUI
⚠️ This extension requires Forge Neo. It will not work on Automatic1111 or Forge Classic.
🗂️ Tag Lists
FileSourceBest fordanbooru.csvDanbooru top-100kAnime models (SD 1.5, SDXL)e621.csve621 top-100kFurry / anthro modelsdanbooru_e621_merged.csvMerged + unified categoriesPony, NoobAI, Illustriousextra-quality-tags.csvCurated setQuality booster tagsEnglishDictionary.csvEnglish dictionaryPhotorealistic / non-booru models
To switch lists, change Tag filename in Settings → Tag Autocomplete.
Description
🆕 What's New
v0.1.2 — Bug fix batch
Embedding manual refresh no longer crashes — the
force_reloadkwarg was removed from Forge Neo; the refresh button now works cleanlyLoRAs always visible on startup — the previous alias update inadvertently caused LoRAs to disappear until a model was loaded; filesystem scan is now always used as the primary source
Symlinked embeddings supported — paths are fully resolved before comparison, so embeddings linked from outside the
models/embeddings/folder no longer crash the callbackFrequency database stability — fixed a potential
NameErroron first run when the SQLite connection itself could not be established
v0.1.1 — LoRA alias fix
LoRA/LyCORIS token no longer blinks — the inserted
<lora:…>token now uses the same identifier that Forge Neo expects (respects your "When adding to prompt, refer to LoRA by" setting: Alias from file or Filename) ⭐
v0.1.0 — Forge Neo Baseline
Full Forge Neo compatibility — extension loads and runs correctly on Forge Neo without crashes or silent failures
Booru tags restored — tag suggestions now appear correctly in the prompt box
Reliable initialization — autocomplete activates on every WebUI launch, including the second and beyond
Instant embedding reload — embeddings update without restarting the WebUI
Trigger word auto-fetch from CivitAI — if a LoRA has no local trigger words set, the extension can look them up automatically from CivitAI ⭐
Trigger word cache by file hash — fetched words are saved alongside the model and only re-fetched when the file itself changes ⭐
"After LoRA/LyCO" insertion position — new option to place trigger words immediately after the
<lora:…>token instead of only at the start or end of the prompt ⭐
FAQ
Comments (11)
Been using it for a while now and it works well, but as soon as I use the webui on my phone it starts to lag hard whenever I type in the prompt box. I took a look at the performance with dev tools on pc and it tagcomplete has big delays when throttled with at least x4. Can you take a look at it?
I've worked on this, it seems better - but I'll do a few more tests before publishing it. I'll keep you posted about it
v0.2.0 is on! please let me know what do you think!
@dhunters Wow, that was quick :D It works a LOT better now but deleting text still has the biggest impact on performance. Definitely much smoother in all aspects though for sure. I'm not sure if it's my phone that's just weak but it's an S20+. Quite old nowadays. It's still laggy but not nearly as laggy as before. It's really usable now. Typing is just a little delayed, feels like 50ms delay while typing, which is miles better than before. Deleting text I'd say has a bit more delay, but when holding down the backspace, it lags a lot while it gets a a bit unpredictable how much it's deleting, so single tapping backspace is working well but holding down is problematic.
All in all it's amazing how much better it is. Thank you for your efforts :D
I don't know if it's possible, but is there a way to change the settings so the autocomplete detects words that without underscores ? I mean like when typing "walking towards" that it detects it as "walking_towards" which then also recommends "walking towards viewer" for example. It really gets annoying having to change text all the time because of this. If it doesn't work already, if you don't mind and if it doesn't take much time, could you take a look at this? If yes, I'd say it would be nice to have a toggle for it next to the indicator (green dot). Not sure if the toggle would create lag though. If it does crate lag, then a simple setting in the extension settings is also fine.
Btw, you should make posts about your works on reddit. I'm sure there are people who are looking for your stuff but don't know they exist
@dhunters Also I noticed when using wildcards, normally you can click on them once to autofill from existing wildcards and then it shows all the content of the wildcard and then you can click again to instead paste the content of ot. The part where it shows the content and then pastes it when clicking again doesnt work anymore. I noticed one of my wildcard tabs vanished. It may be linked to that. I'll check it out and update
@Lopodelas I had the same issue with wildcards this week, and their extension keeps crashing since last update (I deactivated it). Since TagComplete use the wildcard system to do it, maybe is related, since I didn't test it anymore.
Maybe... it's time for a new extension :D
@dhunters I found this fork of dynamic prompts and it seems to work fine in forge neo. The wildcards manager tab also reappeared now.
GitHub - abzaloff/sd-dynamic-prompts: A custom script for AUTOMATIC1111/stable-diffusion-webui to implement a tiny template language for random prompt generation · GitHub
@Lopodelas Hey! Glad it is feeling better.
About backspace: I hear you on the hold to delete lag. I pushed a few tweaks that should help. The dropdown now updates instantly while backspacing with no delay, and the heavy translation handler is skipped entirely on delete. Let me know if holding backspace still feels rough on your S20+.
About the space to underscore thing: I actually tried building this. The tricky part is mobile keyboards insert spaces one keystroke at a time, so by the time the autocomplete fires, it only sees the last word you typed. I could not get it working reliably without breaking other stuff, so I had to shelve it for now. The good news is the search already finds multi word tags when you type any word from them. Typing towards will still surface walking_towards_viewer, so it is not a total loss.
Thanks again for testing and reporting back, really appreciate it.
About Dymanic Prompts for Neo, I'll take a look soon! Thanks for the tip!
@dhunters Sounds nice, I'll check it out later. What about the general settings for the extension btw? I'm not so sure what settings make an impact on lag and what settings I should turn off or can leave on
Since v0.2.0 the main performance changes are automatic (indexed search, chunked loading, parallel init, batched DOM updates). You do not need to touch those.
The only new setting that matters is Use Indexed Search. Leave it ON. It makes filtering faster, not slower.
For lag during typing, the heaviest feature by far is Live Translation (Ruby). What it does is scan your entire prompt on every keystroke, look up every matched tag in the translation dictionary, wrap them in HTML ruby tags, and rebuild the whole overlay DOM via innerHTML. On long prompts that is easily the most expensive operation in the entire input handler. On v0.2.1 we at least skip it completely during backspace/deletes, but it still runs on normal typing.
So if typing feels sluggish, turn Live Translation off first. Everything else (Append Comma, Wildcard Completion, Max Results) is personal preference and does not affect lag.
@dhunters Sorry I got kinda caught up in some stuff and eventually forgot to get back to you. The difference is not really noticable at this point sadly. Perhaps it has something to do with my phone or my setup. Don't bother about this so much! You've done more than plenty already
