How to Reverse-Engineer an AI Image Prompt from Any Reference Photo
Turn any reference photo or AI render into a reusable Midjourney, FLUX, or DALL·E prompt — manual framework, vision LLM workflow, and when image-to-prompt tools win.
Turn any photo into an AI prompt — free
No sign-up required. Works with Midjourney, FLUX, DALL-E.
Try Image to Prompt →You saved a reference — a Pinterest board pin, a Midjourney render, a client mood board, a film still. You know what you want. You don't know how to say it in words the image model understands.
Reverse-engineering a prompt means: look at the result → describe what produced it → get text you can paste, edit, and reuse. You're not recovering the literal original prompt (that's usually impossible). You're building a visually equivalent description — often 80–95% of the look on the first pass.
This guide covers the manual breakdown framework, vision-LLM workflow, model-specific syntax, and when dedicated image-to-prompt tools like PromptMake /image beat doing it by hand.
What reverse-engineering can and cannot do
Can:
- Capture subject, composition, lighting, color palette, lens feel, medium/style
- Translate a look across models (MJ → FLUX → DALL·E dialect)
- Give you editable language for client revisions ("more like this reference")
- Speed up learning — you see which words map to which visual choices
Cannot:
- Recover the exact seed, hidden parameters, or private prompt from someone else's render
- Guarantee pixel-perfect recreation (generators re-roll noise every time)
- Replace style-reference images where the model supports
--srefor img2img
Treat output as a strong starting prompt, not a forensic copy.
The 7-layer breakdown (manual method)
Before any tool, train your eye to scan in this order. Same layers vision models should extract:
- Subject — who/what, pose, expression, clothing, key props
- Environment — location, time of day, weather, background depth
- Composition — framing (close-up, wide), angle, rule-of-thirds, negative space
- Lighting — direction (side, back, rim), quality (soft/hard), color temperature
- Color & grade — palette (teal-orange, muted pastels), contrast, film stock feel
- Medium & style — photograph vs illustration, era (80s editorial, brutalist 3D, anime)
- Technical cues — lens (85mm portrait), aperture bokeh, grain, aspect ratio intent
Write one sentence per layer, then merge into a single prompt. Cut redundancy.
Example merge (photo reference):
"Portrait of a woman in her 30s, three-quarter view, soft window light from camera left, shallow depth of field, warm neutral palette, shot on 85mm f/1.4, natural skin texture, minimalist beige interior background, editorial fashion photography."
For Midjourney add parameters separately: --ar 2:3 --style raw. For FLUX keep natural language. For SDXL split positive/negative.
Method 1: Vision LLM analysis (ChatGPT, Claude, Gemini)
Upload the image to a multimodal model. Use a structured instruction — not "describe this image."
Template:
Analyze this reference for text-to-image recreation. Output ONE prompt only. Include: subject, environment, composition, lighting, color palette, medium/style, camera/lens feel. Format for [Midjourney v7 / FLUX / DALL·E 3]. Do not include commentary.
Optional add-ons:
- "Prioritize lighting and lens over generic adjectives."
- "Max 120 words."
- "End with suggested --ar for Midjourney."
GPT-5.5 / ChatGPT Image — strong at natural-language photographic prompts; good for DALL·E and ChatGPT Image targets.
Claude Opus 4.8 — careful composition and mood wording; useful for editorial and product scenes.
Gemini 3.1 Pro — solid vision analysis; pair with Gemini image generation or export to FLUX.
Weakness: generic vision prompts produce generic captions ("a beautiful sunset"). Force specificity in your template.
Method 2: Midjourney /describe (MJ-native only)
In Discord: /describe + upload image. Midjourney returns four prompt suggestions trained on its own corpus.
Pros: syntax matches MJ behavior; fast for MJ-to-MJ iteration.
Cons: Discord-only; vague on lighting sometimes; not portable to FLUX/SD without reformatting.
Workflow: /describe → pick closest option → edit → add --style raw, --ar, --cref if character consistency matters.
For non-MJ targets, use describe as a draft, then run through model-specific rewriting (Method 4).
Method 3: CLIP interrogators (Stable Diffusion tradition)
Tools like CLIP Interrogator rank tags against a vocabulary — great for SDXL/ComfyUI pipelines, anime tags (Danbooru style), texture-heavy work.
Output looks like: (masterpiece:1.2), 1girl, rim lighting, film grain, ...
Pros: dense keyword coverage; community vocab for SD.
Cons: reads poorly in Midjourney v7 natural-language mode; needs cleanup for FLUX prose.
Use when: SD/ComfyUI is your target and you want weighted tags, not sentences.
Method 4: Dedicated image-to-prompt tools
Purpose-built tools run vision models with model-specific system prompts — same image, different output dialect per target.
Why they beat raw ChatGPT for this task:
- Midjourney v7 gets comma phrases +
--ar, not essay prose - FLUX gets natural language without MJ parameter noise
- DALL·E gets conversational scene description
- SDXL can include negative prompt suggestions
PromptMake /image workflow:
- Upload JPG, PNG, or WEBP (up to 10 MB)
- Pick target: Midjourney v7, FLUX.1, DALL·E 3, Stable Diffusion, Ideogram, etc.
- Choose goal mode: Recreate Exactly, Change Style, Adjust Lighting, or Create Variation
- Optional notes: "more cinematic," "remove text," "emphasize product"
- Copy prompt → paste into your generator → iterate
Free tier: 3 image generations per day (guest and registered — separate pool from /text). No credit card.
Pro unlocks fine-tune panel: stylization, negative magic, output format options.
Difference from legacy image-to-prompt-guide on this blog: this article is the deep workflow; that post is the quick intro. Use both.
Goal modes: same photo, different intent
Recreate Exactly — maximal fidelity to reference. Use when you want the closest match.
Change Style — same composition/subject, new aesthetic (photo → illustration, modern → vintage).
Adjust Lighting — same scene, different light (golden hour → overcast, studio → neon).
Create Variation — inspired by reference with creative freedom; not a clone task.
Pick mode before generating. The vision instruction changes what the tool optimizes for.
Model-specific rewrite cheat sheet
Same visual idea, different syntax:
Midjourney v7 — concise phrases, subject first, parameters last: `--ar 16:9 --style raw --stylize 200`. Character work: `--cref [url]`. Style lock: `--sref [url]`.
FLUX.1 — flowing natural language; weight emphasis in parentheses if supported; avoid MJ flags.
DALL·E 3 / ChatGPT Image — conversational scene description; specify what to avoid inline ("no text overlay").
Stable Diffusion XL — positive prompt + negative prompt block; `(token:1.1)` weights; LoRA names if applicable.
Ideogram — explicit typography if text in scene; design-forward wording.
Never paste a Midjourney prompt into FLUX unchanged. Cross-model translation is half the job.
Step-by-step workflow (production)
A. Reference is a photograph (real world)
- Crop to subject; remove watermarks
- Run image-to-prompt with Recreate mode, target = your generator
- Generate v1 in target model
- Compare side-by-side: what's wrong? (lighting, lens, palette)
- Edit prompt — add ONE layer at a time (don't rewrite everything)
- Optional: use reference as
--srefor img2img strength 0.3–0.5 while keeping text prompt
B. Reference is AI-generated (someone else's render)
- Identify generator if possible (MJ texture vs FLUX clarity vs DALL·E simplicity)
- Start with that target in image-to-prompt
- Strip copied artist names / living artist triggers if policy-sensitive
- Variation mode if you want inspired-by, not clone
C. Client says "make it like this"
- Image-to-prompt the client reference
- Extract 5–10 distinctive tokens (lighting, palette, framing)
- Merge into your existing brand prompt — don't replace wholesale
- Document approved prompt in DAM/Notion for reuse
Common failures and fixes
Output too generic — your instruction lacked layer specificity. Re-run with the 7-layer checklist explicitly.
Wrong medium — model thinks illustration is photo. State "35mm photograph" or "3D render" explicitly.
Lighting flat — add direction + quality: "hard side light, deep shadows, rim light on hair."
Composition drift — specify "centered subject, upper third horizon, 85mm compression."
MJ ignores details — shorten prompt; MJ favors front-loaded nouns; move vibe words after subject.
FLUX overwrites with prose fluff — trim adjectives; FLUX likes precise scene grammar.
Text garbled in image — Ideogram/DALL·E need explicit quoted text; other models: "no text" in negative.
Manual vs tool: when to use which
| Situation | Best approach |
| Quick one-off, learning | Vision LLM + 7-layer template |
| MJ-only workflow | /describe + hand edit |
| SD/ComfyUI tag soup | CLIP Interrogator |
| Multi-model export, client work | PromptMake /image or similar |
| Maximum style lock | --sref / img2img + short prompt |
| Privacy-sensitive refs | Local tool or self-hosted vision, not public Discord |
Ethics and policy
- Don't reverse-engineer to impersonate living artists by name — use style descriptors ("1970s editorial colour photography" not "in the style of [living artist]").
- Client references may be copyrighted — prompts you extract are for licensed work contexts.
--crefon real people without consent is a policy violation on most platforms.- Disclose AI-generated assets where your industry requires it.
Iterate like an engineer, not a gambler
Log: reference thumbnail → extracted prompt → generator settings → output v1/v2/v3.
Change one variable per iteration (lighting words OR lens OR palette — not all three).
When stuck, switch mode: Recreate → Variation, or swap target model to see which dialect captures the reference best.
Frequently asked questions
Can I get the exact original prompt from an AI image?
Almost never. You approximate the visual recipe.
Does reverse-engineering work on low-res images?
Poorly. Vision models miss detail; upscaling helps slightly. Use the highest clean source available.
Best format for upload?
PNG or JPG, well-lit, subject unobstructed. Crop clutter.
Midjourney /describe vs PromptMake?
Describe is MJ-native and Discord-bound. PromptMake supports multiple targets and goal modes in browser — 3 free/day on /image.
Can I reverse-engineer video frames?
Same workflow on a key frame; add motion language separately for Sora/Runway (see video guides on the blog).
How close is "Recreate Exactly"?
Close in mood, composition, and lighting — not identical pixels. Expect 2–5 edit rounds.
Related articles
Image to Prompt: Complete Guide (legacy) — quick intro to goal modes.
Midjourney --cref Guide — character consistency after you have a base prompt.
Prompt engineering for AI images: 7 elements (cluster 3 — coming next).
DALL·E 3 vs Midjourney vs Flux — which model needs better prompts.
Bottom line
Reverse-engineering a prompt is structured looking: subject, light, lens, palette, medium — then translation into the target model's dialect.
Do it manually to learn. Use vision LLMs for speed. Use image-to-prompt tools when you need model-calibrated output and goal modes without writing system prompts yourself.
Upload the reference on promptmake.net/image, pick your target and mode, copy the result, iterate once in your generator. That's the loop most creators actually run in 2026.
Ready to generate your own prompts?
Free. No sign-up required. Works with all major AI models.