Tags to Natural Language: how Booru Prompt Gallery writes prompts for FLUX.2, Krea 2 and MOSS-Image

BOORU PROMPT GALLERY: https://booru-prompt-gallery.vercel.app/
DATASET (phrases and character profiles): https://civitai.red/articles/37490/booru-tags-to-natural-language-open-source-dataset
DATASET (Danbooru tag taxonomy): https://civitai.red/articles/36019/danbooru-tag-taxonomy-db
DATASET (Rule34 tag taxonomy): https://civitai.red/articles/37489/rule34-tag-taxonomy-open-source-dataset
TL;DR: Booru Prompt Gallery v10.4 can show every card's prompt as plain sentences for FLUX.2, Krea 2 and MOSS-Image, or as tags plus a short description for Anima. The conversion is a set of rules that runs in your browser, with no AI model, instantly and with no daily limit. When a post has two or more characters, each one gets their own hair, eyes and outfit, based on how that character is usually tagged on Danbooru.
Hello! This one is more technical than my usual articles. If you only want to use the feature, open Customize prompt, pick a Prompt format and copy. The rest of the article is about what happens in between.
The problem
Booru tags were made for searching. The older anime models were trained on them, so a list of tags was the natural way to prompt. Newer models read the prompt with a full language model instead, and FLUX.2, Krea 2 and MOSS-Image follow plain sentences better than a list of tags. Anima understands both.
Tags are also one flat list. standing, hands up, holding spoon, kitchen tells the model what is in the picture, but not how it fits together. With two characters, white hair, black hair, ponytail, sword doesn't say who has what.
Until now the site had one answer, the AI conversion (now called Rewrite with AI, in the card menu). It sends the tags to a language model and gets a paragraph back. It works, but it converts one card at a time, makes you wait for each one, has a daily limit and can refuse posts with an adult content rating. And since it rewrites freely, there's no easy way to check that every tag made it into the text.
I wanted something that runs on every card at once, with no limit, for any content rating, and that doesn't lose tags along the way.
How the converter works
The converter does three steps, all in your browser.
Sort. The slots come from the same tag taxonomy I released as a dataset (Danbooru Tag Taxonomy). Character, series and artist names come from the post's own fields, since the booru already separates them. Meta tags like
highresorcommentaryare dropped, and tags the taxonomy doesn't know go at the end, as tags.Assign. When there are two or more characters, each one gets their own traits (see Two or more characters).
Write. Each slot has its own sentence pattern. Hair and eyes go next to the name ("with long black hair, twintails and red eyes"), clothes after "wears", the pose after "is". Clothes and hair are already nouns, so they mostly need an "a" in front. Poses, expressions and framing need real phrases (
hand on own hip→ "with one hand on her hip"), and that's what the phrase dictionary is for.
Every tag ends up in exactly one place (a slot, the "unknown" pile or the dropped meta tags), which is how I check that none are lost.
Each format follows what its model asks for.
Anima was trained on tags, natural language and a mix of both. Its model card asks for at least two sentences and for each character to be described separately. So the format keeps the tags and adds sentences for what tags say badly, like who does what. The tag order follows the model card (rating, count, characters, series, @artist, then everything else).
FLUX.2: Black Forest Labs' prompting guide suggests 30 to 80 words, with the most important things first. Krea 2 also wants full sentences, so it shares the format.
MOSS-Image was trained on captions written by a vision model, and the long ones average about 235 tokens. Its official prompt-enhancer skill asks for plain prose without quality tags. People who use it report that
@artistdoes little there, so names are written out.
Example: one character
Danbooru post #12042023 (general rating) shows Yor Briar doing a breakdance kick. These are its tags.
yor briar, spy x family, 1girl, animal ears, black hair, black pantyhose, blush, boots, breakdance, dress, flying sweatdrops, full body, hair ribbon, hairband, handstand, high heel boots, high heels, holding, holding knife, kicking, knife, long hair, pantyhose, red eyes, red sweater, ribbon, shoe soles, simple background, solo, spinning bird kick, sweater, sweater dress, twintails, upside-down, weapon, white backgroundThe FLUX.2 · Krea 2 version has 80 words.
An anime-style illustration of Yor Briar from Spy x Family, with long black hair, twintails and red eyes. She is doing a handstand, breakdancing, performing a spinning bird kick and blushing, with sweatdrops flying off her head. She has animal ears and wears a sweater dress, a red sweater, black pantyhose, high heel boots, a hair ribbon and a hairband, with the soles of her shoes visible. She is holding a knife. It is set against a plain white background.The MOSS-Image version (87 words) adds the one sentence FLUX.2 left out to stay under 80 words, "The image is a full-body shot, upside-down."
Where the converter can tell that one tag only repeats another, it folds them together. holding knife, knife and weapon become "She is holding a knife", and high heel boots and high heels become one item.
How the data was made
I used AI only to build the data. It was made once, checked and saved as files that the site downloads when you pick a format.
Tag categories: Jev
The 33 slots are the Danbooru tag taxonomy from my previous article. Tags were classified by Jev, an AI model from TypeSafe made for this kind of judgment call. Rule34's own tags went through the same process (more on that below).
Phrases
The tags that need a phrase are poses, gestures, expressions, framing, lighting, body tags and some accessories. Claude Haiku 5.5 wrote a phrase for each one, plus how it plugs into a sentence, and Claude Sonnet 5.5 reviewed them. Some go after "She is..." (handstand → "doing a handstand"), some after "with..." (heart hands → "her hands forming a heart shape"), others after "She wears..." or "The image is...". Tags that aren't visual, or are too ambiguous to phrase, stay as tags.
The result is a dictionary of 26,302 phrases. It covers tags for adult content too, described in plain words. Tags about minors have no phrase.
Two or more characters
A post with Geralt and Yennefer has white hair, black hair, long hair, ponytail, sword, and nothing says who has which, so a model reading that list tends to blend them.
Danbooru can tell you, for any character, how often each tag appears on that character's posts (its "related tags"). The site has those numbers for 4,633 characters, the most tagged ones on Danbooru and popular Rule34 characters. The converter uses them with this rule.
A trait goes to a character if it appears on at least 15% of their posts and at least 1.5 times as often as for any other character in the picture. Otherwise it stays shared.
Example: two characters
Danbooru post #4197705 (general rating) has Geralt and Yennefer sitting together at dawn. Its tags are below.
geralt of rivia, yennefer of vengerberg, the witcher (series), the witcher 3, 1boy, 1girl, artist name, black hair, bush, cloud, cloudy sky, couple, dawn, from behind, grass, hetero, holding, holding behind back, holding sword, holding sword behind back, holding weapon, holding weapon behind back, hug, long hair, long sleeves, mountain, outdoors, plant, ponytail, river, scenery, sitting, sky, sword, tree, valley, weapon, white hair, wide shotThe FLUX.2 · Krea 2 version has 80 words.
An anime-style illustration of Geralt of Rivia and Yennefer of Vengerberg from The Witcher 3. Geralt of Rivia has white hair and a ponytail, and holds a sword. Yennefer of Vengerberg has long black hair. They are sitting and hugging. They are a couple. One of them is shown with long sleeves. They are holding a sword behind back and a weapon behind back. The scene takes place outdoors at dawn, with a bush, grass, a mountain and a river.And the Anima version, with the tags first and the description after them.
safe, 1boy, 1girl, hetero, geralt of rivia, yennefer of vengerberg, the witcher \(series\), the witcher 3, @arnaerr, long sleeves, holding sword behind back, holding weapon behind back, bush, grass, mountain, outdoors, river, scenery, tree, valley, cloud, cloudy sky, dawn, sky, wide shot, from behind, plant. Geralt of Rivia and Yennefer of Vengerberg from The Witcher 3. Geralt of Rivia has white hair and a ponytail, and holds a sword. Yennefer of Vengerberg has long black hair. They are sitting and hugging. The image is a wide shot, seen from behind.Each character gets their own sentence. What nobody clearly owns is said of "one of them" ("One of them is shown with long sleeves"), so the model doesn't put it on both.
Costume posts work a little differently. On cosplay and alternate costume posts only hair, eyes and body are assigned, since the outfit isn't the character's usual one, and on genderswap posts only hair and eyes. If one of the characters has no profile, the rule is stricter, and if fewer than two have one, everything stays shared.
Tags that come from a partner
Cloud Strife from Final Fantasy VII shows a problem I didn't expect. He has short, spiky blond hair, and this is what Danbooru says about his posts.
He's drawn with Tifa and Aerith so often that their long hair shows up on 60% of his posts, and Tifa's black hair on 31%. Even 1girl is on 48% of them. Many male characters with a popular partner look like this, because their numbers include hers.
Solo posts fix part of it, because in a solo post 1boy or 1girl describes the character and not a partner. So I added those numbers to every profile, and the converter uses them to tell who is a man and who is a woman. Each character's sentence then uses their own pronoun ("a scar across his eye") instead of "their", and traits only one gender can have can't go to the other one. Body tags that describe what is shown in the picture, rather than who the character is, are never assigned to anyone.
On a post with Cloud and Tifa (#12375150), the 1.5× rule sends black hair (31% for him, 69% for her) to Tifa, which is right. Long hair (60% for him, 86% for her) is too close to call, so it stays shared instead of going to the wrong person. The post also has low-tied long hair, which is on 32% of Tifa's posts and barely on Cloud's, so that one goes to her, and the description reads right anyway.
Cloud Strife has short spiked blonde hair and closed eyes. Tifa Lockhart has black hair and low-tied long hair, and wears a black skirt and black thighhighs. They are standing and hugging. One of them has arms around another's back. One of them wears red boots and shoulder armor.The black skirt and the black thighhighs go to Tifa the same way. The shoulder armor and the red boots are Cloud's, but neither profile has them, so the converter doesn't guess and says "one of them". Plain long hair still can't go to Tifa on its own. Building the whole profile from solo posts would fix that.
Who does what
Some tags say whose they are, and the converter reads them. A tag that names the man or the woman, the clothes of the one who is dressed when the other is nude, or animal ears and fur next to a human all go to the right person. Tags that belong to one gender (breasts, a beard, most sex-related body tags) go by gender, using two generic profiles built from solo posts of women and of men. Those profiles also cover people with no name, like an unnamed man next to a named girl. Acts between two people say who does what, because each act phrase also records whether it describes the one who does it, the one it's done to, or both.
Rule34 posts
Rule34 posts were the hardest source, for three reasons.
Its own vocabulary
Many common Rule34 tags don't exist on Danbooru, so the taxonomy didn't know them, and 17.5% of the tags on the Rule34 posts in my test set had no slot.
So I gave Rule34's own tags the same treatment, slots first and then phrases. Tags Jev wasn't sure about were left out instead of guessed. After that, the Rule34 "unknown" pile went down to 3.1%, still more than Danbooru's 0.4% because Rule34 is less curated. Most of what's left are character and series names Rule34 doesn't mark as names. A few of the phrases look like this.
light-skinned female→ a light-skinned womanblack handwear→ black gloveschocker(misspelled) → a chokergloves (marking)→ glove-like markings on her hands
Words that mean something else
On Rule34, straight means a man and a woman, not straight hair. 1girls, 1female and 1boy1girl are count tags. Hand-written rules take care of those.
One character, several names
Rule34 often tags one character under two or three names, like yor forger and yor briar, yennefer and yennefer of vengerberg, or mai shiranui and shiranui mai. Without help the Rule34 spelling wouldn't find the Danbooru profile, and two spellings of one person could be written as two people.
So I matched Rule34's character names to Danbooru's. About three in four of the popular Rule34 characters matched a Danbooru character, many of them under a different name. A match only counts when it's clearly the same person, like the same words in another order, another romanization or an official Danbooru alias.
Take a made-up Rule34-style post with the characters yor forger, yor briar, the series spy x family and the tags 1girls, female, black hair, red eyes, long hair, red sweater, standing. With the map, there's one Yor, under her Danbooru name, and she gets her Danbooru profile.
An anime-style illustration of Yor Briar from Spy x Family, with long black hair and red eyes. She is standing. She wears a red sweater.Word budget: what to cut first
A Danbooru post has about 40 tags, and a Rule34 post often more than 60. Written out in full, that's often over 100 words. FLUX.2 works best under 80.
When the full description doesn't fit, the converter cuts in two steps.
Lists get shorter, with at most 3 hair details, 5 pieces of clothing, 4 actions, and so on.
Whole sentences are dropped by priority. Who is in the picture and what each one looks like stay first, then the pose, the outfit, the place, the body, held items, lighting, camera angle and style, in that order.
These are the defaults for each format.
FLUX.2 · Krea 2: 80 words.
MOSS-Image: 180 words, about the length of its long training captions.
Anima: no limit, since the tags carry what the description leaves out.
If you want everything, turn on Keep every detail under Customize prompt.
Does it work?
Counting tags on 132 posts
I keep a fixed test set of 132 posts, 97 from Danbooru (solo characters, pairs, cosplay, detailed backgrounds, all content ratings) and 35 from Rule34. After every change, a script converts all of them and counts.
The count uses the full description, since the short FLUX.2 version leaves details out on purpose.
All 25 Danbooru posts with two or more named characters got at least one trait assigned to a specific character.
A small blind test with images
Counting tags shows that nothing is lost, but not whether the images get better.
To check that, I ran a small blind test with 8 Danbooru posts, on the first version of the converter, general and sensitive ratings only. Each post got 3 prompts (the tags, this converter, and the AI rewrite the site already had, Llama 3.3 70B) on 2 models, Anima and MOSS-Image. I generated them on SeaArt with the same seed and settings for every image (1024×1024, 30 steps, CFG 4, Euler a), 48 images in total.
Each post had a checklist made from its tags, covering the character, hair, eyes, outfit, pose, place and framing. The judge was Claude Sonnet 5.5, looking at the images without knowing which prompt made which. It marked each point as met, partly met (half a point) or missed, picked the best image of each set of three and gave each image a quality score.
There's a flaw in how I set this up. The "Tags" prompt was the tag part of the Anima format. That part leaves out the pose, expression and gaze tags, and the traits assigned to each character, because the converter writes those as sentences. The AI rewrite was given that same list. So on 12 of the 74 checklist points (8 poses, and each character's hair color on two of the posts with two characters), only the converter's prompt had the tag at all. The chart shows both counts. The 62 points that all three prompts had are the fairer comparison, and there the numbers get much closer.
The judge also counted how many of the 8 sets each prompt won, gave each image a quality score and checked the number of people and the defects.
MOSS-Image: the converter's prompts still met the most points. Their lead in picks, quality and defects comes with a caveat, since the judge scored the whole image, where the missing poses count too. The gap is smaller than the grey bars suggest.
Anima: the three are within a few points of each other, and the judge picked the plain tags' image in 4 of the 8 sets. That makes sense for a model trained on tags, and the Anima format keeps them.
The sample is small: 8 posts, one judge, and the judge is an AI, so treat it as a hint. I'd like to repeat it with more posts and the full tag list in the Tags and AI versions.
MOSS-Image, Danbooru post #7850703. Here the AI rewrite was the judge's pick, and the converter's image has a second, closed umbrella. The converter's prompt said "She is holding an umbrella. She has a parasol and an umbrella over shoulder.", because the post has umbrella, parasol and umbrella over shoulder as separate tags. The AI merged them into one. The converter now joins those tags too, and the same post reads "She is holding a parasol over her shoulder."
How to use it
Open Customize prompt and pick a Prompt format. The options are Tags (as before), Anima, FLUX.2 · Krea 2 and MOSS-Image.
Every card now shows and copies its prompt in that format.
Turn on Keep every detail if you want the full description instead of the short one.
To grab one card in another format without changing your setting, use Copy as in the card's copy menu.
Rewrite with AI is still in the card menu, for when you want a model to rewrite a prompt freely.
Limitations
The writing is plain and sometimes repeats itself. The converter folds in the repeats it can recognize, like
holding knife+weapon, but not all of them. "a sword behind back and a weapon behind back" is still two items, and some models draw both. Sentences about the same person are joined where it reads well ("She has animal ears and wears…"), but a long description still starts a few sentences with "She"."One of them" is clunky. It's better than giving a trait to both, but it reads oddly and the model still has to guess.
Unknown tags stay as tags, at the end of the prompt.
Characters without a profile (less popular ones) don't get their own traits. With two of them, hair colors are still written together, like before.
Partners' tags (see Tags that come from a partner) keep some traits shared that should belong to someone.
Outfits are assumed to be the usual ones. On an alternate outfit that isn't tagged as one, the converter can give an item to the wrong character.
English only, and it knows booru tags best. A hand-written prompt with other words works, but those words go in as they are.
What's next
Datasets: the data behind the converter will be on Hugging Face soon as two datasets, and I'll add the links here when they're up. Booru Tags to Natural Language has the phrases (Danbooru and Rule34), the character profiles and the Rule34 → Danbooru name map. Rule34 Tag Taxonomy has Jev's slot labels for Rule34's own tags, without human review. The character statistics come from Danbooru, so please credit them too.
Maybe a ComfyUI node. The data and the rules are plain files, so a node could use the same ones as the site. No promises yet.
FAQ
Does it work with every content rating?
Yes. Adult tags are described in plain words, like any other tag. Tags about minors have no phrases.
Which format should I use?
Anima for Anima, FLUX.2 · Krea 2 for FLUX.2 and Krea 2, MOSS-Image for MOSS-Image. I haven't tested other models. If yours likes long descriptions, MOSS-Image with Keep every detail is a reasonable place to start.
Found a wrong phrase or a wrong character assignment?
Leave a comment with the post link and what came out, and I'll fix it.
Want to support me?
Thank you so much! You can Buy Me a Coffee, or send Buzz. It also helps a lot if you leave a comment and a rating, or use my models on the platforms linked in my profile (especially TensorArt and SeaArt).
Other articles that may interest you:
That's it!
Stay hydrated and don't forget to blink.