> For the complete documentation index, see [llms.txt](https://captivatehelp.newbluelive.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://captivatehelp.newbluelive.com/design-and-customize-graphics/chapter-index-3/optimize-timing.md).

# Optimize the timing of a graphic

The **Title** > **Optimize Timing** menu in the Designer shortens a graphic’s timeline by removing dead space between animations. Tighter graphics render faster, cache faster in Captivate, and respond more quickly when you play them on air. Run it as the last step before saving a graphic to the Library.

## When to use it

Designs often accumulate empty space in their timelines while you iterate: an out-animation that starts long after the last in-animation finished, layers whose visible content ends well before the timeline does, idle frames between a Pause marker and the next layer’s entrance. None of that empty space carries information, but every empty frame still costs render and cache time.

Run **Optimize Timing** when:

* You’re about to save a finished graphic to the Library.
* A graphic is taking longer to cache or play on air than its visible content suggests.
* You imported a graphic from After Effects and want to tighten its native timeline.
* You’ve added or removed layers and the timeline length no longer reflects the actual content.

There’s no penalty to running the command more than once. If there’s no dead space left to remove, the timeline doesn’t change.

## Prerequisites

Two requirements are non-negotiable:

* The graphic must have a **Pause** marker. The optimizer uses that marker as the reference point for what counts as the on-air state versus the play-out tail.
* The graphic must not be a stinger. Graphics that carry **Cut** or **Transition** markers (the stinger marker family) are skipped because the cut point is the load-bearing time anchor and can’t be moved.

## The two menu options

Open **Title** > **Optimize Timing** and choose one:

1. **All Layers** — optimizes every layer in the graphic and moves the Pause marker. This is the right choice in almost every case.
2. **Selected Layers** — optimizes only the layers you’ve selected. The Pause marker stays put. Use this when you want to tighten part of a complex graphic while leaving other layers' timing alone.

## What changes and what doesn’t

The optimizer adjusts:

* Each layer’s start time and duration.
* In-transitions: their duration is scaled to keep the same absolute end time.
* Out-transitions: their start time is shifted so they still end where they did before.
* Layer transform keyframes: shifted, not scaled, so animation speed is preserved.
* Camera and light keyframes: shifted (only when you choose **All Layers**).
* The Pause marker position (only when you choose **All Layers**).
* The overall timeline length.

The optimizer leaves alone:

* Layers entirely before the Pause marker.
* Layers entirely after the Pause marker.
* Looping layers.
* Data Graph layers.
* Middle animations and effects that aren’t marked as entry or exit transitions — their normalized timing stays as authored.

## Tips for getting the most out of it

1. **Place the Pause marker deliberately.** The optimizer treats everything before the marker as the entry, and everything after as the exit. A well-placed marker is what makes the difference between a small improvement and a dramatic one.
2. **Mark your transitions explicitly.** The optimizer adjusts in-transitions and out-transitions only when they’re declared as such. Animations and effects that sit in the middle of a layer’s duration and aren’t marked as transitions are not adjusted. Convert "middle" animations to explicit in or out transitions when their role is really to bring the layer in or take it out.
3. **Save before you optimize.** The change is undoable, but a saved checkpoint makes it easier to A/B the result. Run **Optimize Timing**, scrub the timeline, and if anything looks off you can revert.
4. **Re-run after structural changes.** Adding, removing, or duplicating layers can reintroduce dead space. A second pass after major edits is cheap.
5. **Cache aware.** The optimizer also tells Captivate’s caching system the new shorter timeline length, so the cache doesn’t extend the title back to its original length when it next loads. The shorter timeline persists.

## Troubleshooting

{% hint style="info" %}
**"Cannot optimize: Layer \[name] has keyframe animation across the pause point."**

A layer has transform keyframes on both sides of the Pause marker with different values, which means the layer is animating across the pause. The optimizer can’t compress the time inside an active animation. Either move the animation entirely before or entirely after the pause, or convert the keyframe pair to matching values (so it’s a hold, not an animation).
{% endhint %}

{% hint style="info" %}
**"Pause marker adjusted back to avoid play-out flicker."**

A layer would have ended within a few frames of the proposed Pause position. The optimizer moved the Pause one frame earlier so the layer has visible content during play-out. No action required.
{% endhint %}

{% hint style="info" %}
**"Layer \[name] extended to avoid play-out flicker."**

Same situation as above, in **Selected Layers** mode. The optimizer extended the named layer so it doesn’t disappear immediately into the pause. If you’d rather see the layer end sooner, shorten it manually.
{% endhint %}

If the graphic still feels slow after a successful optimization, look at:

* [Effects](/design-and-customize-graphics/chapter-index-3/add-effects-to-design-layers.md) applied to many layers, particularly heavy GPU effects like blur and glow stacks.
* High-resolution image variables that are then scaled small in the Preview.
* Looping layers that the optimizer leaves alone — a long-running loop keeps the title rendering even when there’s nothing visible changing.

## Related

* [Animate design layers with keyframes](/design-and-customize-graphics/chapter-index-3/animate-design-layers-with-keyframes.md)
* [Add transitions to design layers](/design-and-customize-graphics/chapter-index-3/add-transitions-to-design-layers.md)
* [Create custom designs with flexible durations](/design-and-customize-graphics/chapter-index-3/create-custom-designs-with-flexible-durations.md) — covers the Pause and Transition markers.
* [Designer Timeline panel](/design-and-customize-graphics/chapter-index-1/designer-timeline-overview.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://captivatehelp.newbluelive.com/design-and-customize-graphics/chapter-index-3/optimize-timing.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
