Character feature prompts

Pick the features. Get the prompt.

Instead of writing out your character's appearance in English every time, pick a photo and let it fill in 15 axes — hair, face, expression, clothing and shot — then correct what it got wrong. Or fill them in yourself. Choose the gender expression, age range, skin tone and style you want, and you get a finished prompt you can paste straight into an image generator.

Start from a photo

Optional. Pick a photo and this fills in the features below with suggestions — then correct the ones it got wrong. It is right about two thirds of the time, so expect to change several.

The photo never leaves your device. It is read in this page and nothing is uploaded. The first run downloads about 60–70 MB — the model and the code that runs it, and how much depends on your device — which your browser then caches, so later runs can be faster.

No photo yet. The form below works on its own if you would rather fill it in by hand.

Pick the features

Anything you leave unset stays out of the prompt. To drop a value you already picked, set it back to “Not set”. Nothing here is saved, so reloading the page starts you over.

Hair
Face & accessories
Expression
Clothing
Shot

Generation setup

You choose these — the photo never does. They set what kind of character the prompt asks for. The photo is not used to guess anyone's gender, age or skin tone, and leaving a field at “Not specified” keeps it out of the prompt.

Visual style

Prompt

Read it through before you copy. It is written from the form alone — no AI rewrites it — so the same picks always give the same prompt. Whether it describes your character is something only you can tell.

Nothing picked yet. Choose a photo, a setup option or any feature, and the prompt shows up here.

0 features picked, 0 of them in the prompt.

A “None — left out of the prompt” answer stays in the form but is left out of the prompt itself: put a negation like no hat in front of an image model and it will often draw the hat anyway. “Not set” means nobody has answered yet. Neither one reaches the prompt.

What this tool does

In one sentence

It fills in 15 fixed axes of a character's appearance — from a photo you pick, if you want one — adds the gender expression, age range, skin tone and visual style you choose, and writes it all out as an English prompt that asks an image model to draw that character. You correct anything it got wrong before you copy.

When to use it

When you generate the same character repeatedly and the description drifts a little each time, or when turning the look in your head into English phrasing costs you time on every attempt. The same picks always produce the same prompt, so you can pin a character down and reuse it.

What you pick

Features: hair length, texture, color and style; facial hair; eyewear; headwear; earrings; expression; gaze; garment, clothing color and pattern; head angle; and how much of the person is in frame.

Generation setup: gender expression (man, woman, androgynous), age range (teens to 50s and up), skin tone (very light to deep) and visual style (photorealistic, anime, illustration, 3D character, concept art). These are yours alone — the photo never sets them. The setup sits right above the prompt, so you can switch styles and see the result straight away.

Everything is optional — leave a field unset and it stays out of the prompt.

Give it a photo and it proposes a value for all 15 features at once. Those are suggestions, not readings: about two thirds land, so expect to change several. The suggestions can only ever be values already in these dropdowns — the photo cannot introduce a feature the form does not offer.

What you get
  • A prompt in plain sentences that asks for an image — for example, “Create a photorealistic full-body character portrait of a man in his 30s. He has short curly black hair and a full beard.” — ready to paste into an image generator as it is.
  • Wording that follows the style you pick: the first sentence names it, and a closing sentence tells the model how to render it.
  • Built from fixed templates in your browser, not rewritten by an AI. The same picks give the same prompt no matter what order you edited them in, and anything you leave unset is simply left out rather than filled in.
  • If you started from a photo, a form that is already filled in. Nothing is locked: every field is an ordinary dropdown you can change or set back to “Not set”.
  • A copy button. You can read the whole prompt on screen first, and if the browser blocks clipboard access the tool says so and asks you to select and copy it yourself.
Assumptions and exclusions
  • This tool does not generate images and calls no external generation API or language model. What it makes is one prompt.
  • The same prompt reads differently to different models. This tool does not reshape its wording for any particular one.
  • The photo is never used to guess gender, age, skin tone, race or ethnicity. Gender expression, age range and skin tone are directions you choose for the character you want to generate, not readings of anyone in a photo, and the photo cannot change them.
  • Skin tone is only a visual shade, from very light to deep — not a race or ethnicity. Image models can still associate a shade with other features, so the result may carry impressions the tool never asked about.
  • Race and ethnicity, location, health, identity, and religious head coverings are not offered at all — not from the photo and not as a choice. Accuracy and expressiveness are not accepted as reasons to add them. Hair and clothing picks can still suggest such things — leaving an axis out means the tool does not ask, not that the resulting prompt carries no impression.
  • Face shape — face, jawline, nose — is not covered. People describe those differently enough that a picked value would not pin down a shared meaning.
  • A “None — left out of the prompt” answer stays in the form but is left out of the prompt itself. Put a negation in front of an image model and it will often draw the thing anyway. “Not set” means you have not answered yet; neither reaches the prompt.
  • Reading a photo needs WebGPU and a first-run download of about 60–70 MB depending on the device — the model and the code that runs it. Browsers without WebGPU say so and leave the form for you to fill in by hand. Your browser caches the download, so later runs can be faster.
  • Combinations are not blocked. Pick a bald head and a hair color and both go in — the tool writes down what you picked and does not second-guess it.
Privacy
  • Your photo never leaves your device. It is read inside this page and analysed there. No upload happens, and while the analysis runs the page makes no network requests at all.
  • Picking and prompt building both happen entirely in your browser. tiny-tools has no backend, so neither your photo nor your selections are sent to us.
  • Reading a photo does mean fetching the model and the code that runs it. The code comes from cdn.jsdelivr.net. The model is asked for at huggingface.co, which then redirects the weights — by far the largest part of the download — to a CDN host of its own, us.aws.cdn.hf.co when we checked; that name can differ. Each of those three sees your IP address, which file was asked for, and that the request came from this site — though not which page you were on. None of them sees your photo, your picks or your prompt. Nothing is fetched until you pick a photo.
  • Nothing is stored, localStorage included. Reload and it is gone.
  • No sign-up, no login.
  • Anonymous product analytics go to PostHog: that the tool was viewed, that you started, that it finished (the analysis completing, or — if you filled the form in by hand — three or more picks reaching the prompt), that you copied, plus the hostname of the site that linked you here and one of prefill-f16, prefill-q4, prefill-unsupported or manual-after-prefill, which says whether a photo was used and what this device could run. Your photo, your selections — gender expression, age range, skin tone and style included — and the resulting prompt are not included in any property.
  • Session replay does not run on this route. The photo, the picking and the prompt areas are all marked as excluded from the first render, and coming here from another tool stops any recording in progress.
  • Your IP address reaches PostHog, which is configured to derive a country and time zone from it and then discard it rather than store it on the events.