Skip to main content
This guide shows you how to add transition effects between scenes in your videos. Transitions provide smooth visual changes when moving from one scene to another, creating professional polish and visual flow that keeps viewers engaged.

What You’ll Learn

Transition Types

Choose from 10+ professional transition effects

Per-Scene Control

Set different transitions for each scene

Visual Continuity

Create smooth flow between scenes

Professional Polish

Enhance videos with polished transitions

Before You Begin

Make sure you have:
  • A Pictory API key (get one here)
  • Node.js or Python installed on your machine
  • Multiple scenes in your video (transitions connect scenes)
  • Basic understanding of scene configuration in Pictory API
npm install axios

How Scene Transitions Work

When you add transitions to your video:
  1. Transition Selection - You specify a transition type for each scene
  2. Scene Boundary Detection - System identifies where scenes connect
  3. Transition Placement - Transition is applied at the end of each scene
  4. Effect Application - Visual effect is rendered between scenes
  5. Duration Calculation - Transition duration is automatically optimized
  6. Scene Stitching - Scenes are seamlessly connected with transitions
  7. Video Rendering - Final video includes all transitions between scenes
Each scene’s sceneTransition parameter defines the transition effect that plays when moving TO the next scene. The last scene’s transition is typically not used since there’s no scene after it.

Complete Example

import axios from "axios";

const API_BASE_URL = "https://api.pictory.ai/pictoryapis";
const API_KEY = "YOUR_API_KEY";

const STORY_TEXT_1 =
  "AI is poised to significantly impact educators and course creators on social media.";
const STORY_TEXT_2 =
  "By automating tasks like content generation, visual design, and video editing.";
const STORY_TEXT_3 =
  "AI will save time and enhance consistency for content creators everywhere.";

async function createVideoWithTransitions() {
  try {
    console.log("Creating video with scene transitions...");

    const response = await axios.post(
      `${API_BASE_URL}/v2/video/storyboard/render`,
      {
        videoName: "video_with_scene_transitions",

        scenes: [
          // SCENE 1: Fade transition to Scene 2
          {
            story: STORY_TEXT_1,
            createSceneOnNewLine: false,
            createSceneOnEndOfSentence: false,
            sceneTransition: "fade",           // Classic fade effect
          },

          // SCENE 2: Wipe right transition to Scene 3
          {
            story: STORY_TEXT_2,
            createSceneOnNewLine: false,
            createSceneOnEndOfSentence: false,
            sceneTransition: "wiperight",      // Wipe moving right
          },

          // SCENE 3: No transition (last scene)
          {
            story: STORY_TEXT_3,
            createSceneOnNewLine: false,
            createSceneOnEndOfSentence: false,
            sceneTransition: "none",           // Hard cut (or omit)
          },
        ],
      },
      {
        headers: {
          "Content-Type": "application/json",
          Authorization: API_KEY,
        },
      }
    );

    const jobId = response.data.data.jobId;
    console.log("✓ Video creation started!");
    console.log("Job ID:", jobId);

    // Monitor progress
    console.log("\nMonitoring video creation...");
    let jobCompleted = false;
    let jobResult = null;

    while (!jobCompleted) {
      const statusResponse = await axios.get(
        `${API_BASE_URL}/v1/jobs/${jobId}`,
        {
          headers: { Authorization: API_KEY },
        }
      );

      const status = statusResponse.data.data.status;
      console.log("Status:", status);

      if (status === "completed") {
        jobCompleted = true;
        jobResult = statusResponse.data;
        console.log("\n✓ Video with scene transitions is ready!");
        console.log("Video URL:", jobResult.data.videoURL);
      } else if (status === "failed") {
        throw new Error("Video creation failed: " + JSON.stringify(statusResponse.data));
      }

      await new Promise(resolve => setTimeout(resolve, 5000));
    }

    return jobResult;
  } catch (error) {
    console.error("Error:", error.response?.data || error.message);
    throw error;
  }
}

createVideoWithTransitions();

Understanding the Parameters

Scene Transition Configuration

ParameterTypeRequiredDescription
sceneTransitionstringNoTransition effect applied when moving to the next scene. See available transitions below.
Transition Direction: The sceneTransition on Scene 1 defines the transition FROM Scene 1 TO Scene 2. The transition is placed at the END of the scene, not the beginning. The last scene’s transition is not used.

Available Transitions

Basic Transitions

TransitionEffect DescriptionVisual ResultBest Used For
noneNo transition, direct cutImmediate scene changeFast-paced content, news, tutorials
fadeClassic fade to black/whiteGradual fade out/inProfessional videos, all content types

Directional Wipe Transitions

TransitionEffect DescriptionVisual ResultBest Used For
wipeupScene wipes upwardNew scene reveals from bottomUplifting content, positive messages
wipedownScene wipes downwardNew scene reveals from topSerious topics, transitions to detail
wipeleftScene wipes to the leftNew scene pushes from rightForward progression, next steps
wiperightScene wipes to the rightNew scene pushes from leftGoing back, flashbacks, recaps

Smooth Slide Transitions

TransitionEffect DescriptionVisual ResultBest Used For
smoothleftSmooth slide to the leftSeamless horizontal movementSequential content, step-by-step guides
smoothrightSmooth slide to the rightSeamless horizontal movementNavigation, menu-style presentations

Special Effect Transitions

TransitionEffect DescriptionVisual ResultBest Used For
radialRadial/circular wipe from centerExpanding circle revealFocus points, reveals, dramatic moments
circlecropCircle crop effectCircular mask transitionSpotlight content, modern aesthetics
hblurHorizontal motion blurBlurred horizontal transitionDynamic content, modern/stylish videos

Transition Selection Guide

Choose transitions based on your content type and brand style:
Content TypeRecommended TransitionsReasoning
Professional/Corporatefade, noneClean, conservative, universally appropriate
Educational/Tutorialfade, smoothright, noneClear, non-distracting, maintains focus
Marketing/Saleswiperight, fade, radialDynamic, engaging, draws attention
Social Mediahblur, wiperight, circlecropModern, energetic, eye-catching
News/Informationnone, fadeFast-paced, professional, straightforward
Storytelling/Narrativefade, smoothleft, smoothrightSmooth flow, maintains narrative continuity
Product Demoswiperight, smoothright, fadeShows progression, highlights features
Testimonialsfade, noneProfessional, focuses on speaker

Transition Patterns

Pattern 1: Consistent Transitions Throughout

Use the same transition for all scenes for cohesive feel.
{
  scenes: [
    { story: "Scene 1 content...", sceneTransition: "fade" },
    { story: "Scene 2 content...", sceneTransition: "fade" },
    { story: "Scene 3 content...", sceneTransition: "fade" },
    { story: "Scene 4 content...", sceneTransition: "fade" }
  ]
}
Result: Consistent, professional feel with uniform transitions throughout.

Pattern 2: Varied Transitions for Energy

Mix different transitions to create dynamic pacing.
{
  scenes: [
    { story: "Introduction...", sceneTransition: "fade" },
    { story: "Key point 1...", sceneTransition: "wiperight" },
    { story: "Key point 2...", sceneTransition: "smoothleft" },
    { story: "Conclusion...", sceneTransition: "fade" }
  ]
}
Result: Dynamic video with varied visual interest.

Pattern 3: No Transitions Except Section Breaks

Use transitions only between major sections.
{
  scenes: [
    { story: "Intro scene 1...", sceneTransition: "none" },
    { story: "Intro scene 2...", sceneTransition: "fade" },      // Section break
    { story: "Content scene 1...", sceneTransition: "none" },
    { story: "Content scene 2...", sceneTransition: "none" },
    { story: "Content scene 3...", sceneTransition: "fade" },    // Section break
    { story: "Conclusion...", sceneTransition: "none" }
  ]
}
Result: Fast-paced content with transitions only marking major section changes.

Pattern 4: Directional Storytelling

Use directional transitions to show progression or flow.
{
  scenes: [
    { story: "Step 1...", sceneTransition: "wiperight" },        // Move forward
    { story: "Step 2...", sceneTransition: "wiperight" },        // Move forward
    { story: "Step 3...", sceneTransition: "wiperight" },        // Move forward
    { story: "Review...", sceneTransition: "wipeleft" },         // Go back
    { story: "Conclusion...", sceneTransition: "fade" }
  ]
}
Result: Visual flow showing forward progression, then reflection.

Common Use Cases

Professional Presentations

{
  scenes: [
    { story: "Company overview and introduction...", sceneTransition: "fade" },
    { story: "Our services and capabilities...", sceneTransition: "fade" },
    { story: "Client success stories...", sceneTransition: "fade" },
    { story: "Contact us for more information...", sceneTransition: "none" }
  ]
}
Result: Clean, professional presentation with classic fade transitions.

Social Media Content

{
  scenes: [
    { story: "Hook: Did you know this fact?", sceneTransition: "hblur" },
    { story: "Main content and explanation...", sceneTransition: "wiperight" },
    { story: "Call to action: Follow for more!", sceneTransition: "circlecrop" }
  ]
}
Result: Dynamic, modern social media video with engaging transitions.

Step-by-Step Tutorial

{
  scenes: [
    { story: "Step 1: First, do this...", sceneTransition: "smoothright" },
    { story: "Step 2: Then, do that...", sceneTransition: "smoothright" },
    { story: "Step 3: Next, complete this...", sceneTransition: "smoothright" },
    { story: "Final result: You're done!", sceneTransition: "fade" }
  ]
}
Result: Clear progression through steps with smooth directional transitions.

Product Showcase

{
  scenes: [
    { story: "Introducing our new product...", sceneTransition: "radial" },
    { story: "Feature 1: Advanced technology...", sceneTransition: "wiperight" },
    { story: "Feature 2: Easy to use...", sceneTransition: "wiperight" },
    { story: "Available now! Order today!", sceneTransition: "fade" }
  ]
}
Result: Engaging product showcase with attention-grabbing transitions.

Best Practices

Choose transitions that complement your content style:
  • Professional/Serious: Stick to fade and none for conservative feel
  • Energetic/Dynamic: Use wiperight, hblur, radial for movement
  • Modern/Stylish: Try circlecrop, hblur, smoothleft
  • Traditional/Classic: Use fade exclusively for timeless look
  • Educational: Prefer subtle transitions (fade, smoothright) that don’t distract
  • Brand Alignment: Ensure transitions match your brand personality
Create visual consistency throughout your video:
  • Same Transition: Use one transition type for unified feel
  • Transition Family: If varying, stick to one family (all wipes, all smooth, etc.)
  • Predictable Pattern: Establish a pattern viewers can follow
  • Section Markers: Use special transitions only for major section changes
  • Avoid Randomness: Don’t randomly mix transitions without purpose
  • Test Consistency: Preview to ensure transitions feel cohesive
Exercise restraint with flashy effects:
  • Less is More: Dramatic transitions lose impact if overused
  • Strategic Placement: Save dramatic transitions for key moments
  • Viewer Fatigue: Too many effects can tire viewers
  • Content Focus: Transitions should enhance, not overshadow content
  • Professional Standard: Corporate content should favor subtle transitions
  • Test Audience: Check if transitions distract from message
Ensure transitions fit your video pacing:
  • Scene Length: Very short scenes with transitions may feel rushed
  • Content Type: Fast-paced content works with quick transitions (none, fade)
  • Viewer Comfort: Give viewers time to process each scene change
  • Music Sync: Consider how transitions work with background music
  • Natural Breaks: Place transitions at natural content breaks
  • Flow Testing: Preview to ensure pacing feels natural
Choose transitions based on where and to whom you’re publishing:
  • YouTube: fade and wiperight work well for most content
  • Instagram/TikTok: Modern transitions (hblur, circlecrop) for younger audience
  • LinkedIn: Conservative transitions (fade, none) for professional network
  • Corporate: Stick to fade for internal/external business videos
  • Educational: Subtle transitions that don’t distract learners
  • Platform Trends: Research what’s popular on your target platform

Troubleshooting

Problem: Expected transition effect doesn’t show between scenes.Solution:
  • Verify you set sceneTransition on the FIRST scene (not the second)
  • Remember: Scene 1’s transition goes TO Scene 2
  • Check spelling of transition name (case-sensitive)
  • Valid transitions: fade, none, wipeup, wipedown, wipeleft, wiperight, smoothleft, smoothright, radial, circlecrop, hblur
  • Ensure you have at least 2 scenes (transitions connect scenes)
  • Last scene’s transition typically isn’t used (no scene after it)
Problem: Transition effect shows up between unexpected scenes.Solution:
  • Review which scene has the sceneTransition parameter
  • Transition is placed at the END of the scene that defines it
  • If Scene 2 has sceneTransition: "fade", it affects Scene 2 → Scene 3
  • Check your scene array order matches your intended flow
  • Verify you didn’t accidentally add transition to wrong scene
  • Use comments in code to label which transition goes where
Problem: Different transition types look very similar in output.Solution:
  • Some transitions are subtle (fade vs. none can be quick)
  • Preview the video carefully to see transition effects
  • Very short scenes may not show full transition effect
  • Try dramatically different transitions to test (fade vs radial)
  • Ensure scenes are long enough for transition to be visible
  • Check that browser/player supports transition rendering
Problem: Transitions don’t look smooth, appear jarring.Solution:
  • This is typically expected behavior - transitions have standard duration
  • Scene content may create visual discord (very different scenes)
  • Try using fade for smoother, more universal transitions
  • Ensure scenes have sufficient length before/after transition
  • Consider if scene content naturally flows together
  • Very short scenes (under 2 seconds) may feel rushed with transitions
Problem: API returns error about invalid transition value.Solution:
  • Check spelling of transition name exactly as documented
  • Transition names are case-sensitive (use lowercase)
  • Valid values: fade, none, wipeup, wipedown, wipeleft, wiperight, smoothleft, smoothright, radial, circlecrop, hblur
  • Ensure no extra spaces or special characters
  • Verify you’re passing a string, not an object or number
  • Example correct usage: sceneTransition: "fade"
Problem: Transition duration seems too fast or too slow.Solution:
  • Transition duration is automatically optimized by the API
  • You cannot manually control transition duration
  • All transitions use standard, pre-defined durations
  • To work around:
    • Choose different transition types (some feel longer/shorter)
    • Adjust scene durations to affect overall pacing
    • Use none for instant cuts if transitions feel too slow
  • This is a current limitation of the transition system
Problem: Video starts with a transition effect.Solution:
  • First scene’s transition applies when moving TO the second scene
  • There should be no transition at the very start of the video
  • If you see an effect at video start, it may be:
    • An intro scene with its own transition
    • Video player fade-in (not part of your video)
    • Check that first scene’s transition isn’t being misapplied
  • The transition at video start should typically be instant (no effect)

Transition Behavior Examples

Understanding exactly when transitions occur:

Example 1: Three Scenes with Different Transitions

{
  scenes: [
    { story: "Scene A", sceneTransition: "fade" },       // Fade when going A → B
    { story: "Scene B", sceneTransition: "wiperight" },  // Wipe when going B → C
    { story: "Scene C", sceneTransition: "none" }        // Not used (last scene)
  ]
}
Result:
  • Video starts → Scene A (no transition)
  • Scene A ends → FADE → Scene B begins
  • Scene B ends → WIPE RIGHT → Scene C begins
  • Scene C ends → Video ends (no transition)

Example 2: All Scenes Use Same Transition

{
  scenes: [
    { story: "Scene 1", sceneTransition: "fade" },
    { story: "Scene 2", sceneTransition: "fade" },
    { story: "Scene 3", sceneTransition: "fade" },
    { story: "Scene 4", sceneTransition: "fade" }
  ]
}
Result: Fade transition between every scene for consistent flow.

Example 3: No Transitions (Fast Cuts)

{
  scenes: [
    { story: "Scene 1", sceneTransition: "none" },
    { story: "Scene 2", sceneTransition: "none" },
    { story: "Scene 3", sceneTransition: "none" }
  ]
}
Result: Instant cuts between all scenes, no transition effects.

Next Steps

Enhance your videos with these complementary features:

API Reference

For complete technical details, see: