Understanding Seedance 2.0's input system
Before anything else, it helps to understand exactly what Seedance 2.0 can accept and where most people go wrong before they even write a prompt.
- Images: Up to 9. Used as opening frames, character references, scene environments, or style anchors.
- Video clips: Up to 3 clips, combined duration no longer than 15 seconds. Used to reference camera movements, replicate motion, or as source footage to extend or edit.
- Audio files: Up to 3 files, combined duration no longer than 15 seconds. Used for background music, sound design, or voiceover tone reference.
- Text: Your prompt, in natural language.
There is no combined file cap across the input types, so nothing stops you attaching nine images. Restraint is the discipline: ByteDance recommends 4 to 5 assets in total, and warns that using the full allowance makes it harder for the model to work out which features matter, producing style conflicts and blurry subject identification. Deprioritise audio and secondary visual references first, since those are the easiest things to describe in words. Reserve uploads for what genuinely cannot be written down: a specific face, an exact camera move, particular choreography.
Two limits that catch people out: every reference clip (video or audio) must be at least 2 seconds long, and text plus audio alone will not generate. Audio always needs a visual reference alongside it.
[Reference] Choosing the right entry point
- First and last frames: Use for single-image plus text generations. Straightforward and fast for simple shots.
- All-in-One Reference: Required for any combination of images, video, and audio. This is the only mode where @ tag referencing works. If you are mixing input types at all, this is the mode you need to be in.
Note: Smart Multi-Frame and Subject Reference are not currently available in Seedance 2.0.
The real reason your prompt got flagged
Most people assume flagged prompts contain a specific word or phrase that tripped a filter. That assumption leads to an endless loop of swapping out words, adding disclaimers, or stripping the prompt down. None of which actually solves it.
Seedance 2.0's content filter does not work that way. It uses a language model to read your entire prompt as a single scene and make a judgment about what that scene represents. It is evaluating intent and context, not scanning for individual terms.
Think of it like a security guard at a film studio versus one at a bank. The same prop gun gets waved through the studio gate without a second thought, because the context makes the purpose obvious. At the bank, it is a completely different story. The object has not changed. The context has.
What this means in practice: a word that looks sensitive in isolation can sit inside a well-constructed cinematic prompt without any issue at all. The filter reads the full picture. A prompt with no picture to read, no setting, no visual purpose, no narrative logic, gives it nothing to work with. When the filter cannot confidently interpret what is being made, it errs on the side of caution.
That is the core of almost every flagged prompt that should not have been flagged. Not bad content. Not a bad idea. Just a prompt that did not give the filter enough to understand.
The practical shift is this: a prompt that reads like a filmmaker describing a shot tends to pass. A prompt that reads like a note to a friend tends to get flagged.
One category is a hard block, not a fixable flag. Two types of content are rejected at the image scan stage before the prompt is even read, and no amount of cinematic framing will pass them:
- Real faces of identifiable people: celebrities, politicians, and public figures
- Named copyrighted characters: branded superheroes, Disney characters, recognizable fictional IP
If your generation is failing on an uploaded photo of a real person, that is a platform-level restriction, not a prompt problem.
How to write prompts that the filter reads as clearly creative
[Filter] Frame the whole scene, not just the action
The most common structure in flagged prompts is a single action with no surrounding context. Something happens, but there is no location, no visual atmosphere, no reason for the camera to be there. The filter cannot tell if this is a film set or something else.
The solution is not to remove the action. It is to build the scene around it until the intent is self-evident.
| Avoid this | Use this instead |
|---|---|
| a soldier shoots someone in the street | wide shot, war-torn Eastern European street in the 1940s, a soldier in a grey uniform fires toward an off-screen position during an active firefight, smoke rising from collapsed buildings in the background, overcast flat light, 35mm grain, documentary-style handheld framing, debris scattered across the foreground |
The action is identical. The first gives the filter one thing to evaluate. The second gives it a war context, a historical period, a camera position, and a full visual atmosphere. One reads like a report. The other reads like a film brief.
Build outward from the action and answer these four questions in your prompt:
- Where is this happening?
- What does it look like visually?
- What is the camera doing?
- What is the overall atmosphere?
Answer all four and most flagging issues resolve on their own.
[Prompt] Treat your prompt as a series of visual facts, not a story
One of the less obvious causes of flagging is prompt text that reads emotionally or narratively rather than visually. These elements add interpretive noise that the model has to work around:
- Character motivations
- Dramatic backstory
- Relationship context
- Emotional explanations
The filter cares about what the camera would see if this scene existed. It does not need to know why.
A screenplay has two parts: the scene description and the subtext. Seedance 2.0 only needs the scene description. The emotional undercurrent, the backstory, the reason the character is running. That is subtext. It belongs in the writer's head, not in the prompt.
Before including any sentence in your prompt, ask one question: if this were a real film shoot, would this sentence appear on the shot list? If not, it almost certainly does not belong in the prompt.
This discipline also improves generation quality significantly. The model executes what it can see, not what it can infer. Dense, specific, visual prompts outperform long, narrative ones almost every time.
For multi-shot sequences, give the prompt a structure. ByteDance's recommended form is a shot-by-shot storyboard in plain prose: establish the visual register once, then take each shot in turn as camera move, subject action, position, sound.
Visual register (applies throughout): soft overcast light, diffused shadows, no hard edges.
Muted naturals, cold whites, desaturated tones. 35mm grain, anamorphic lens, soft halation
on highlights. Quiet, isolated, expansive.
Shot 1: Locked-off wide shot, low angle. A lone rider on horseback crests a snowfield ridge.
Shot 2: Tracking shot from behind, handheld feel. Horse and rider gallop through deep snow,
the rider's cloak whipping in the wind.
Shot 3: Static wide, fully locked off. An empty snowfield. A wolf stands motionless on a
distant ridge.
Keep it subtitle-free. Do not generate a watermark.
Establishing the visual register once, up front, sets the cinematic tone for the whole sequence. Each shot then only has to describe what the camera sees at that moment.
Do not assign each shot a duration. It is tempting to write "duration": "3 seconds" against every beat, and it is the most common way people make their own output worse. Seedance's handling of precise timing is unstable, and pinning segments to fixed second counts can break the generation rather than tighten it. Order the shots and let the model find the pacing.
[Prompt] Use production language to establish what kind of content this is
There is a reliable pattern worth knowing: prompts that include the vocabulary of film production tend to be evaluated with significantly more latitude than prompts written in plain language.
The reason is straightforward. When a prompt contains shot types, lens specs, lighting setups, and aspect ratios, the model interprets it as a production brief. Film productions are allowed to depict dramatic, intense, and morally complex material. That context shifts how the filter weighs the content.
It works a bit like wearing a hard hat on a construction site. The hat does not change what you are doing, but it immediately signals to everyone around you what kind of environment this is and what the rules are. Two or three production terms in a prompt do the same thing: they establish the register before the filter evaluates anything else.
This does not mean loading every prompt with technical jargon. It means including enough production language that the framing is unambiguous. Here is a reference list organized by category:
Shot types
- Wide shot, medium shot, close-up, extreme close-up
- Over-the-shoulder, POV, bird's-eye view, two-shot
- Low angle, high angle, Dutch angle
Camera movements
- Dolly in / dolly out
- Tracking shot, pan, tilt, crane shot
- Locked off, low-angle push, circling shot, handheld
Lens and format
- 35mm grain, anamorphic lens, 2.39:1 aspect ratio, 1.85:1
- Vintage glass, soft halation, shallow depth of field
- Lens flare, rack focus
These are descriptive terms for the look, not output settings. Writing "2.39:1" in the prompt tells the model what kind of image you want; the ratio you actually select in your settings is 21:9, which is the nearest scope format Seedance outputs.
Lighting
- Overcast diffused light, volumetric rays through haze
- Practical lighting, side backlight, motivated shadow
- Golden hour, hard directional light, rim light
Color and tone
- Muted desaturated palette, high contrast, bleach bypass
- Cold blue tones, warm amber, crushed blacks
- Washed-out highlights, flat low-contrast grade
Adding two or three terms from any of these categories to a prompt establishes the production context clearly. That is often all it takes.
Why your prompt is getting flagged even with no sensitive content
Sometimes a generation gets flagged and there is nothing remotely sensitive in the prompt. No action, no drama, no difficult subject matter. Just a scene that should be completely fine.
This happens when the prompt is too sparse. A short, plain description without any cinematic framing, scene context, or visual specificity gives the filter an incomplete picture. It is like sending someone a single sentence from the middle of a script with no title page, no scene heading, and no stage direction. They cannot tell if it is a thriller, a comedy, or something else entirely. Incomplete pictures do not get approved, they get held.
| Avoid this | Use this instead |
|---|---|
| a person holds a knife | close-up, a chef's hands grip a cleaver over a wooden chopping board, motion blur as the blade comes down on a whole fish, kitchen environment with steam rising in the background, warm tungsten lighting, shallow depth of field, cinematic food documentary style |
Same object, completely different read. The first gives the filter one object and one action. The second gives it an environment, a purpose, a production context, and a camera description.
The fix is straightforward. Even a simple scene benefits from these additions:
- A specific setting and time period
- An atmosphere or mood descriptor
- A camera position or shot type
- One or two production language terms to establish context
The @ reference system: why uploads fail silently
A significant number of Seedance 2.0 problems are not filter issues at all. They are reference issues. Users upload images and video clips expecting the model to understand what each file is for, and the model does not assume anything.
Uploading a video does not make it a camera reference. Uploading an image does not make it the opening frame. Think of it like handing a stack of unlabelled photos to a director on set. They can see what is in each picture, but they have no idea which one you want as the opening frame, which is a costume reference, and which is just background inspiration. Without labels, they guess. Seedance 2.0 is no different. Every uploaded file needs an explicit role stated in the prompt using @ tags, or it gets processed ambiguously.
Activate @ tagging by typing @ in the prompt field (a reference selector will appear) or by clicking the @ icon in the toolbar. Then state exactly what each file is for before describing the action.
| What you want | How to write it |
|---|---|
| Set the opening frame | @Image 1 as the first frame |
| Reference camera movement | reference all camera movements from @Video 1 |
| Match character appearance | character appearance based on @Image 2 |
| Set background music | use @Audio 1 as the background score |
| Replicate motion choreography | replicate the movement style from @Video 1 |
| Define the environment | the setting is based on @Image 3 |
| Reference voiceover style | match the voiceover tone of @Video 2 |
When running multiple references, list every role assignment at the top of the prompt before any scene description. Any @ tag without an explicit role is one of the most reliable causes of inconsistent or unexpected output.
How Seedance 2.0 reads image uploads (and where it breaks down)
[Image] When you upload a character image, let it do the work
There is a natural temptation, when uploading a character reference image, to describe that character in the prompt as well. Resist it. The image has already done that work. Repeating it in text does not reinforce the output. It introduces a second, competing layer of information the model has to reconcile.
What the prompt needs to do is describe the scene clearly:
- What is happening in the shot
- How the camera is positioned
- What the environment looks like
- How the shot moves
The image handles appearance. The prompt handles everything the camera sees.
This is also where flagging becomes an image issue. Seedance 2.0 applies stricter evaluation to any prompt where a character is likely to be read as a minor. Words that signal youth ("child," "kid," "young," "boy," "girl") trigger heightened scrutiny across the entire prompt, not just the phrase where they appear, and regardless of what any uploaded image shows.
The cleaner approach is to describe characters by their role in the scene. The image handles everything about who they are. The prompt handles what happens and what the camera sees.
| Avoid this | Use this instead |
|---|---|
| a young boy watches a building burn down | a small figure in a dark coat stands at the edge of a crowd watching a building consumed by fire, medium shot from behind, warm orange glow from the flames, thick smoke rising into a dark sky, cinematic, 2.39:1 anamorphic, documentary style |
The word "young" in the first version raises the sensitivity threshold for the entire prompt. The second version lets the uploaded image carry the character's identity. The prompt describes only what the camera sees.
[Image] Flagged before you even submitted? The image itself is the issue
There is an image evaluation layer in Seedance 2.0 that runs independently of the prompt filter. If an uploaded image contains a clearly visible face, it can trigger a rejection before the model processes any text at all. This explains the pattern where rewriting the prompt repeatedly makes no difference. The prompt is not being read.
How to get around it:
- Face away from camera. Frame the subject from behind or at an angle where facial features are not visible. Clothing, posture, hair, and environment carry enough information for most reference purposes.
- Go wide. Pull the shot wide enough that the figure reads as a silhouette or small element in the frame rather than the dominant subject.
- Use illustration over photography. Swap photographic references for illustrated or stylized ones. The evaluation applies differently and illustrated images pass more reliably.
- Shift the reference purpose. Use the image for clothing, setting, color palette, or spatial composition rather than for the face or identity.
If a generation keeps failing with no clear prompt-side explanation, adjust the image before rewriting any text.
Advanced techniques worth knowing
[Advanced] Extending existing footage
Say which direction you want, then describe what the new segment contains. Extension works both ways: you can generate what happens after a clip, and what happened before it.
Generate the content after @Video 1. [Description of the new segment.]
Extend @Video 1 backward. [Description of what leads into it.]
Do not write "reference @Video 1" here. This is an editing task, not a reference task, and the word reference pushes the model to classify it as one, so instead of continuing your clip it generates a new video that merely resembles it. Refer to the clip plainly as @Video 1.
The original footage is not regenerated, so the part you already like survives untouched. Two things to plan around: the join can show a small jump (fix it in your editor by trimming about six frames off the end of the outgoing clip and one off the start of the incoming one), and quality decays if you chain extensions repeatedly, showing up first as mottled colour on faces. Keep chains short.
[Advanced] Bridging two clips with a generated middle
Generate a connecting scene between @Video 1 and @Video 2. The transition shows [describe the action, environment, or movement that links the two clips].
The generated segment will be inserted between the two uploaded clips, so describe it as if it were its own short scene.
[Advanced] Copying camera style from a reference clip
Upload any clip with the movement style you want and name it directly:
Reference all camera movements from @Video 1, including the low-angle circling shot and the push into close-up.
The word "reference" is correct here, because this genuinely is a reference task: you are making a new video that borrows a camera style. Only drop the word when you are editing or extending the uploaded clip itself.
The model pulls movement rhythm, framing logic, and transition pacing from the reference clip. Precise technique names are helpful but not required. Keep each shot to one camera move, though: stacking a push, an orbit, and a pan into a single shot is a reliable way to destabilise the image.
[Advanced] Syncing edits to music
(Rhythm and tempo from @Audio 1.) Scene transitions land on the beat. Apply the visual style change at each cut.
Seedance 2.0 can synchronize cuts, lighting changes, and scene transitions to the rhythm of an uploaded audio track. Describe the sync in beats, not seconds. The model's handling of precise timecodes ("cut at the 6-second mark") is unstable, and pinning events to exact second counts can degrade the output rather than tighten it. Write each cut as its own shot and let the beat carry the timing.
[Advanced] Using audio from an existing video clip
No separate audio upload is needed if the clip you are already referencing has the audio you want:
Use the audio embedded in @Video 1 as the background score.
[Advanced] Constraint words: ruling out artifacts nobody asked for
Separate from the content filter, there is a class of failure where the generation succeeds but the output contains something you never requested: subtitles burned into the frame, a stray logo, another platform's watermark. ByteDance's own guidance is to close the prompt with explicit constraint sentences:
Keep it subtitle-free. Avoid generating any text or subtitles.
Do not generate a logo. Do not generate a watermark.
The character's face stays consistent with no deformation. Motion is smooth, with no stutter or flicker.
Be realistic about what this buys you. Constraint lines reduce the probability of stray subtitles and watermarks. They do not eliminate it. Two things help more than the words do:
- Strip text out of your reference assets before uploading. If a reference image or clip has text in it that you do not need, remove it first. Text in an input is the most reliable way to get text in an output.
- Generate in landscape if you can. Spurious subtitles appear significantly less often in landscape than in portrait. If the final piece is vertical, it is often worth generating 16:9 and cropping down afterwards.
Keep constraints short and tied to the failure you are actually seeing. A long, generic list of everything that could go wrong tends to get diluted or ignored.
[Community] One thing people have been experimenting with
Some users have reported better pass rates by writing their scene description in Chinese while keeping any dialogue or on-screen text in English. The reasoning is that Seedance 2.0 was originally developed with strong Chinese-language training, so prompts written in Chinese may be interpreted with slightly different filter thresholds.
This is not a guaranteed fix and results vary, but if a well-constructed prompt keeps getting flagged despite solid cinematic framing, it is a low-effort thing to try. Run your scene description through any translator, keep the dialogue lines in English, and see if the output differs.
One documented cost to weigh against it. ByteDance's guidance is explicit that mixing Chinese and English in a prompt should be avoided, proper nouns aside, and that the language of dialogue in particular must stay consistent. So a Chinese scene description with English dialogue is exactly the mix the model owner warns about, and the price tends to show up as degraded pronunciation in the spoken lines. If your video has no dialogue, the risk is low. If it does, test it before you rely on it.
Input limits at a glance
| Input type | Limit |
|---|---|
| Images | Up to 9. JPEG, PNG, WEBP, BMP, TIFF, GIF, HEIC, HEIF. Max 30MB each |
| Video clips | Up to 3. Each 2-15s, 15s combined. MP4/MOV, 24-60fps, max 200MB each |
| Audio files | Up to 3. Each 2-15s, 15s combined. MP3/WAV, max 15MB each |
| All files combined | No combined cap. But 4-5 assets total is the recommended range |
| Not supported | Text + audio with no visual, or audio alone |
| Generation duration | 4 to 15 seconds |
Before you generate: a quick checklist
- Am I using All-in-One Reference mode? (Required any time you mix input types)
- Does every @ tag have a role explicitly stated in the prompt?
- Does the prompt describe a visual scene, not a narrative or backstory?
- Have I included at least one production language element: a shot type, camera move, or lighting description?
- Does every sentence describe what the camera sees or establish a cinematic context?
- Does the prompt refer to characters by role rather than age?
- Is my reference image free of prominent faces, or cropped/illustrated?
- Is my reference image free of real identifiable people or named copyrighted characters?
- Am I using as few references as the shot actually needs? (4 to 5 is the recommended range; there is no combined cap, but using the full allowance degrades results)
- Are my shots ordered (Shot 1, Shot 2) rather than timestamped?
- Have I closed the prompt with constraints? ("Keep it subtitle-free. Do not generate a watermark.")
FAQs
The filter needs enough visual context to confidently interpret what is being made. Short, plain prompts without cinematic framing or scene detail give it an incomplete picture, so it defaults to caution. Adding setting, atmosphere, camera position, and a sense of the production context usually resolves this.
If prompt edits are making no difference, the image is likely the issue. Seedance 2.0 runs face detection on uploads before the prompt filter activates. If a face is detected in a reference image, the generation is rejected at that stage. Edit the image, crop it, widen the shot, or use an illustration, before revising the prompt further.
This is a hard platform-level block, not a prompt issue. Seedance 2.0 scans uploaded images for identifiable real faces before the prompt is processed. Photos of celebrities, public figures, or anyone with a recognizable likeness are rejected at that stage. Switching to an illustrated reference or a non-identifiable image is the only way around it.
Yes. Production language signals to the model that this is a film creation context, which is evaluated with more latitude than plain-language descriptions. Including shot types, lens specs, and lighting descriptions shifts how the filter interprets the intent of the whole prompt.
First and Last Frames is for single-image plus text generations. All-in-One Reference is required any time you combine multiple input types: images, video clips, and audio. It is also the only mode where @ tagging works.
Yes. Tag it multiple times with different roles. For example: @Image 1 as the first frame, environment and lighting also based on @Image 1. Each role needs to be stated explicitly.
Upload it and say "Generate the content after @Video 1", then describe the new segment. Extension also works backward, for generating what leads into a clip. The original footage is not regenerated, so what you already have survives intact. Do not write "reference @Video 1" for this: the word pushes the model to treat it as a reference task and produce a lookalike video instead of continuing yours.
There is no need, and no official support for it. ByteDance's documented ideal is a plain-prose storyboard: a visual register up front, then Shot 1, Shot 2, Shot 3, each describing a camera move, an action, a position, and its sound. Structure absolutely helps; JSON syntax specifically does not. And if you do reach for JSON, resist giving each shot a duration field, because pinning shots to exact second counts is unstable and tends to degrade the result.
Close your prompt with explicit constraint sentences: "Keep it subtitle-free. Avoid generating any text or subtitles." and "Do not generate a logo or watermark." These reduce the probability without eliminating it. Two things help more: strip any unnecessary text out of your reference assets before uploading, and generate in landscape where you can, since stray subtitles are significantly less common in landscape than in portrait. Crop to vertical afterwards if you need to.
Fewer than you are allowed. ByteDance recommends 4 to 5 assets in total: 1 to 2 character images, 1 scene image, 1 camera-movement video, 1 audio clip. Beyond that the model struggles to work out which features take priority, and you get style conflicts, blurry subject identification, and output that drifts from the brief. Secondary style references and mood descriptors are almost always better handled as text in the prompt than as uploaded files. One hard edge to know about: once more than four reference people are involved, stability drops sharply and you start seeing the wrong headcount or duplicated characters.
Start generating on Morphic
The best way to test what is covered here is to open a generation and try it. Seedance 2.0 on Morphic gives you full multimodal access: images, video, audio, and text, with nothing to install.