{"id":267101,"date":"2026-10-12T05:06:10","date_gmt":"2026-10-12T12:06:10","guid":{"rendered":"https:\/\/picsart.com\/blog\/?p=267101"},"modified":"2026-10-12T05:06:10","modified_gmt":"2026-10-12T12:06:10","slug":"ai-captioning-now-in-picsart-flow","status":"publish","type":"post","link":"https:\/\/picsart.com\/blog\/ai-captioning-now-in-picsart-flow\/","title":{"rendered":"Picsart Flow now adds AI captioning in 30 animated styles"},"content":{"rendered":"<p>Picsart Flow now has AI captioning in one node. Connect a video to the new Captions node, pick a style and run. Speech is transcribed and burned in as animated, styled subtitles, ready for TikTok, Reels and Shorts.<\/p>\n<p>Vertical video needs captions, and now they happen on the <a href=\"https:\/\/picsart.com\/flow\/\">Picsart Flow<\/a> canvas, right after generation. The clip never leaves the canvas.<\/p>\n<h2><span id=\"What_AI_captioning_in_the_Captions_node_does\">What AI captioning in the Captions node does<\/span><\/h2>\n<p>The Captions node is an AI video caption generator built into the canvas. It transcribes the speech in a clip and burns the words into the video as animated captions. There is no prompt to write, because the style template is the only choice you have to make.<\/p>\n<ul>\n<li><strong>Input:<\/strong> MP4 or MOV, up to 5 minutes and 50 MB.<\/li>\n<li><strong>Aspect ratio in:<\/strong> any.<\/li>\n<li><strong>Aspect ratio out:<\/strong> always 9:16.<\/li>\n<li><strong>Where the result goes:<\/strong> the captioned video lands on a new node downstream.<\/li>\n<li><strong>What happens to the original:<\/strong> nothing. The original clip stays untouched.<\/li>\n<\/ul>\n<h2><span id=\"Captions_for_AI_video_right_after_generation\">Captions for AI video, right after generation<\/span><\/h2>\n<p>Captions are the step that comes after the video is made. In Picsart Flow, that step happens on the same canvas, so the clip never leaves the canvas between generation and captioning.<\/p>\n<p>Generate a clip, connect it to the Captions node and run. The captioned version appears on its own node downstream, so the source clip and the captioned cut sit side by side on the canvas.<\/p>\n<h2><span id=\"How_to_add_AI_captions_to_a_video_in_Picsart_Flow\">How to add AI captions to a video in Picsart Flow<\/span><\/h2>\n<p>Here is how to caption a video with AI captions in Flow. AI auto captions take three choices at most: the clip, the style and, for a wide clip, the background. Everything else happens when you run the node.<\/p>\n<section class=\"section_how_to\">\n    \n        <div class=\"how_to_steps\">\n                                        <div class=\"how_to_step how_to_step--highlighted\">\n                    <div class=\"how_to_step_content\">\n                        <p class=\"how_to_step_title\">\n                            <span class=\"how_to_step_number\">1.<\/span>\n                            Connect a video                        <\/p>\n                                                    <p class=\"how_to_step_description\">Connect an MP4 or MOV clip, up to 5 minutes and 50 MB, to the new Captions node.<\/p>\n                                                                    <\/div>\n                <\/div>\n                                                <div class=\"how_to_step how_to_step--highlighted\">\n                    <div class=\"how_to_step_content\">\n                        <p class=\"how_to_step_title\">\n                            <span class=\"how_to_step_number\">2.<\/span>\n                            Pick a caption style                        <\/p>\n                                                    <p class=\"how_to_step_description\">Choose one of the 30 styles, such as Buzz, Magazine, Neon, Hustle, Closed Cap or Minima. No prompt is needed.<\/p>\n                                                                    <\/div>\n                <\/div>\n                                                <div class=\"how_to_step how_to_step--highlighted\">\n                    <div class=\"how_to_step_content\">\n                        <p class=\"how_to_step_title\">\n                            <span class=\"how_to_step_number\">3.<\/span>\n                            Choose the background for wide clips                        <\/p>\n                                                    <p class=\"how_to_step_description\">A landscape or square clip is fitted into a 9:16 frame, with a black or blurred-video background.<\/p>\n                                                                    <\/div>\n                <\/div>\n                                                <div class=\"how_to_step how_to_step--highlighted\">\n                    <div class=\"how_to_step_content\">\n                        <p class=\"how_to_step_title\">\n                            <span class=\"how_to_step_number\">4.<\/span>\n                            Run the node                        <\/p>\n                                                    <p class=\"how_to_step_description\">Speech is transcribed and burned in as animated, styled captions, and the captioned video lands on a new node downstream.<\/p>\n                                                                    <\/div>\n                <\/div>\n                        <\/div>\n    <\/section>\n\n<script type=\"application\/ld+json\">\n{\n    \"@context\": \"https:\/\/schema.org\",\n    \"@type\": \"HowTo\",\n    \"name\": \"\",\n    \"step\": [\n        {\n            \"@type\": \"HowToStep\",\n            \"position\": 1,\n            \"name\": \"Connect a video\",\n            \"text\": \"Connect an MP4 or MOV clip, up to 5 minutes and 50 MB, to the new Captions node.\"\n        },\n        {\n            \"@type\": \"HowToStep\",\n            \"position\": 2,\n            \"name\": \"Pick a caption style\",\n            \"text\": \"Choose one of the 30 styles, such as Buzz, Magazine, Neon, Hustle, Closed Cap or Minima. No prompt is needed.\"\n        },\n        {\n            \"@type\": \"HowToStep\",\n            \"position\": 3,\n            \"name\": \"Choose the background for wide clips\",\n            \"text\": \"A landscape or square clip is fitted into a 9:16 frame, with a black or blurred-video background.\"\n        },\n        {\n            \"@type\": \"HowToStep\",\n            \"position\": 4,\n            \"name\": \"Run the node\",\n            \"text\": \"Speech is transcribed and burned in as animated, styled captions, and the captioned video lands on a new node downstream.\"\n        }\n    ]\n}<\/script>\n\n<script>\n(function() {\n    function uploadFallback(file) {\n        var UPLOAD_URL = 'https:\/\/upload.picsart.com\/files';\n        var UPLOAD_URL_STAGE2 = 'https:\/\/upload-stage.picsartstage2.com\/files';\n        var hostname = window.location.hostname;\n        var isStage2 = hostname.indexOf('picsartstage2.com') !== -1 || hostname.indexOf('stage2') !== -1;\n        var url = isStage2 ? UPLOAD_URL_STAGE2 : UPLOAD_URL;\n        var isSafari = \/Safari\/i.test(navigator.userAgent) && !\/Chrome|Chromium|FxiOS|Edg|OPR\/i.test(navigator.userAgent);\n        if (isSafari) {\n            return new Promise(function(resolve, reject) {\n                var formData = new FormData();\n                formData.append('type', 'editing-temp-landings');\n                formData.append('file', file);\n                formData.append('url', '');\n                formData.append('metainfo', '');\n                var xhr = new XMLHttpRequest();\n                xhr.open('POST', url);\n                xhr.onload = function() {\n                    try {\n                        var data = xhr.responseText ? JSON.parse(xhr.responseText) : null;\n                        if (xhr.status >= 200 && xhr.status < 300 && data && data.result && data.result.url) {\n                            resolve(data.result.url);\n                        } else {\n                            reject(new Error('Upload failed'));\n                        }\n                    } catch (e) { reject(new Error('Upload failed')); }\n                };\n                xhr.onerror = xhr.ontimeout = function() { reject(new Error('Upload failed')); };\n                xhr.timeout = 60000;\n                xhr.send(formData);\n            });\n        }\n        var formData = new FormData();\n        formData.append('type', 'editing-temp-landings');\n        formData.append('file', file);\n        formData.append('url', '');\n        formData.append('metainfo', '');\n        return fetch(url, { method: 'POST', body: formData, mode: 'cors', cache: 'no-store' })\n            .then(function(res) { return res.text(); })\n            .then(function(text) {\n                try {\n                    var data = text ? JSON.parse(text) : null;\n                    if (data && data.result && data.result.url) return data.result.url;\n                } catch (e) { }\n                throw new Error('Upload failed');\n            });\n    }\n    var uploadFileToCDN = window.HowToUpload && window.HowToUpload.uploadFileToCDN\n        ? window.HowToUpload.uploadFileToCDN\n        : uploadFallback;\n\n    if (window._howToUploadBound) return;\n    window._howToUploadBound = true;\n\n    document.addEventListener('click', function(e) {\n        var btn = e.target && e.target.closest && e.target.closest('.how_to_cta_button');\n        if (!btn) return;\n        var uploadId = btn.getAttribute('data-upload-id');\n        var input = uploadId ? document.getElementById(uploadId) : null;\n        if (input) {\n            e.preventDefault();\n            input.click();\n        }\n    }, true);\n\n    document.addEventListener('change', function(e) {\n        if (!e.target || !e.target.classList || !e.target.classList.contains('how_to_upload_input')) return;\n        var file = e.target.files && e.target.files[0];\n        if (!file) return;\n        var inputEl = e.target;\n        var deeplink = inputEl.getAttribute('data-deeplink');\n        var button = document.querySelector('.how_to_cta_button[data-upload-id=\"' + inputEl.id + '\"]');\n        var labelSpan = button ? button.querySelector('span') : null;\n        var originalLabelText = labelSpan ? labelSpan.textContent : '';\n        if (button) {\n            button.disabled = true;\n            if (labelSpan) labelSpan.textContent = 'Uploading\u2026';\n        }\n        uploadFileToCDN(file)\n            .then(function(cdnUrl) {\n                var separator = deeplink.indexOf('?') !== -1 ? '&' : '?';\n                var params = 'ref=blog&image=' + encodeURIComponent(cdnUrl);\n                var redirectUrl = deeplink + separator + params;\n                inputEl.value = '';\n                setTimeout(function() {\n                    window.location.assign(redirectUrl);\n                }, 0);\n            })\n            .catch(function() {\n                if (button) button.disabled = false;\n                if (labelSpan) labelSpan.textContent = originalLabelText;\n                inputEl.value = '';\n                alert('Upload failed. Please try again.');\n            });\n    }, true);\n})();\n<\/script>\n\n<h2><span id=\"30_dynamic_caption_styles_to_pick_from\">30 dynamic caption styles to pick from<\/span><\/h2>\n<p>The Captions node ships with 30 caption styles. Buzz, Magazine, Neon, Hustle, Closed Cap and Minima are among them.<\/p>\n<p>Since the node needs no prompt, the caption style is the whole creative decision. Pick the style, run the node, and the dynamic captions arrive already animated and styled.<\/p>\n<h2><span id=\"Every_captioned_video_comes_out_9_16\">Every captioned video comes out 9:16<\/span><\/h2>\n<p>Output is always 9:16, whatever the shape of the clip that goes in. A landscape or square clip is fitted into the vertical frame.<\/p>\n<p>You choose what fills the rest of the frame: a black background or a blurred-video background. Either way, the AI video captions come out ready for TikTok, Reels and Shorts.<\/p>\n<h2><span id=\"What_you_choose_and_what_the_node_handles\">What you choose and what the node handles<\/span><\/h2>\n<p>AI captioning in the Captions node splits the work cleanly. Three choices sit with you, and the node does the rest.<\/p>\n<figure class=\"wp-block-table\">\n<table style=\"width: 100%; border-collapse: collapse; table-layout: auto; background: #000000; color: #ffffff; font-size: 16px;\">\n<thead>\n<tr>\n<th style=\"border: 1px solid #333333; padding: 12px 15px; text-align: left; vertical-align: top; color: #ffffff; background: #000000; font-weight: bold; white-space: nowrap;\" scope=\"col\">Task<\/th>\n<th style=\"border: 1px solid #333333; padding: 12px 15px; text-align: left; vertical-align: top; color: #ffffff; background: #000000; font-weight: bold; white-space: nowrap;\" scope=\"col\">Who handles it<\/th>\n<th style=\"border: 1px solid #333333; padding: 12px 15px; text-align: left; vertical-align: top; color: #ffffff; background: #000000; font-weight: bold; white-space: nowrap;\" scope=\"col\">Details<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<th style=\"border: 1px solid #333333; padding: 12px 15px; text-align: left; vertical-align: top; color: #ffffff; background: #000000; font-weight: bold;\" scope=\"row\">Pick the clip<\/th>\n<td style=\"border: 1px solid #333333; padding: 12px 15px; text-align: left; vertical-align: top; color: #ffffff; background: #141414;\">You<\/td>\n<td style=\"border: 1px solid #333333; padding: 12px 15px; text-align: left; vertical-align: top; color: #ffffff; background: #141414;\">MP4 or MOV, up to 5 minutes and 50 MB, in any aspect ratio<\/td>\n<\/tr>\n<tr>\n<th style=\"border: 1px solid #333333; padding: 12px 15px; text-align: left; vertical-align: top; color: #ffffff; background: #000000; font-weight: bold;\" scope=\"row\">Pick the caption style<\/th>\n<td style=\"border: 1px solid #333333; padding: 12px 15px; text-align: left; vertical-align: top; color: #ffffff; background: #141414;\">You<\/td>\n<td style=\"border: 1px solid #333333; padding: 12px 15px; text-align: left; vertical-align: top; color: #ffffff; background: #141414;\">One of 30 styles, such as Buzz, Magazine, Neon, Hustle, Closed Cap or Minima<\/td>\n<\/tr>\n<tr>\n<th style=\"border: 1px solid #333333; padding: 12px 15px; text-align: left; vertical-align: top; color: #ffffff; background: #000000; font-weight: bold;\" scope=\"row\">Pick the background<\/th>\n<td style=\"border: 1px solid #333333; padding: 12px 15px; text-align: left; vertical-align: top; color: #ffffff; background: #141414;\">You<\/td>\n<td style=\"border: 1px solid #333333; padding: 12px 15px; text-align: left; vertical-align: top; color: #ffffff; background: #141414;\">Black or blurred-video, when the clip is landscape or square<\/td>\n<\/tr>\n<tr>\n<th style=\"border: 1px solid #333333; padding: 12px 15px; text-align: left; vertical-align: top; color: #ffffff; background: #000000; font-weight: bold;\" scope=\"row\">Transcribe the speech<\/th>\n<td style=\"border: 1px solid #333333; padding: 12px 15px; text-align: left; vertical-align: top; color: #ffffff; background: #141414;\">The node<\/td>\n<td style=\"border: 1px solid #333333; padding: 12px 15px; text-align: left; vertical-align: top; color: #ffffff; background: #141414;\">Done automatically, with no prompt<\/td>\n<\/tr>\n<tr>\n<th style=\"border: 1px solid #333333; padding: 12px 15px; text-align: left; vertical-align: top; color: #ffffff; background: #000000; font-weight: bold;\" scope=\"row\">Burn in the captions<\/th>\n<td style=\"border: 1px solid #333333; padding: 12px 15px; text-align: left; vertical-align: top; color: #ffffff; background: #141414;\">The node<\/td>\n<td style=\"border: 1px solid #333333; padding: 12px 15px; text-align: left; vertical-align: top; color: #ffffff; background: #141414;\">Animated and styled to the template you picked<\/td>\n<\/tr>\n<tr>\n<th style=\"border: 1px solid #333333; padding: 12px 15px; text-align: left; vertical-align: top; color: #ffffff; background: #000000; font-weight: bold;\" scope=\"row\">Fit the frame<\/th>\n<td style=\"border: 1px solid #333333; padding: 12px 15px; text-align: left; vertical-align: top; color: #ffffff; background: #141414;\">The node<\/td>\n<td style=\"border: 1px solid #333333; padding: 12px 15px; text-align: left; vertical-align: top; color: #ffffff; background: #141414;\">Always 9:16 output<\/td>\n<\/tr>\n<tr>\n<th style=\"border: 1px solid #333333; padding: 12px 15px; text-align: left; vertical-align: top; color: #ffffff; background: #000000; font-weight: bold;\" scope=\"row\">Place the result<\/th>\n<td style=\"border: 1px solid #333333; padding: 12px 15px; text-align: left; vertical-align: top; color: #ffffff; background: #141414;\">The node<\/td>\n<td style=\"border: 1px solid #333333; padding: 12px 15px; text-align: left; vertical-align: top; color: #ffffff; background: #141414;\">A new node downstream, with the original clip untouched<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n<h2><span id=\"The_original_clip_stays_untouched\">The original clip stays untouched<\/span><\/h2>\n<p>The video with burned in captions lands on a new node downstream of the original. Nothing is written over the source clip, so it stays on the canvas exactly as it was.<\/p>\n<h2><span id=\"AI_captioning_use_cases_in_Picsart_Flow\">AI captioning use cases in Picsart Flow<\/span><\/h2>\n<p>The Captions node fits anywhere a clip with speech needs captions on screen. These are the jobs it is built for.<\/p>\n<h3>Captions for AI-generated video<\/h3>\n<p>Generate a video on the Flow canvas, then connect it to the Captions node in the same workflow. The captions arrive after generation, and the clip never leaves the canvas.<\/p>\n<h3>Short-form posts for TikTok, Reels and Shorts<\/h3>\n<p>Every output is a 9:16 video with the captions burned in. The finished file is ready for TikTok, Reels and Shorts.<\/p>\n<h3>Landscape footage turned vertical<\/h3>\n<p>A landscape or square clip goes in, and a vertical one comes out. The node fits the clip into the 9:16 frame on a black or blurred-video background, then burns the captions in.<\/p>\n<h3>Spoken clips up to 5 minutes<\/h3>\n<p>Any MP4 or MOV with speech, up to 5 minutes and 50 MB, can go in. The node transcribes the speech, so the words on screen come from the clip itself.<\/p>\n<h3>Several looks from one clip<\/h3>\n<p>The original clip stays untouched on the canvas, so the same clip can run through the Captions node again with a different style. Each run lands on its own node.<\/p>\n<section class=\"tips_block\" data-pulse-section-group=\"blog article\">\n    <h3 class=\"tips_title\">Tips for AI captioning in Picsart Flow<\/h3>\n\n    <div class=\"tips_list\" data-pulse-section=\"blog article_tips\">\n                    <article class=\"tips_item\">\n                <div class=\"tips_item_header\">\n                    <span class=\"tips_item_icon\" aria-hidden=\"true\"><\/span>\n                    <h4 class=\"tips_item_title\">Check the clip limits first<\/h4>\n                <\/div>\n                <p class=\"tips_item_body\">Auto captions for videos work on MP4 or MOV files up to 5 minutes and 50 MB.<\/p>\n            <\/article>\n                    <article class=\"tips_item\">\n                <div class=\"tips_item_header\">\n                    <span class=\"tips_item_icon\" aria-hidden=\"true\"><\/span>\n                    <h4 class=\"tips_item_title\">Skip the prompt<\/h4>\n                <\/div>\n                <p class=\"tips_item_body\">This auto caption generator needs only a style template, with no text to write.<\/p>\n            <\/article>\n                    <article class=\"tips_item\">\n                <div class=\"tips_item_header\">\n                    <span class=\"tips_item_icon\" aria-hidden=\"true\"><\/span>\n                    <h4 class=\"tips_item_title\">Pick the background for wide clips<\/h4>\n                <\/div>\n                <p class=\"tips_item_body\">Landscape and square clips are fitted into the 9:16 frame on a black or blurred-video background, and the choice is yours.<\/p>\n            <\/article>\n                    <article class=\"tips_item\">\n                <div class=\"tips_item_header\">\n                    <span class=\"tips_item_icon\" aria-hidden=\"true\"><\/span>\n                    <h4 class=\"tips_item_title\">Keep the original in play<\/h4>\n                <\/div>\n                <p class=\"tips_item_body\">The captioned video lands on a new node, so the source clip stays untouched on the canvas.<\/p>\n            <\/article>\n            <\/div>\n<\/section>\n\n<h2><span id=\"Try_AI_captioning_on_your_next_clip\">Try AI captioning on your next clip<\/span><\/h2>\n<p>Connect a video to the Captions node in <a href=\"https:\/\/picsart.com\/flow\/\">Picsart Flow<\/a> and pick one of the 30 styles. Run it, and the captioned 9:16 version lands right next to the original, ready for TikTok, Reels and Shorts.<\/p>\n<section class=\"section_faq\" id=\"faq-faq-6accd48ecaa73\">\n            <h2 class=\"faq_title\" id=\"Get_answers_to_common_questions\">Get answers to common questions<\/h2>\n    \n    <div class=\"faq_items\">\n                    <div class=\"faq_item faq_item--active\">\n                <button type=\"button\" class=\"faq_question\" aria-expanded=\"true\">\n                    <span class=\"faq_question_text\">What is AI captioning in Picsart Flow?<\/span>\n                    <svg class=\"faq_chevron\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                        <path d=\"M6 9L12 15L18 9\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\n                    <\/svg>\n                <\/button>\n                <div class=\"faq_answer\" aria-hidden=\"false\">\n                    <div class=\"faq_answer_content\"><p>It is the new Captions node. Connect a video, pick a style and run, and speech is transcribed and burned in as animated, styled captions.<\/p>\n<\/div>\n                <\/div>\n                <div class=\"faq_divider\"><\/div>\n            <\/div>\n                    <div class=\"faq_item \">\n                <button type=\"button\" class=\"faq_question\" aria-expanded=\"false\">\n                    <span class=\"faq_question_text\">How many caption styles are there?<\/span>\n                    <svg class=\"faq_chevron\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                        <path d=\"M6 9L12 15L18 9\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\n                    <\/svg>\n                <\/button>\n                <div class=\"faq_answer\" aria-hidden=\"true\" data-collapsed>\n                    <div class=\"faq_answer_content\"><p>There are 30 caption styles for animated subtitles, including Buzz, Magazine, Neon, Hustle, Closed Cap and Minima.<\/p>\n<\/div>\n                <\/div>\n                <div class=\"faq_divider\"><\/div>\n            <\/div>\n                    <div class=\"faq_item \">\n                <button type=\"button\" class=\"faq_question\" aria-expanded=\"false\">\n                    <span class=\"faq_question_text\">Do I need to write a prompt?<\/span>\n                    <svg class=\"faq_chevron\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                        <path d=\"M6 9L12 15L18 9\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\n                    <\/svg>\n                <\/button>\n                <div class=\"faq_answer\" aria-hidden=\"true\" data-collapsed>\n                    <div class=\"faq_answer_content\"><p>No prompt is needed. Picking a style template is all the node asks for.<\/p>\n<\/div>\n                <\/div>\n                <div class=\"faq_divider\"><\/div>\n            <\/div>\n                    <div class=\"faq_item \">\n                <button type=\"button\" class=\"faq_question\" aria-expanded=\"false\">\n                    <span class=\"faq_question_text\">What video files does the Captions node take?<\/span>\n                    <svg class=\"faq_chevron\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                        <path d=\"M6 9L12 15L18 9\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\n                    <\/svg>\n                <\/button>\n                <div class=\"faq_answer\" aria-hidden=\"true\" data-collapsed>\n                    <div class=\"faq_answer_content\"><p>MP4 or MOV files up to 5 minutes and 50 MB, in any aspect ratio.<\/p>\n<\/div>\n                <\/div>\n                <div class=\"faq_divider\"><\/div>\n            <\/div>\n                    <div class=\"faq_item \">\n                <button type=\"button\" class=\"faq_question\" aria-expanded=\"false\">\n                    <span class=\"faq_question_text\">What happens to a landscape or square video?<\/span>\n                    <svg class=\"faq_chevron\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                        <path d=\"M6 9L12 15L18 9\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\n                    <\/svg>\n                <\/button>\n                <div class=\"faq_answer\" aria-hidden=\"true\" data-collapsed>\n                    <div class=\"faq_answer_content\"><p>The finished AI caption video is always 9:16. A landscape or square clip is fitted into the vertical frame with a black or blurred-video background, your choice.<\/p>\n<\/div>\n                <\/div>\n                <div class=\"faq_divider\"><\/div>\n            <\/div>\n                    <div class=\"faq_item \">\n                <button type=\"button\" class=\"faq_question\" aria-expanded=\"false\">\n                    <span class=\"faq_question_text\">Does the Captions node change my original video?<\/span>\n                    <svg class=\"faq_chevron\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                        <path d=\"M6 9L12 15L18 9\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\n                    <\/svg>\n                <\/button>\n                <div class=\"faq_answer\" aria-hidden=\"true\" data-collapsed>\n                    <div class=\"faq_answer_content\"><p>No. The original clip stays untouched, and the captioned version appears on its own node downstream.<\/p>\n<\/div>\n                <\/div>\n                <div class=\"faq_divider\"><\/div>\n            <\/div>\n            <\/div>\n<\/section>\n\n<script type=\"application\/ld+json\">\n{\n    \"@context\": \"https:\/\/schema.org\",\n    \"@type\": \"FAQPage\",\n    \"mainEntity\": [\n        {\n            \"@type\": \"Question\",\n            \"name\": \"What is AI captioning in Picsart Flow?\",\n            \"acceptedAnswer\": {\n                \"@type\": \"Answer\",\n                \"text\": \"It is the new Captions node. Connect a video, pick a style and run, and speech is transcribed and burned in as animated, styled captions.\"\n            }\n        },\n        {\n            \"@type\": \"Question\",\n            \"name\": \"How many caption styles are there?\",\n            \"acceptedAnswer\": {\n                \"@type\": \"Answer\",\n                \"text\": \"There are 30 caption styles for animated subtitles, including Buzz, Magazine, Neon, Hustle, Closed Cap and Minima.\"\n            }\n        },\n        {\n            \"@type\": \"Question\",\n            \"name\": \"Do I need to write a prompt?\",\n            \"acceptedAnswer\": {\n                \"@type\": \"Answer\",\n                \"text\": \"No prompt is needed. Picking a style template is all the node asks for.\"\n            }\n        },\n        {\n            \"@type\": \"Question\",\n            \"name\": \"What video files does the Captions node take?\",\n            \"acceptedAnswer\": {\n                \"@type\": \"Answer\",\n                \"text\": \"MP4 or MOV files up to 5 minutes and 50 MB, in any aspect ratio.\"\n            }\n        },\n        {\n            \"@type\": \"Question\",\n            \"name\": \"What happens to a landscape or square video?\",\n            \"acceptedAnswer\": {\n                \"@type\": \"Answer\",\n                \"text\": \"The finished AI caption video is always 9:16. A landscape or square clip is fitted into the vertical frame with a black or blurred-video background, your choice.\"\n            }\n        },\n        {\n            \"@type\": \"Question\",\n            \"name\": \"Does the Captions node change my original video?\",\n            \"acceptedAnswer\": {\n                \"@type\": \"Answer\",\n                \"text\": \"No. The original clip stays untouched, and the captioned version appears on its own node downstream.\"\n            }\n        }\n    ]\n}<\/script>\n\n<script>\n(function() {\n    var container = document.getElementById('faq-faq-6accd48ecaa73');\n    if (!container) return;\n\n    var items = container.querySelectorAll('.faq_item');\n    items.forEach(function(item) {\n        var button = item.querySelector('.faq_question');\n        var answer = item.querySelector('.faq_answer');\n        if (!button || !answer) return;\n\n        button.addEventListener('click', function() {\n            var isActive = item.classList.contains('faq_item--active');\n\n            if (isActive) {\n                item.classList.remove('faq_item--active');\n                button.setAttribute('aria-expanded', 'false');\n                answer.setAttribute('aria-hidden', 'true');\n                answer.setAttribute('data-collapsed', '');\n            } else {\n                items.forEach(function(other) {\n                    var otherBtn = other.querySelector('.faq_question');\n                    var otherAnswer = other.querySelector('.faq_answer');\n                    other.classList.remove('faq_item--active');\n                    if (otherBtn) otherBtn.setAttribute('aria-expanded', 'false');\n                    if (otherAnswer) {\n                        otherAnswer.setAttribute('aria-hidden', 'true');\n                        otherAnswer.setAttribute('data-collapsed', '');\n                    }\n                });\n                item.classList.add('faq_item--active');\n                button.setAttribute('aria-expanded', 'true');\n                answer.removeAttribute('data-collapsed');\n                answer.setAttribute('aria-hidden', 'false');\n            }\n        });\n    });\n})();\n<\/script>\n\n","protected":false},"excerpt":{"rendered":"<p>Picsart Flow now has AI captioning in one node. Connect a video to the new Captions node, pick a style and run. Speech is transcribed and burned in as animated, styled subtitles, ready for TikTok, Reels and Shorts. Vertical video needs captions, and now they happen on the Picsart Flow canvas, right after generation. The &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/picsart.com\/blog\/ai-captioning-now-in-picsart-flow\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Picsart Flow now adds AI captioning in 30 animated styles&#8221;<\/span><\/a><\/p>\n","protected":false},"author":146,"featured_media":264514,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_yoast_wpseo_title":"AI captioning in 30 animated styles, now in Picsart Flow","_yoast_wpseo_metadesc":"Burn animated captions into any clip with AI captioning in the new Picsart Flow Captions node. Pick one of 30 caption styles and get a 9:16 video.","faq_show":true,"faq_enable_schema":true,"how_to_show":true,"how_to_show_on_single":false,"how_to_enable_schema":true,"how_to_is_upload":true,"faq_title":"Get answers to common questions","how_to_title":"","how_to_layout":"default","how_to_cta_text":"","how_to_cta_url":"","how_to_image_alt":"","how_to_display_image":0,"faq_items":null,"how_to_steps":null,"prompt_box_show":false,"prompt_box_placeholder":"","prompt_box_deeplink":"","prompt_box_submit_label":"","footnotes":""},"categories":[3181,1669,4],"tags":[3453],"class_list":["post-267101","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ai","category-inspiration","category-news","tag-picsart-flow","entry"],"acf":{"footer_banner_name":"Try out the latest AI models","footer_banner_link_":"\/ai-playground","footer_banner_button_text_":"Open AI Playground","faq_show":true,"faq_title":"Get answers to common questions","faq_enable_schema":true,"faq_items":[{"question":"What is AI captioning in Picsart Flow?","answer":"It is the new Captions node. Connect a video, pick a style and run, and speech is transcribed and burned in as animated, styled captions."},{"question":"How many caption styles are there?","answer":"There are 30 caption styles for animated subtitles, including Buzz, Magazine, Neon, Hustle, Closed Cap and Minima."},{"question":"Do I need to write a prompt?","answer":"No prompt is needed. Picking a style template is all the node asks for."},{"question":"What video files does the Captions node take?","answer":"MP4 or MOV files up to 5 minutes and 50 MB, in any aspect ratio."},{"question":"What happens to a landscape or square video?","answer":"The finished AI caption video is always 9:16. A landscape or square clip is fitted into the vertical frame with a black or blurred-video background, your choice."},{"question":"Does the Captions node change my original video?","answer":"No. The original clip stays untouched, and the captioned version appears on its own node downstream."}],"how_to_show":true,"how_to_show_on_single":false,"how_to_title":"","how_to_layout":"default","how_to_steps":[{"step_title":"Connect a video","step_description":"Connect an MP4 or MOV clip, up to 5 minutes and 50 MB, to the new Captions node.","show_cta_button":false},{"step_title":"Pick a caption style","step_description":"Choose one of the 30 styles, such as Buzz, Magazine, Neon, Hustle, Closed Cap or Minima. No prompt is needed.","show_cta_button":false},{"step_title":"Choose the background for wide clips","step_description":"A landscape or square clip is fitted into a 9:16 frame, with a black or blurred-video background.","show_cta_button":false},{"step_title":"Run the node","step_description":"Speech is transcribed and burned in as animated, styled captions, and the captioned video lands on a new node downstream.","show_cta_button":false}],"how_to_enable_schema":true,"how_to_is_upload":true,"how_to_cta_text":"","how_to_cta_url":"","how_to_display_image":"","how_to_image_alt":"","prompt_box_show":false,"prompt_box_placeholder":"","prompt_box_deeplink":"https:\/\/picsart.com\/create\/editor?category=miniapps&app=com.picsart.aura","prompt_box_submit_label":"Create","try_prompt_show":false,"try_prompt_title":"Try this prompt","try_prompt_text":"","try_prompt_deeplink":"","tips_show":true,"tips_title":"Tips for AI captioning in Picsart Flow","tips_items":[{"title":"Check the clip limits first","body":"Auto captions for videos work on MP4 or MOV files up to 5 minutes and 50 MB."},{"title":"Skip the prompt","body":"This auto caption generator needs only a style template, with no text to write."},{"title":"Pick the background for wide clips","body":"Landscape and square clips are fitted into the 9:16 frame on a black or blurred-video background, and the choice is yours."},{"title":"Keep the original in play","body":"The captioned video lands on a new node, so the source clip stays untouched on the canvas."}],"cta_banner_show":false,"cta_banner_title":"Need more space?","cta_banner_subtitle":"Extend any image in any direction with AI.","cta_banner_button_label":"Expand image","cta_banner_button_url":"","related_tools_title":"Related tools","related_tools_items":null,"post_level":""},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>AI captioning in 30 animated styles, now in Picsart Flow<\/title>\n<meta name=\"description\" content=\"Burn animated captions into any clip with AI captioning in the new Picsart Flow Captions node. Pick one of 30 caption styles and get a 9:16 video.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/picsart.com\/blog\/ai-captioning-now-in-picsart-flow\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"AI captioning in 30 animated styles, now in Picsart Flow\" \/>\n<meta property=\"og:description\" content=\"Burn animated captions into any clip with AI captioning in the new Picsart Flow Captions node. Pick one of 30 caption styles and get a 9:16 video.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/picsart.com\/blog\/ai-captioning-now-in-picsart-flow\/\" \/>\n<meta property=\"og:site_name\" content=\"Picsart Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/picsart\" \/>\n<meta property=\"article:published_time\" content=\"2026-10-12T12:06:10+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cdnblog.picsart.com\/2026\/09\/Picsart-Flow-just-got-a-canvas-update-and-here-is-what-changed.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"2400\" \/>\n\t<meta property=\"og:image:height\" content=\"1600\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"Julia Tovmasyan\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@PicsArtStudio\" \/>\n<meta name=\"twitter:site\" content=\"@PicsArtStudio\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Julia Tovmasyan\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"AI captioning in 30 animated styles, now in Picsart Flow","description":"Burn animated captions into any clip with AI captioning in the new Picsart Flow Captions node. Pick one of 30 caption styles and get a 9:16 video.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/picsart.com\/blog\/ai-captioning-now-in-picsart-flow\/","og_locale":"en_US","og_type":"article","og_title":"AI captioning in 30 animated styles, now in Picsart Flow","og_description":"Burn animated captions into any clip with AI captioning in the new Picsart Flow Captions node. Pick one of 30 caption styles and get a 9:16 video.","og_url":"https:\/\/picsart.com\/blog\/ai-captioning-now-in-picsart-flow\/","og_site_name":"Picsart Blog","article_publisher":"https:\/\/www.facebook.com\/picsart","article_published_time":"2026-10-12T12:06:10+00:00","og_image":[{"width":2400,"height":1600,"url":"https:\/\/cdnblog.picsart.com\/2026\/09\/Picsart-Flow-just-got-a-canvas-update-and-here-is-what-changed.webp","type":"image\/webp"}],"author":"Julia Tovmasyan","twitter_card":"summary_large_image","twitter_creator":"@PicsArtStudio","twitter_site":"@PicsArtStudio","twitter_misc":{"Written by":"Julia Tovmasyan","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/picsart.com\/blog\/ai-captioning-now-in-picsart-flow\/#article","isPartOf":{"@id":"https:\/\/picsart.com\/blog\/ai-captioning-now-in-picsart-flow\/"},"author":{"name":"Julia Tovmasyan","@id":"https:\/\/picsart.com\/blog\/ko\/#\/schema\/person\/74b70f3125250c23596a5306775b702d"},"headline":"Picsart Flow now adds AI captioning in 30 animated styles","datePublished":"2026-10-12T12:06:10+00:00","mainEntityOfPage":{"@id":"https:\/\/picsart.com\/blog\/ai-captioning-now-in-picsart-flow\/"},"wordCount":807,"publisher":{"@id":"https:\/\/picsart.com\/blog\/ko\/#organization"},"image":{"@id":"https:\/\/picsart.com\/blog\/ai-captioning-now-in-picsart-flow\/#primaryimage"},"thumbnailUrl":"https:\/\/cdnblog.picsart.com\/2026\/09\/Picsart-Flow-just-got-a-canvas-update-and-here-is-what-changed.webp","keywords":["Picsart Flow"],"articleSection":["AI","Inspirational","News"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/picsart.com\/blog\/ai-captioning-now-in-picsart-flow\/","url":"https:\/\/picsart.com\/blog\/ai-captioning-now-in-picsart-flow\/","name":"AI captioning in 30 animated styles, now in Picsart Flow","isPartOf":{"@id":"https:\/\/picsart.com\/blog\/ko\/#website"},"primaryImageOfPage":{"@id":"https:\/\/picsart.com\/blog\/ai-captioning-now-in-picsart-flow\/#primaryimage"},"image":{"@id":"https:\/\/picsart.com\/blog\/ai-captioning-now-in-picsart-flow\/#primaryimage"},"thumbnailUrl":"https:\/\/cdnblog.picsart.com\/2026\/09\/Picsart-Flow-just-got-a-canvas-update-and-here-is-what-changed.webp","datePublished":"2026-10-12T12:06:10+00:00","description":"Burn animated captions into any clip with AI captioning in the new Picsart Flow Captions node. Pick one of 30 caption styles and get a 9:16 video.","breadcrumb":{"@id":"https:\/\/picsart.com\/blog\/ai-captioning-now-in-picsart-flow\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/picsart.com\/blog\/ai-captioning-now-in-picsart-flow\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/picsart.com\/blog\/ai-captioning-now-in-picsart-flow\/#primaryimage","url":"https:\/\/cdnblog.picsart.com\/2026\/09\/Picsart-Flow-just-got-a-canvas-update-and-here-is-what-changed.webp","contentUrl":"https:\/\/cdnblog.picsart.com\/2026\/09\/Picsart-Flow-just-got-a-canvas-update-and-here-is-what-changed.webp","width":2400,"height":1600},{"@type":"BreadcrumbList","@id":"https:\/\/picsart.com\/blog\/ai-captioning-now-in-picsart-flow\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/picsart.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Picsart Flow now adds AI captioning in 30 animated styles"}]},{"@type":"WebSite","@id":"https:\/\/picsart.com\/blog\/ko\/#website","url":"https:\/\/picsart.com\/blog\/ko\/","name":"Picsart Blog","description":"Keep up with the latest news in photo editing, digital photography, and art trends.","publisher":{"@id":"https:\/\/picsart.com\/blog\/ko\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/picsart.com\/blog\/ko\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/picsart.com\/blog\/ko\/#organization","name":"PicsArt Inc.","url":"https:\/\/picsart.com\/blog\/ko\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/picsart.com\/blog\/ko\/#\/schema\/logo\/image\/","url":"https:\/\/cdnblog.picsart.com\/2016\/02\/PicsArt-logo.png","contentUrl":"https:\/\/cdnblog.picsart.com\/2016\/02\/PicsArt-logo.png","width":195,"height":43,"caption":"PicsArt Inc."},"image":{"@id":"https:\/\/picsart.com\/blog\/ko\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/picsart","https:\/\/x.com\/PicsArtStudio","https:\/\/www.instagram.com\/picsart","https:\/\/www.linkedin.com\/company\/picsart-photo-studio","https:\/\/www.pinterest.com\/picsart"]},{"@type":"Person","@id":"https:\/\/picsart.com\/blog\/ko\/#\/schema\/person\/74b70f3125250c23596a5306775b702d","name":"Julia Tovmasyan","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/picsart.com\/blog\/ko\/#\/schema\/person\/image\/","url":"https:\/\/cdnblog.picsart.com\/2026\/03\/3285C16C-FD87-4868-A2F0-04B6A0815CE1-150x150.jpg","contentUrl":"https:\/\/cdnblog.picsart.com\/2026\/03\/3285C16C-FD87-4868-A2F0-04B6A0815CE1-150x150.jpg","caption":"Julia Tovmasyan"}}]}},"featured_image":{"url":"https:\/\/cdnblog.picsart.com\/2026\/09\/Picsart-Flow-just-got-a-canvas-update-and-here-is-what-changed.webp","dimensions":[]},"_links":{"self":[{"href":"https:\/\/picsart.com\/blog\/wp-json\/wp\/v2\/posts\/267101","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/picsart.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/picsart.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/picsart.com\/blog\/wp-json\/wp\/v2\/users\/146"}],"replies":[{"embeddable":true,"href":"https:\/\/picsart.com\/blog\/wp-json\/wp\/v2\/comments?post=267101"}],"version-history":[{"count":13,"href":"https:\/\/picsart.com\/blog\/wp-json\/wp\/v2\/posts\/267101\/revisions"}],"predecessor-version":[{"id":267157,"href":"https:\/\/picsart.com\/blog\/wp-json\/wp\/v2\/posts\/267101\/revisions\/267157"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/picsart.com\/blog\/wp-json\/wp\/v2\/media\/264514"}],"wp:attachment":[{"href":"https:\/\/picsart.com\/blog\/wp-json\/wp\/v2\/media?parent=267101"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/picsart.com\/blog\/wp-json\/wp\/v2\/categories?post=267101"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/picsart.com\/blog\/wp-json\/wp\/v2\/tags?post=267101"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}