Skip to content
Learning Lab · 12 min read

Image Prompts That Actually Work: Midjourney, DALL-E, Flux Compared

Image prompts fail because models don't work the way you think. They weight tokens by salience, not by word count. Here's the framework that works across Midjourney, DALL-E 3, and Flux—with specific techniques for each model and the failure modes you'll actually encounter.

Image Prompt Techniques: Midjourney, DALL-E 3, Flux

You wrote a prompt. The image came back wrong. Not catastrophically wrong—just… off. The composition was flat. The details didn’t match what you described. The style didn’t land. You tried again with more words, more adjectives, more desperation. The result was worse.

This happens because image generation models don’t read prompts the way you think they do. They don’t parse sentences. They weight tokens by salience, cluster concepts spatially in their latent space, and respond to stylistic pressure in ways that are partly predictable and partly dependent on the model’s training data. Knowing this changes everything about how you write.

I’ve spent the last two years building visual workflows for AlgoVesta—trading dashboards that need to render correctly, consistently, and fast. That means I’ve tested Midjourney, DALL-E 3, and Flux across hundreds of iterations. I’ve watched prompts fail in specific ways. I’ve learned what actually moves the needle and what wastes tokens.

Why Your Image Prompts Fail (And It’s Not Just “Be More Descriptive”)

The most common mistake is treating an image prompt like you’re writing a product description. You list attributes: “a forest, misty, sunlight filtering through trees, ultra-detailed, 4K.” This approach gives you muddy, unfocused results because you’re not accounting for how these models actually score tokens.

Image generation models—whether Midjourney (which runs on its own infrastructure), DALL-E 3 (built on OpenAI’s architecture), or Flux (an open-source model that favors clarity)—process language through an encoding layer that assigns importance weights to tokens. A token that appears in millions of training images gets lower salience than a token that appears in fewer, more specific contexts. When you say “detailed,” every model has seen that word in millions of prompts, so it carries almost no signal. When you say “daguerreotype color grading,” fewer images have that specific aesthetic, so the weight is higher.

The second mistake is **prompt length creep**. You think more description = more control. What actually happens is token noise. Midjourney processes your prompt through a CLIP encoder (a vision-language model trained on image-text pairs). Every word after roughly 60 tokens starts to dilute the signal. DALL-E 3 is slightly more forgiving—it rephrases your prompt internally before generating—but still has a saturation point around 80 tokens. Flux, being newer and more research-forward, handles longer prompts better, but clarity still beats volume.

The third mistake—and this one kills professional work—is **ignoring model-specific behavior**. Midjourney’s aesthetic leans toward cinematic, slightly saturated, hyper-detailed. DALL-E 3 tends toward cleaner, more “real” rendering. Flux splits the difference but has its own quirks with text-in-image and hands. You can’t write the same prompt for all three and expect the same quality.

Model Best For Prompt Style Token Limit (effective) Iteration Speed
Midjourney (v6.1) Stylized, cinematic, fantasy Sparse, emphasis on composition and style ~60 tokens optimal ~60s per image
DALL-E 3 Photorealistic, product, conceptual Narrative, detailed scene-setting ~80 tokens optimal ~20s per image
Flux Realistic, technical, text-heavy Direct, literal descriptions work better ~120 tokens optimal ~8s per image (local)

The difference matters. If you’re generating product photography, DALL-E 3 will give you usable output in 2-3 iterations. Midjourney will require 8-12, but the stylistic range is wider. Flux, if you’re running it locally, is fastest for technical imagery but worst at interpretive requests.

Core Structure: The Three-Part Prompt Framework

Every effective image prompt has three components. Most people only use one.

Part 1: The Subject/Action (10–20 tokens)
This is what the model focuses on first. Be specific about the primary element. “A woman” is weaker than “A woman in a red coat leaning against a brick wall.” The detail isn’t decoration—it’s directional weight. The model allocates more of its generation budget to whatever appears first and most concretely.

// BAD
A landscape photo

// BETTER
An aerial view of a coastal town at sunset, Mediterranean architecture, narrow streets, boats in harbor

Part 2: Style/Aesthetic (5–10 tokens)
This is where model-specific knowledge matters. Don’t say “cinematic.” Say what kind of cinema. “Film noir” is sharper than “cinematic.” “Kodachrome color grading” is sharper than “vibrant.” You’re pointing the model toward a cluster of training examples, not a vague direction.

For Midjourney, style tags work well: “shot on Hasselblad,” “volumetric lighting,” “dramatic chiaroscuro.” For DALL-E 3, narrative style works: “in the style of a 1970s Vogue cover.” For Flux, descriptive technical detail: “sharp focus, 35mm lens, f/2.8 aperture.”

// BAD
Cinematic lighting, professional quality, high resolution

// BETTER (Midjourney)
Voletric god rays, shot on Hasselblad, 85mm lens, color grading by Roger Deakins

// BETTER (DALL-E 3)
In the style of a Helmut Newton photograph from the 1980s

// BETTER (Flux)
Sharp focus, Kodachrome film stock, natural window light, 50mm prime lens

Part 3: Constraint/Exclusion (0–5 tokens)
This is where you prevent failure modes. Tell the model what NOT to do. “No blur, no filters, no text.” For Midjourney, you can use “–no” syntax: `–no blur, filters`. For DALL-E 3, include it in the text: “avoid motion blur, avoid digital filters.” For Flux, same—include it naturally.

// WITHOUT CONSTRAINT
A close-up of a face, dramatic lighting

// WITH CONSTRAINT
A close-up of a face, dramatic lighting, no blur, no digital filters, both eyes clearly visible and in focus

Why the last constraint? Image models struggle with bilateral symmetry in close-ups. Specifying “both eyes clearly visible” prevents the common failure of one eye being blurred or stylistically ignored.

Model-Specific Techniques: Where They Diverge

Midjourney: Composition and Aspect Ratio as Prompt Logic

Midjourney’s strength is compositional diversity. It handles complex scenes, multiple subjects, and cinematic framing better than its competitors. The model responds heavily to spatial and compositional language.

Key technique: Use compositional verbs and prepositions. Instead of listing elements, describe their spatial relationship.

// WEAK
A woman, mountains, forest, sunset

// STRONG
A woman standing on a rocky outcrop overlooking a vast forest valley, mountains rising in the distance, warm sunset light casting long shadows across the landscape

The second prompt works because you’re not just naming things—you’re describing depth, layering, and spatial hierarchy. Midjourney’s CLIP encoder weights these relational tokens highly.

Aspect ratio matters more in Midjourney than other models. Use `–ar 16:9` for panoramic, `–ar 1:1` for square, `–ar 9:16` for portrait. The model shifts its composition strategy based on the canvas. Don’t fight this—lean into it. Write prompts that assume the aspect ratio.

// For --ar 16:9 (panoramic)
Wide establishing shot: a sprawling cityscape at dusk, neon signs reflecting in wet streets, several distinct districts visible from left to right

// For --ar 9:16 (portrait)
Close portrait of a musician, hands on violin, facing slightly left, soft studio lighting from the right, shallow depth of field blurring the blurred background

Midjourney also responds to specific camera language. “Shot on Hasselblad 907x,” “35mm Kodachrome,” “taken with a Mamiya RB67.” These aren’t just style flourishes—they encode specific aesthetic properties that the model has learned from training data. Include them.

DALL-E 3: Narrative Framing Works Better Than Lists

DALL-E 3 has an internal rephrasing step. You write something, and the model internally converts it to a more detailed description before generating. This means you can write more naturally—closer to how you’d describe an image to a human—and the model will elaborate intelligently.

This changes your strategy. With Midjourney, you optimize for token density. With DALL-E 3, you can afford to be conversational.

// WEAK (and wastes DALL-E 3's strength)
An office, modern, minimalist, plants, sunlight, professional

// STRONG (narrative framing)
A modern office space on a high floor of a glass building. Morning sunlight streams through floor-to-ceiling windows, illuminating a minimalist desk with a single green plant and a laptop. The space is calm, uncluttered, and bathed in natural light.

The second prompt works for DALL-E 3 because you’re using narrative structure. The model’s rephraser will elaborate on “morning sunlight streams through floor-to-ceiling windows” in ways that improve the final image. It will infer scale, materials, and mood from the scene-setting.

DALL-E 3 also excels at conceptual requests. “Show the feeling of anticipation through a landscape” or “Visualize the sound of rain on a tin roof” will yield more interesting results than with Midjourney, which tends toward literal interpretation.

Avoid style lists in DALL-E 3. Instead of “volumetric lighting, sharp focus, 85mm lens,” write: “Shot with soft, diffused light, sharp focus on the central subject.” The narrative approach lets the rephraser do more work.

Flux: Literal Descriptions and Text Embedding

Flux is newer (released mid-2024) and its training approach is more research-oriented. It’s extremely literal. What you write, it attempts to render directly. This is a strength if you’re precise, a weakness if you’re poetic.

// Works fine in Midjourney but fails in Flux
A woman lost in thought, gazing into an infinite horizon

// Better for Flux
A woman with a thoughtful expression, looking toward the horizon, standing alone in a vast empty landscape, muted colors, overcast sky

Flux’s unique advantage: it handles text-in-image better than Midjourney or DALL-E 3. If you need a sign, a label, or embedded text, Flux is your model. But you have to be explicit about what text should appear and where.

A product label on a white background. The label reads "Pure Essence" in bold serif font, with a gold border and a small botanical illustration in the top right corner, professional product photography, studio lighting, clean shadow

Flux can handle this. DALL-E 3 will hallucinate the text. Midjourney will render it illegibly.

For technical or realistic imagery, Flux’s literalism is an asset. “A close-up of a circuit board with precise solder joints, component labels clearly visible, shot at 45 degrees, white background” will produce more technically accurate output from Flux than from Midjourney.

Common Failure Modes and Corrections

You’re going to hit these problems. Every practitioner does. Here’s how to recover.

The “Too Much Information” Failure
The image comes back noisy, unfocused, confused. The model tried to incorporate every detail and succeeded in incorporating none.

Cause: You exceeded the model’s effective token capacity. Midjourney especially suffers this around 65+ tokens. The later tokens become noise.

Fix: Cut the prompt by 30%. Delete adjectives and descriptive phrases. Keep the subject, the composition, and one strong style reference.

// ORIGINAL (fails)
A serene forest clearing at dawn, mist hovering over the ground, ancient oak trees towering above, golden sunlight filtering through the canopy, birds in flight, soft focus, volumetric lighting, photorealistic, ultra-detailed, shot on Hasselblad, 4K resolution, award-winning photograph

// CORRECTED
Forest clearing at dawn, mist on ground, ancient oaks, golden sunlight through canopy, shot on Hasselblad, photorealistic

The “Wrong Aesthetic” Failure
The image technically matches your description but has the wrong vibe. Too cartoon-y, too photorealistic, too saturated, too muted.

Cause: Your style reference wasn’t specific enough, or it conflicts with other tokens.

Fix: Replace vague style descriptors with specific historical references or photographer names.

// WEAK STYLE
A landscape, vibrant colors, beautiful lighting, professional quality

// STRONG STYLE
A landscape in the style of Ansel Adams' black and white photography, high contrast, deep shadows, bright highlights

// OR
A landscape photographed by Peter Lindbergh, minimal color palette, strong geometric composition, natural light

The “Broken Hands” Failure
A classic. The hands are distorted, have too many fingers, or are positioned impossibly. This is especially common with Midjourney v6.0 and earlier versions of DALL-E 3.

Cause: The model’s training data has fewer high-quality hand examples, so it struggles with them in complex scenes.

Fix: Either avoid close-ups of hands, or simplify the scene to isolate the hand. Be explicit about hand position.

// RISKY
A woman playing violin, close-up shot showing her face and hands on the instrument

// SAFER
A woman playing violin, shot from the side showing her profile, hands visible on the strings, close focus on the instrument and bow

// SAFEST
Hands playing a violin, close-up, fingers precisely on the strings, clear hand structure, professional still life photography

The “Blur Leak” Failure
You asked for sharp focus on a subject, but the model rendered everything at medium sharpness. Nothing is actually blurred, but nothing is crisp either.

Cause: The model weighted “sharp focus” against other tokens and compromised.

Fix: Be more explicit about which element should be sharp and what should be blurred.

// WEAK
A portrait with sharp focus

// BETTER
A portrait with sharp focus on the eyes, soft blurred background, shallow depth of field, 85mm lens bokeh

Workflow: From Concept to Production

This is how I generate images for actual production work:

Step 1: Define Intent (2 minutes)
What is this image for? Product shot? Conceptual? Marketing? The answer determines which model to use. Product photography → DALL-E 3 or Flux. Stylized concept → Midjourney. Realistic technical → Flux.

Step 2: Write Base Prompt (5 minutes)
Start with the three-part framework. Subject, style, constraint. Keep it tight. Under 60 tokens for Midjourney, under 80 for DALL-E 3, under 120 for Flux.

// EXAMPLE: Product shot for an app interface redesign
// Using DALL-E 3
A modern smartphone on a white desk, screen showing a clean dashboard interface with data visualizations, natural light from a window on the left, shallow depth of field, professional product photography, Apple aesthetic, avoid shadows, sharp focus on the screen

Step 3: Generate Baseline (2 minutes)
Run the first version. Don’t iterate yet. Observe what the model prioritized.

Step 4: Iterate on One Variable (3 minutes per iteration)
Don’t rewrite the whole prompt. Change one thing: the angle, the lighting, the style reference, the constraints. This teaches you how the model responds.

// ITERATION 1: Try different angle
...smartphone on a white desk, shot from above at 45 degrees, screen clearly visible...

// ITERATION 2: Try different lighting
...smartphone on a white desk, shot from above at 45 degrees, backlit by window light, screen clearly visible...

// ITERATION 3: Try stricter constraint
...smartphone on a white desk, shot from above at 45 degrees, backlit by window light, screen clearly visible, no shadows on the screen, no glare, clean white background

Step 5: Lock in and Batch Generate (5 minutes)
Once you’ve landed on a prompt that works, run 4–6 variations with slight randomness. Use aspect ratio changes, minor style adjustments, or Midjourney’s seed parameter to get diverse outputs from a proven prompt.

Step 6: Post-Process (10–15 minutes)
Even good generations usually need touch-ups: crop adjustments, color grading, removal of distracting elements. Use Photoshop, Figma, or a tool like Runway for light editing.

Total time per production image: 30–45 minutes. With Flux running locally, closer to 15–20 minutes.

Avoiding the Overfitting Trap

This is the mistake I see most often in production settings: teams optimize prompts for a single model, lock in those prompts, and then panic when they want to switch models or the model version updates.

GPT-4o’s release in May 2024 broke a lot of DALL-E 3 workflows that had been tuned to older versions. Midjourney’s v6.0 to v6.1 shift in December 2024 changed how the model weighted style tokens. Flux’s emergence surprised people who had built entire pipelines around Midjourney.

Solution: Write prompts that are robust across models. Don’t rely on model-specific quirks.

// FRAGILE (Midjourney v6.0-specific)
A woman, shot on Hasselblad, volumetric god rays, color grading by Roger Deakins, 8K, cinematic

// ROBUST
A woman in dramatic lighting, photograph quality, professional color grading, clear focus

The robust version works across Midjourney, DALL-E 3, and Flux. It’s less stylistically specific, but it’s portable. For production, portability matters.

What to Do Today

Pick one image you need to generate. Write a prompt using the three-part framework: subject/action (concrete, specific), style (reference a photographer or film stock or camera), constraint (tell it what to avoid). Keep it under 60 tokens. Generate it in your model of choice. Then generate the exact same prompt in a different model. Note the differences. This teaches you how each model interprets language differently—and that’s the insight that makes you dangerous with these tools.

Batikan
· 12 min read
Share

Stay ahead of the AI curve

Weekly digest of the most impactful AI breakthroughs, tools, and strategies.

Related Articles

Cursor vs GitHub Copilot vs Claude Code: Which Wins for Production Work
Learning Lab

Cursor vs GitHub Copilot vs Claude Code: Which Wins for Production Work

Three AI coding assistants dominate production environments. This isn't a feature list. It's a breakdown of what each actually does, where it fails, and which to use for architecture, boilerplate, and debugging.

· 10 min read
Analyze Spreadsheets With Claude and GPT-4o
Learning Lab

Analyze Spreadsheets With Claude and GPT-4o

Claude and GPT-4o can analyze your spreadsheets and CSVs, but only if you structure the data correctly and ask with precision. Learn how to upload files, write analysis prompts, and avoid hallucination pitfalls.

· 2 min read
LLM Hallucinations: Why They Happen and 5 Ways to Stop Them
Learning Lab

LLM Hallucinations: Why They Happen and 5 Ways to Stop Them

Why do language models confidently invent facts? Because they predict tokens, not truth. Learn how grounding, constraint prompting, and temperature settings cut hallucination rates from 15%+ to under 5% in production systems.

· 5 min read
Freelancer AI Workflows That Actually Increase Billable Hours
Learning Lab

Freelancer AI Workflows That Actually Increase Billable Hours

AI can double your freelance output without replacing your judgment. Learn four production workflows that compress administrative tasks and recover 10+ billable hours per month.

· 6 min read
Stop Hallucinating: How RAG Actually Grounds LLMs
Learning Lab

Stop Hallucinating: How RAG Actually Grounds LLMs

RAG grounds LLMs with your actual data, eliminating hallucinations. This guide explains how RAG works in production, why basic setups fail, and the specific patterns that work — with code examples and trade-offs.

· 6 min read
Where Your Prompts Go: Data Handling in ChatGPT, Claude, and Gemini
Learning Lab

Where Your Prompts Go: Data Handling in ChatGPT, Claude, and Gemini

ChatGPT stores your data and uses it for training by default. Claude doesn't train on web conversations unless you opt in. Gemini links your chats to your entire Google account. Here's what each model does with your prompts and how to protect sensitive information.

· 4 min read

More from Prompt & Learn

Otter vs Fireflies vs tl;dv: Meeting Transcription Shootout
AI Tools Directory

Otter vs Fireflies vs tl;dv: Meeting Transcription Shootout

Three tools promise to transcribe your meetings and extract action items. Only one integrates cleanly with your workflow. Here's the real comparison: Otter vs Fireflies vs tl;dv — accuracy data, pricing breakdowns, and honest pros/cons for each.

· 4 min read
Gamma vs Beautiful.ai vs Tome: Slide Generation Tested
AI Tools Directory

Gamma vs Beautiful.ai vs Tome: Slide Generation Tested

I tested Gamma, Beautiful.ai, and Tome on production presentations. Gamma generates fastest but struggles with branding. Beautiful.ai delivers visual consistency and data handling. Tome offers flexibility and collaboration. Here's what actually works in practice — and when each tool wins.

· 11 min read
App Store Launches Spike in 2026. AI Tooling Is the Catalyst
AI News

App Store Launches Spike in 2026. AI Tooling Is the Catalyst

Appfigures reports a measurable surge in app launches in 2026, driven by AI development tools that compress timelines from weeks to days. A solo developer with Claude or Mistral can now ship what required a full engineering team in 2022.

· 3 min read
Julius AI vs ChatGPT vs Claude for Data Analysis
AI Tools Directory

Julius AI vs ChatGPT vs Claude for Data Analysis

Julius AI, ChatGPT Advanced Data Analysis, and Claude Artifacts all handle data tasks, but execution speed, pricing, and workflow differ significantly. Here's how to pick the right one for your use case.

· 4 min read
Perplexity vs Google AI vs Consensus: Which Wins for Academic Research
AI Tools Directory

Perplexity vs Google AI vs Consensus: Which Wins for Academic Research

Perplexity, Google AI, and Consensus each excel at different research tasks. Perplexity wins on recent topics with real-time synthesis. Consensus delivers unmatched citation precision for peer-reviewed work. Google Scholar provides historical depth. This breakdown shows exactly which tool to use for your next paper—and why.

· 10 min read
Google’s Travel Tools Cut Planning Time in Half. Here’s What Actually Works
AI Tools Directory

Google’s Travel Tools Cut Planning Time in Half. Here’s What Actually Works

Google released seven integrated travel tools this spring. Price tracking predicts optimal booking windows, restaurant availability pulls real-time data, and offline maps work without cell coverage. Here's which features earn trust and where to set expectations.

· 3 min read

Stay ahead of the AI curve

Weekly digest of the most impactful AI breakthroughs, tools, and strategies. No noise, only signal.

Follow Prompt Builder Prompt Builder