forgehub. A small, independent toolbox

Cue Offset Bench

How to shift and save your subtitles with Cue Offset Bench

Paste your SRT text, enter a whole-number offset in milliseconds and choose Shift cues. Review the complete before-and-after ledger, then choose Download shifted.srt. The completed Cue Offset Bench now accepts your own subtitles. Edits clear the result, validation errors preserve your input, and reset or reload discards the work, so save each checked result before leaving.

Open Cue Offset Bench

Start with your own SRT text

The completed interactive app replaces the read-only preview described in the earlier timing-example article. You can now paste subtitles, submit an offset and download the transformed SRT. This guide follows that working form rather than treating the bundled timing example as the only available operation.

Open your SRT in a text editor and copy its contents into Paste SRT text under Source subtitles. There is no file-import control. Keep the original file separately: the app holds work only in tab memory and does not maintain a saved history.

Each cue needs a positive decimal identifier, an exact timing line such as 00:00:10,000 --> 00:00:12,500, and at least one nonblank subtitle text line. Separate cues with blank lines. The limits are 256 KiB of UTF-8 input and 2,000 cues; a character count alone does not establish the byte size.

Enter a known correction and submit it

Suppose you have established outside the app that captions should appear 750 milliseconds earlier. Enter -750 in Offset in milliseconds, then choose Shift cues. A cue running from 00:00:10,000 to 00:00:12,500 becomes 00:00:09,250 to 00:00:11,750. Use a positive value when captions need to move later.

Enter the value as whole milliseconds, with an optional plus or minus sign. For half a second, use 500 rather than 0.5, 500ms or an exponent. Surrounding spaces are rejected. The permitted range is -3,600,000 through +3,600,000; 0 is also accepted.

The app cannot determine that correction for you. It does not load a recording or fix a discrepancy that grows over time. Establish a constant correction elsewhere, then use this form to apply it to all cues.

Inspect the complete ledger before saving

After a successful shift, check the cue count and signed offset, then read All cues ? before and after. Every cue has its identifier, original start and end, and shifted start and end. Scroll the ledger to inspect the full set; the First and Last summaries refer to input order rather than the earliest or latest ending caption.

Check the Complete shifted SRT field as well as the timing columns. Subtitle lines remain literal, including spaces, Unicode and markup. The app does not render markup as a styled subtitle preview or clean up the words. Overlapping cues are allowed and stay overlapping after the same correction is applied.

Correct a rejected submission without replacing everything

If validation fails, read the focused error and repair the source or offset. The pasted input stays available, but there is no prepared result to download. A reported block is a sequential nonempty cue block, not necessarily the number printed as its identifier.

Check exact timestamp punctuation and spacing first, then identifiers and cue order. Identifiers must be unique positive decimal integers: 01 and 1 count as duplicates. Each end must be later than its start, and starts cannot decrease through the pasted sequence. The app does not sort a disordered file for you.

A shifted boundary below zero or above 99:59:59,999 rejects the entire operation. It does not shorten a caption, drop the offending cue or export the remaining ones. Correct the source or choose an appropriate offset, then submit again.

Save the current result before editing or leaving

Choose Download shifted.srt after reviewing the successful result. Saving is an explicit action; calculation alone does not save a file. The generated file uses UTF-8 without a byte-order mark, LF line endings, blank lines between cues and a final newline. Preserving subtitle text therefore does not mean preserving every byte of the original file.

If downloading is unavailable, select the complete output and copy it into a local text editor, then save it as SRT. Browser saving behavior varies. Any source or offset edit immediately clears the output and disables download until another successful shift; Example also replaces the inputs and clears the result.

Save before choosing Reset, reloading or leaving the page. Those actions clear work. To make another version, retain the original SRT outside the app, adjust the input or offset deliberately, and generate a fresh result.

AI-assisted ForgeHub editorial. App capabilities were checked against its implementation; this guide is not an independent review.

Frequently asked questions

Why is Download disabled after I press Example?

Example fills the source and sets +1500, but clears any previous proof and output. Choose Shift cues to calculate a new result before downloading.

Can I keep leading zeros in cue numbers?

Yes. Identifier text such as 007 is retained. Uniqueness is checked without leading zeros, however, so 007 and 7 cannot both appear as separate identifiers.

Can I use zero to check and reserialize an SRT?

Yes. An offset of 0 still runs strict validation and produces output with unchanged timing. The output uses canonical timestamps, LF line endings, blank cue separators and a final newline without an added BOM.

Will the app upload or remember my subtitles?

The implemented workflow uses volatile tab memory without uploads, accounts or storage APIs. Download explicitly creates a local file; reset, reload and page departure discard the work.