What is time stretching?
Blender’s Time Stretching is a great way to preview your animation faster or slower without touching keyframes.
Playhead vs Playline
In Blender's Animation Editors (NLA, Dope Sheet, Timeline, etc), the current frame is indicated by a Playhead and a Playline. The Playhead shows the Relative Frame number, when the Playline shows the Absolute Frame number.

If timestretch is enabled, you will notice a distinct separation between the Playhead and Playline. Here is an example with a Timestretch x2.

The problem
By default, Time stretching is not fully compatible with some of Blender's native features:
- It ignores the Start/End and Preview ranges, which can cause parts of the animation to be cropped
- It breaks the playhead’s relative position, shifting the perceived active frame
- It is incompatible with operators like Jump to Keyframe, Jump to Marker, and similar timeline tools

UI
This add-on adds a new section under Output → Frame Range → Time Stretching → Sync:

Main features
Frames:
- Sync your Timeline Playhead position to remain in the same relative frame while using Time Stretching
- Sync your Timeline Range Start/End frames to your Time Stretching values
- Sync your Preview Range Start/End frames to your Time Stretching values
- Sync your Markers Position to your Time Stretching values
- Show temporary Markers at the original Frame/Preview Range (not affected by Sync)
Operators (work with Keymaps only):
If time stretch is not detected, those operators will behave exactly like Blender's vanilla operators
- Jump to Keyframe (Sync)
- Jump to Marker (Sync)
- View Frame (Sync)
Settings
- Keymaps are optional and disabled by default
- However, for all functions in the "Operators" category, you must enable the "Operator Override" Keymaps

Note
- Blender 5.1: Playhead/Playline display is broken.
- “Sync Playhead Position” is smoother when using shortcuts, but also works when adjusting values directly in the UI
- if enabled, "Sync Timeline Range" will still be ignored while in Preview mode to avoid conflicts
- the add-on assumes the default Old and New values in Time Stretching are 100/100