Start Image Requirements: Kling 3, Seedance 2.5, Veo 3.1
Short answer: the start-image rules depend on the model and on the route you run it through.
- Kling 3.0: JPG or PNG, at least 300 px per side, width ÷ height between 0.4 and 2.5, and 10 MB to 50 MB depending on the route.
- Seedance 2.5: 300 to 6000 px per side, width ÷ height between 0.4 and 2.5, under 30 MB, and the video takes the shape of your image.
- Veo 3.1 / 3.1 Fast: 16:9 or 9:16, 720p or larger, and 8 MB to 20 MB depending on the route.
If you want one image that works everywhere, export a JPEG at 1280 × 720 (or 720 × 1280), under 5 MB. The rest of this page shows where every number comes from, so you can check the one that applies to you.
I put this together because most size-related image-to-video upload failures come down to one of four things: file size, pixel size, aspect ratio or file format. Each provider documents those rules, but in different places, in different units, and sometimes with different numbers for the same model. Kling's own API documents 50 MB, for example, while Replicate's Kling 3.0 Omni endpoint documents 10 MB. All values below were read from the providers' own pages on 27 October 2026. They change, so the source of each number is linked.
Start-image limits by model and route
"Route" means the service that actually receives your file: the model maker's own API, a model host such as Replicate or fal, or an app built on one of them.
Kling 3.0
| Route | Formats | Max file size | Min pixels | Aspect ratio (width ÷ height) |
|---|---|---|---|---|
| Kling API, Kling 3.0 image-to-video | JPG, JPEG, PNG | 50 MB | 300 px per side | 1:2.5 to 2.5:1 (0.4 to 2.5) |
| Replicate, Kling 3.0 Omni | JPG, JPEG, PNG | 10 MB | 300 px | 1:2.5 to 2.5:1 |
| fal, Kling 3.0 Pro image-to-video | not listed | 50 MB | 300 × 300 px | 0.40 to 2.50 |
On Replicate, the output aspect_ratio setting (16:9, 9:16 or 1:1) is described as "Required when not using start frame or video editing." With a start image, plan your framing in the image itself.
Seedance 2.5
| Route | Formats | Max file size | Pixels per side | Aspect ratio (width ÷ height) |
|---|---|---|---|---|
| BytePlus ModelArk, Seedance 2.5 | JPEG, PNG, WebP, BMP, TIFF, GIF, HEIC, HEIF | under 30 MB | 300 to 6000 px | 0.4 to 2.5 |
| fal, Seedance 2.5 image-to-video | JPEG, PNG, WebP, BMP, TIFF, GIF, HEIC, HEIF | 30 MB | not listed | not listed |
| Replicate, Seedance 2.5 | not listed | not listed | not listed | not listed |
Seedance has one rule that trips people who are used to picking an output ratio. In first-frame mode the output follows the shape of your image. BytePlus says ratio "must be adaptive" for first-frame and first-and-last-frame generation, Replicate says these modes "require 'adaptive'", and fal fixes aspect_ratio to "auto" for image-to-video. If you need a 9:16 video, give Seedance a 9:16 image.
BytePlus also states that Seedance 2.5 "does not support directly uploading reference images or videos containing real human faces", and lists three approved routes for portrait work. That is a content rule, not a size rule, so resizing will not fix it.
Veo 3.1
| Route | Max file size | Resolution | Aspect ratio |
|---|---|---|---|
| Google Cloud, Veo 3.1 and Veo 3.1 Fast | 20 MB | input resolutions 720p, 1080p | "Supported aspect ratios: 9:16, 16:9" |
| fal, Veo 3.1 Fast image-to-video | 8 MB | "720p or higher" | 16:9 or 9:16; other shapes "will be cropped to fit" |
| Replicate, Veo 3.1 Fast | not listed | "Ideal images are … 1280x720 or 720x1280" | 16:9 or 9:16 |
Veo is the strictest of the three on shape. Kling and Seedance accept anything between 0.4 and 2.5. Veo expects 16:9 or 9:16, and at least one route crops anything else, so a square product photo can lose its edges.
Where the sources disagree
These are the conflicts I found. When two numbers apply to the model you use, the one that counts is the limit of the route your file actually goes through.
- Kling 3.0 file size: 50 MB or 10 MB. Kling's own API and fal (Kling 3.0 Pro endpoint) document 50 MB. Replicate's Kling 3.0 Omni endpoint documents 10 MB. A 20 MB PNG passes one and fails the other.
- Veo 3.1 Fast file size: 20 MB or 8 MB. Google Cloud documents 20 MB for image-to-video input. fal's Veo 3.1 Fast endpoint documents 8 MB.
- Veo 3.1 minimum size: stated three ways. Google lists 720p and 1080p as input resolutions, fal asks for "720p or higher", and Replicate calls 1280 × 720 "ideal" without stating a hard minimum.
- Seedance 2.5 limits: documented on two routes only. BytePlus and fal both say 30 MB. Replicate's schema lists no size, format or pixel limit. "Not listed" does not mean "no limit". It means the page does not tell you.
- Apps add their own limits on top. An app that runs these models may have a smaller upload cap than the model route behind it. imgmov is an example, below.
Safe start image for Kling, Seedance and Veo
If you do not know which route an app uses, prepare the image for the strictest value in each column:
| Check | Strictest documented value | What to export |
|---|---|---|
| Format | JPG, JPEG or PNG on Kling's API and Replicate's Kling endpoint | JPEG (or PNG for graphics) |
| File size | 8 MB on fal Veo 3.1 Fast; 5 MB if you upload through imgmov | Under 5 MB |
| Shape | 16:9 or 9:16 for Veo 3.1 | Exactly 16:9 or 9:16 |
| Minimum size | 720p for Veo 3.1 | Short side at least 720 px |
| Maximum size | 6000 px per side on BytePlus Seedance 2.5 | Long side at most 6000 px |
The arithmetic for the aspect-ratio rule: divide width by height. 1280 ÷ 720 ≈ 1.78 and 720 ÷ 1280 ≈ 0.56, both inside Kling's and Seedance's 0.4 to 2.5 range, and both exactly the 16:9 and 9:16 shapes Veo expects. A 3:1 banner (3.0) fails Kling and Seedance. A 21:9 frame (≈ 2.33) passes Kling and Seedance but does not match Veo's 16:9 or 9:16. A 1:1 square (1.0) passes Kling and Seedance, but Veo routes expect 16:9 or 9:16 and fal crops other shapes.
So the safe export is 1280 × 720 JPEG for landscape or 720 × 1280 JPEG for vertical, quality around 85 to 90, under 5 MB. If your subject does not fit the new shape, pad the canvas (add background) rather than stretch the photo, so faces, logos and packaging keep their proportions.
Check your image in one minute
You do not need an account or an upload to check the four numbers:
- Windows: right-click the file → Properties → Details shows Dimensions and Size.
- macOS: in Terminal,
sips -g pixelWidth -g pixelHeight photo.jpg; Finder's Get Info shows the file size. - Any system with ImageMagick:
magick identify photo.jpgprints format and pixel size.
Then compare: width ÷ height between 0.4 and 2.5 (16:9 ≈ 1.78 or 9:16 ≈ 0.56 for Veo), short side at least 300 px (720 px for Veo), and file size under the route's limit.
Matching a failed upload to its cause
| What you see | Likely cause | Fix |
|---|---|---|
| Rejected before or during upload for size (imgmov shows "File size exceeds 5MB limit.") | File over the route's cap (5, 8, 10, 20, 30 or 50 MB) | Re-export as JPEG at 1280 × 720 or 720 × 1280 |
| Rejected on a very wide or very tall image | Width ÷ height outside 0.4 to 2.5 | Pad or crop to 16:9 or 9:16 |
| Veo output is missing the edges of your photo | Shape other than 16:9 or 9:16 was cropped to fit | Pad to 16:9 or 9:16 before uploading |
| Seedance output has a different shape from the one you picked | First-frame mode follows the image shape (adaptive) | Make the image the shape you want |
| HEIC photo from an iPhone is refused | Kling's API and Replicate's Kling endpoint accept JPG/PNG only; apps vary | Export as JPEG |
| BytePlus says the image "may contain real person" | Seedance real-face rule (code 1 below) | Not a size problem; see BytePlus's portrait routes |
| BytePlus says "Invalid Base64 image URL" | Bad Base64 input, corrupted data or unsupported format (code 2 below) | Check the encoding, or re-export as a standard JPEG or PNG |
The two BytePlus codes, as listed on its error codes page:
1. InputImageSensitiveContentDetected.PrivacyInformation 2. InvalidImageURL.InvalidFormat - Code 1 message: "The request failed because the input image may contain real person."
- Code 2 message: "Invalid Base64 image URL". BytePlus explains: "The Base64 format may be incorrect, the image data may be corrupted, or the format may not be supported."
What imgmov does with your start image
imgmov runs Kling 3.0 Omni, Seedance 2.5 and Veo 3.1 Fast through Replicate. This is what its upload step does, read from the current code rather than from marketing copy:
- It accepts JPEG, PNG, WebP and GIF. HEIC is not accepted as-is: depending on the browser it is rejected or converted, so export iPhone photos as JPEG first.
- Images other than JPEG and PNG (WebP, GIF and anything else your browser can decode) are converted to PNG in your browser before upload. An animated GIF becomes a single still.
- The 5 MB upload limit is checked after that conversion. A large photo saved as WebP can grow past 5 MB as a PNG, so send JPEG instead.
- There is no dimension or aspect-ratio check before the job is sent. An image that is too small or too wide passes the upload and fails later at the model, so check the four numbers yourself.
That makes imgmov's upload cap the smallest number on this page, which is why the safe spec above ends at 5 MB. Once your image is ready, you can try image-to-video on imgmov or compare the models in the video model benchmark.
How this page is maintained
Each value was read on 27 October 2026 from the linked page, and the Replicate rows reflect the schemas shown on that date. Google's Veo 3.1 page showed "Last updated 2026-10-26 UTC" when it was read. When a provider changes a number, this page should change with it; if you find a mismatch, the linked source wins.
Related Reading
- Kling v3 AI Video Generation: Complete Guide and Tips
- Google Veo 3.1 AI Video Generation: Complete Guide
- Image-to-Video AI: Turn Your Photos Into Videos
- Seedance vs Kling
Resize your start frame in the browser to crop it or add a background before making a video.
Continuing a clip? Extract its last frame and check the next cut.