Blog

Comparison5 min read

Wan 2.7 vs Seedance 2.0: Who Obeys the Prompt?

Wan 2.7 rewrites your prompt by default and charges per second. Seedance 2.0 ships native audio and 21:9 for pennies but caps at 720p. Pick based on what you're willing to give up.


The actual tradeoff

You have a prompt-heavy workflow. You're not picking between good and bad. You're picking between two different philosophies about what the model should do with your words.

Wan 2.7 runs your prompt through an expansion step before generation. It charges per second and caps at 1080p. Seedance 2.0 takes your prompt literally, generates native audio, supports 21:9, and runs on unit-based pricing that works out cheaper on most clips. It caps at 720p and has no negative prompt at all.

That's the whole decision.

Wan 2.7 versus Seedance 2.0 head to head spec cards
Wan 2.7 versus Seedance 2.0 head to head spec cards

Spec comparison

FeatureWan 2.7 T2VSeedance 2.0 T2V
Endpoint`fal-ai/wan/v2.7/text-to-video``bytedance/seedance-2.0/text-to-video`
Resolution720p, 1080p480p, 720p
Duration2-15s (integer)4-15s or `auto` (string)
Aspect ratios16:9, 9:16, 1:1, 4:3, 3:4auto, 21:9, 16:9, 4:3, 1:1, 3:4, 9:16
Native audioAuto-generated BGM; supports `audio_url` driver`generate_audio: true` by default
Negative promptYes (max 500 chars)No parameter
SeedYes (0 to 2147483647)Yes (results still vary slightly)
Prompt rewriting`enable_prompt_expansion` (default true)None
Pricing (T2V)$0.10/sec$0.014/unit
Prompt expander rewrite tax diagram
Prompt expander rewrite tax diagram

What enable_prompt_expansion actually does to you

This is the footgun. Wan 2.7's expansion is on by default. You submit A courier runs across a rooftop at dusk. The model rewrites it internally into something like A young delivery person in dark athletic wear sprints across a rain-slicked urban rooftop as the sun sets behind the skyline, cinematic wide shot..., then generates from the rewritten version.

That's fine for one-off clips. For prompt-heavy work where you're iterating against specific words, it's noise. You tune courier and the model trades it for delivery person. Set enable_prompt_expansion: false and you get deterministic behavior back. The actual_prompt field in the response tells you what the model actually saw.

Seedance doesn't rewrite anything. What you send is what gets rendered.

When Wan 2.7 wins

  • You need 1080p. Seedance caps at 720p and that's that.
  • You need negative_prompt. Seedance has no equivalent.
  • You're driving lip-sync or music timing via audio_url. Seedance has no audio input.
  • Your duration is fixed as an integer and you want to A/B test 3s vs 4s.

When Seedance 2.0 wins

  • 21:9 cinematic framing. Wan doesn't offer it.
  • Native dialogue and SFX in one call. Wan auto-generates background music but not speech.
  • Cost-sensitive iteration. Unit pricing ends up cheaper than $0.10/sec on most clips.
  • You want the model to pick the duration via duration: "auto".

Honest weaknesses

Wan 2.7: the expansion default has burned people. The 1080p tier costs 10x what Seedance costs per clip. Audio is background-music-only unless you feed a driving track.

Seedance 2.0: 720p ceiling is a hard wall for premium deliverables. No negative prompt means artifacts you want to exclude have to be handled by prompt engineering alone. Seed reproducibility is "close," not exact.

Different input shapes

Wan 2.7, deterministic prompt, expansion off:

PYTHON
1import fal_client
2
3result = fal_client.run(
4 "fal-ai/wan/v2.7/text-to-video",
5 arguments={
6 "prompt": "A courier runs across a rain-slicked rooftop at dusk, neon cyan rim light",
7 "negative_prompt": "daylight, motion blur, low quality",
8 "resolution": "1080p",
9 "aspect_ratio": "16:9",
10 "duration": 8,
11 "enable_prompt_expansion": False,
12 "seed": 42,
13 },
14)
15print(result["actual_prompt"])

Seedance 2.0, audio on, 21:9, model-chosen length:

PYTHON
1import fal_client
2
3result = fal_client.run(
4 "bytedance/seedance-2.0/text-to-video",
5 arguments={
6 "prompt": "A courier runs across a rain-slicked rooftop at dusk, neon cyan rim light, distant city hum and footsteps",
7 "resolution": "720p",
8 "aspect_ratio": "21:9",
9 "duration": "auto",
10 "generate_audio": True,
11 },
12)

Note the shape difference. Wan 2.7's duration is an integer. Seedance's is a string enum including auto. Your pipeline code has to branch on that.

Wan versus Seedance winner per constraint chart
Wan versus Seedance winner per constraint chart

Verdict

If you care about 1080p and precise exclusion via negative prompts, Wan 2.7, but turn expansion off. If you care about cost per clip, 21:9, or native dialogue audio, Seedance 2.0 and live with 720p.