AI video clip length limits, by model and plan
Veo 3.1 makes clips of 4, 6 or 8 seconds, in Google Flow and in Google’s Vertex AI API. On the API a Veo clip can be extended 7 seconds at a time, to 37 seconds at most. For a longer video, generate several clips and join them. Below is the limit for every model we could check from Google, OpenAI, Runway, Kling, ByteDance and MiniMax, each read from the vendor’s own page.
The short answer
Veo 3.1: 4, 6 or 8 seconds per clip. Veo 3.1, Veo 3.1 Fast and Veo 3.1 Lite all allow the same three lengths, in Google Flow and on Google’s API. On the API, reference image to video is 8 seconds only.
Extending Veo: 7 seconds at a time, up to 37 in total, on Google’s API. The clip you extend must be an MP4 of 1 to 30 seconds at 24 fps. Gemini Omni Flash (in preview) extends to 40 seconds. In Flow, Veo 3.1 Quality and Fast have no Extend, and Veo 3.1 Lite’s Extend takes 8-second videos only.
Gemini Omni Flash 1.1 in Flow: 4, 6, 8 or 10 seconds.
Longest single clip still available here: 30 seconds, from Kling 4.0 and Seedance 2.5, according to Runway’s page for its hosted copies.
Sora 2 and Sora 2 Pro on OpenAI’s API were shut down on 24 Sep 2026, per OpenAI’s deprecations page.
Plans: no vendor page we could read sets a different clip cap per plan. Limits are set per model.
Clip length limits by vendor, model and plan
One row per model and the place you use it. “One generation” is the longest clip a single request makes; “after extending” is the longest clip once extensions are chained. Scroll sideways on a phone.
| Vendor and model | Where | Plan | Clip length | Conditions and the page’s wording | Source |
|---|---|---|---|---|---|
| Google Veo 3.1 | Vertex AI API | API (Vertex AI / Gemini Enterprise Agent Platform; no consumer plan) | 4, 6 or 8 s | Reference-image-to-video supports 8 seconds only. Output up to 4K. | Google Cloud: Veo 3.1 model page |
| Google Veo 3.1 Fast | Vertex AI API | API (Vertex AI / Gemini Enterprise Agent Platform; no consumer plan) | 4, 6 or 8 s | Output up to 1080p (no 4K). | Google Cloud: Veo 3.1 model page |
| Google Veo 3.1 Lite | Vertex AI API | API (Vertex AI / Gemini Enterprise Agent Platform; no consumer plan) | 4, 6 or 8 s | Reference images not supported. | Google Cloud: Veo 3.1 model page |
| Google Veo 3.1 (extend video) | Vertex AI API | API (Vertex AI / Gemini Enterprise Agent Platform; no consumer plan) | Up to 37 s in total | Input must be MP4, 1 to 30 seconds, 24 fps, 720p/1080p/4k, 9:16 or 16:9. | Google Cloud: Extend videos |
| Google Gemini Omni Flash (extend video) | Vertex AI API | API (Vertex AI / Gemini Enterprise Agent Platform; no consumer plan) | Up to 40 s in total | Google Cloud: Extend videos | |
| Google Veo 3.1 Quality | Google Flow | Google Flow (AI Plus, Pro, Ultra); the page names no per-plan clip cap | 4, 6 or 8 s | No Ingredients, Extend or Video to Video on this model. | Flow Help: models |
| Google Veo 3.1 Fast | Google Flow | Google Flow (AI Plus, Pro, Ultra); the page names no per-plan clip cap | 4, 6 or 8 s | Ingredients/References: 8s videos only. No Extend. | Flow Help: models |
| Google Veo 3.1 Lite | Google Flow | Google Flow (AI Plus, Pro, Ultra); the page names no per-plan clip cap | 4, 6 or 8 s | Ingredients/References and Extend: 8s videos only. | Flow Help: models |
| Google Gemini Omni Flash 1.1 | Google Flow | Google Flow (AI Plus, Pro, Ultra); the page names no per-plan clip cap | 4, 6, 8 or 10 s | Video to Video editing: up to 10s. | Flow Help: models |
| OpenAI Sora 2 Shut down 24 Sep 2026 | OpenAI API (Videos API) | API (pay per second) | Up to 20 s | Up to six extensions of up to 20 seconds each, 120 seconds total. | OpenAI: video generation guide |
| OpenAI Sora 2 Pro Shut down 24 Sep 2026 | OpenAI API (Videos API) | API (pay per second) | Up to 20 s | Up to six extensions of up to 20 seconds each, 120 seconds total. 1080p output. | OpenAI: video generation guide |
| Runway Gen-4.5 | Runway API | API (credit-based; the page names no per-plan clip cap) | 2 to 10 s | Runway Python SDK source | |
| Kling Kling 4.0 | Runway API | API (credit-based; the page names no per-plan clip cap) | 3 to 30 s | Runway API: models | |
| Kling Kling 3.0 Pro | Runway API | API (credit-based; the page names no per-plan clip cap) | 3 to 15 s | Runway API: models | |
| Kling Kling 2.5 Turbo Pro | Runway API | API (credit-based; the page names no per-plan clip cap) | 5 or 10 s | Runway API: models | |
| ByteDance Seedance 2.5 | Runway API | API (credit-based; the page names no per-plan clip cap) | Up to 30 s | Runway API: models | |
| MiniMax Hailuo 2.3 | MiniMax API | API | 6 or 10 s | 10 seconds only at 768P; 1080P only at 6 seconds. | MiniMax API reference |
| MiniMax Hailuo 02 | MiniMax API | API | 6 or 10 s | 10 seconds only at 768P; 1080P only at 6 seconds. | MiniMax API reference |
Sora 2: shut down on the API
OpenAI’s deprecations page lists the Sora 2 video generation models and the Videos API as shut down on 24 Sep 2026. The two Sora rows stay in the table as a record: OpenAI’s video generation guide said both sora-2 and sora-2-pro support 16- and 20-second generations, and that a video could be extended up to six times, by up to 20 seconds each, to 120 seconds in total.
The consumer Sora app’s limits by plan are not stated here: OpenAI’s help centre refuses automated reading, so we have no page to quote.
How to make a longer video from short clips
A scene longer than one generation is several clips joined end to end. With Veo that means pieces of up to 8 seconds, or 37 seconds at most if you extend on Google’s API.
- Generate the pieces in one shape: all 16:9 or all 9:16, ideally from the same model and settings, so they match when joined.
- Join them in Merge videos online, free in your browser, with nothing uploaded. It is built for up to 10 clips at a time, so ten 8-second Veo clips make 80 seconds. Clips that match and are joined with a straight cut are copied without re-encoding; a crossfade, slide or wipe shortens the video by its length at each join.
- If the clips carry Google’s visible mark, tick the box in the merger and it is taken off each clip in the same pass. Google’s invisible SynthID stays in the file. Only do this with clips you own or have the right to edit.
The step-by-step guide to joining Veo clips covers the order, the transitions and what the merged file keeps. A longer video is also a bigger file: if yours has to fit a size limit, how long a video fits in 25 MB gives the length at each quality and resolution.
Vendors not covered
These were looked for, but their own pages could not be read by our checker or state no clip length, so no limit is given for them here, not even from press reports.
- OpenAI Sora app (Plus, Pro): OpenAI’s help centre refuses automated reading (HTTP 403), so the app’s clip lengths by plan are not stated here.
- Runway Gen-4 Turbo, Gen-4 and Runway’s plans: Runway’s help centre refuses automated reading (HTTP 403), and neither its SDK nor its models page gives a range for Gen-4 Turbo.
- Kling, on its own site: Kling’s API docs load only through JavaScript. The Kling rows in the table come from Runway’s page for its hosted copies.
- ByteDance Seedance on BytePlus ModelArk: The pages return navigation only; the text is drawn by script. The Seedance row comes from Runway’s page.
- Luma: Its docs and pricing state no maximum length. Pricing is per 5 or 10 second unit, which is not a limit.
- Pika: Its pricing page states no clip length for any plan or model.
- Gemini app (consumer): Gemini Apps help pages state no clip length in seconds. The Flow rows come from Flow’s own models page and cover Flow only.
- Adobe Firefly: Adobe’s help site refuses automated reading (HTTP 403).
Frequently asked questions
How long can a Veo 3.1 video be?
One generation is 4, 6 or 8 seconds, in Google Flow and in Google's Vertex AI API, for Veo 3.1, Veo 3.1 Fast and Veo 3.1 Lite. On the API, reference image to video makes 8-second clips only. Google's Extend videos page says an extension adds 7 seconds and a Veo video can be extended up to 37 seconds; the clip you extend must be an MP4 of 1 to 30 seconds at 24 fps. In Flow, the models page lists no Extend for Veo 3.1 Quality or Fast, and limits Veo 3.1 Lite's Extend to 8-second videos. Pages read 5 Nov 2026.
How do I make an AI video longer than 8 seconds?
Either extend it, where the model offers that (Veo on Google's API, up to 37 seconds), or generate the scene as several clips and join them. Clipwipe's free merger joins clips in your browser without uploading them and is built for up to 10 at a time, so ten 8-second Veo clips make 80 seconds, less any transitions. If the clips carry Google's visible mark, it can take that off each clip in the same pass.
Is Sora 2 still available, and how long were its clips?
Not through OpenAI's API: OpenAI's deprecations page lists the Sora 2 video generation models and Videos API as shut down on 24 Sep 2026. Before that, OpenAI's guide said sora-2 and sora-2-pro support 16- and 20-second generations, and that a video could be extended up to six times by up to 20 seconds each, 120 seconds in total. The Sora app's limits by plan are not stated here, because OpenAI's help centre could not be read by our checker.
Does a paid plan give you longer AI video clips?
Not on any vendor page we could read. Google Flow's models page lists clip lengths per model for its AI Plus, Pro and Ultra plans without a different cap for any plan, and the API pages set limits per model. Flow's page also says all users can access the Gemini Omni models while its get-started page says a plan is required; Google has not reconciled the two. Runway's plan limits are on its help centre, which our checker cannot read.
Which AI video generator makes the longest single clip?
Of the models still available in this table, Kling 4.0 and Seedance 2.5 make the longest single clips: up to 30 seconds, according to Runway's page for its hosted copies. Gemini Omni Flash 1.1 in Flow makes up to 10 seconds, and Veo 3.1 up to 8. Kling's and ByteDance's own pages could not be read, so their limits elsewhere may differ.
Download the data
18 rows, one per model and surface, 20 columns, each with the vendor page it is read from. Free to reuse under CC BY 4.0.
The short answer and the FAQ are our own reading of the rows and are not in the files. The licence covers our compilation and wording; the quoted phrases stay with the vendors that wrote them.
| Column | Meaning |
|---|---|
key | A stable id for the row. |
vendor | The company that makes the model. |
model | The model, as the source names it. |
model_id | The model’s API id, when the source gives one. |
surface | Where the model is used: an API or an app such as Google Flow. |
plan | The plan the limit applies to. Where the page names no per-plan cap, the cell says so. |
hosted_by | Set when the row is read from another company’s page for its hosted copy of the model. |
limit_kind | per_clip (the longest single generation) or extended_total (the longest clip after chained extensions). |
min_seconds | The shortest length the page allows, when it gives a range. |
max_seconds | The longest length the page allows. |
allowed_seconds | The exact lengths the page lists, when it lists them. In the CSV: separated by spaces. |
per_extension_seconds | How many seconds one extension adds, when the page says. |
conditions | Modes or settings that change the limit, as the page states them. |
status | available, preview or shut_down. |
notes | The page’s own wording and anything else that changes how to read the row. |
source_url | The vendor page the row was read from. |
source_updated | The date the page shows, or the date it was read when it shows none, as YYYY-MM-DD. |
source_check | The result of the last automated re-read: whether the key phrases were still on the page. |
status_check | For a shut-down model: the shutdown date and the result of re-reading the vendor’s shutdown notice, with the day it was read. |
checked | The day the values were last confirmed (the last nightly re-read that matched), as YYYY-MM-DD. |
How this page is kept current
Every night a script re-reads each vendor page cited here and checks that the phrases the values come from are still on it. If a phrase changes or a page disappears, the check fails, the last good row stays up, and a person re-reads the page before anything here changes. A vendor moves from “not covered” into the table only once its own page can be read. The date at the top of this page moves only when a row or this page’s own text changes.
Spotted a limit that has changed, or a model we should add? Email nocodetalks@gmail.com.
About the author
Ankur Khandelwal is an independent maker who builds small, practical web tools under the name nocodetalks, Clipwipe among them.