Imaginary Captions has 3 main panels:

  • The Project Panel (left)
  • The Media Panel (top right)
  •  The Caption Panel (bottom right)


The Project Panel

Imaginary Captions organizes your work into projects that have media assets with captions. The project panel is where you set up your projects and browse the media assets for captioning. It is a simple tree structure with the projects at the type and media assets in the project folders.

When you first launch Imaginary Captions, you will naturally have no projects. Go to File | New Project to  create your first project.

Once you have projects in place, you will want to add all media assets you intend to caption. You do this through the Project | Load Asset menu item. You can reference video files either on your own hard drive or streamed through popular streaming services.

The Media Panel

Whenever you select a media asset in the Project Panel, the video is loaded into the media panel. Here, you can browse the video like you would in any common video player. In addition, you have menu items and keyboard shortcuts for manipulating captions for the video.

The Captions Panel

Also when you select a media asset, any captions currently saved for that asset appear in the Captions Panel. The Captions Panel indicates what language you are working in, any in points and out points you have set, and the current time code for the media player. This panel is where you will spend the bulk of your time.


A project is the starting point for all your captioning work. Each project can contain any number of media assets and their associated captions.

You manage your projects in the Project Panel on the left side of the application. Each project is a folder into which you load media assets.

Creating a Project

To create a project, go to File | New Project. This brings up the New Project dialog.

A project requires a name and a media language. You may also specify which language you intend to provide translations for.

The media language is the main language of the video itself. Whatever you have selected for a media language will automatically be greyed out and deselected in the translations field.

If you intend to manage translations of your captions in Imaginary Captions, you will also want to specify here the languages you expect to support. You can add or remove languages at any time through Project | Project Settings.

As you provide captions for your media assets, you will have the ability to select the language you are working in. The available languages are determined by the media language and the list of translations.

For this first release of Imaginary Captions, we've hard coded a small set of available languages. We expect to greatly expand this list in the next release and add support for automated translations.

Making Changes

You can always change any of the above values by going to the Project | Project Settings menu item. You are not able to remove languages for which you currently have captions. You must first delete all captions for that language in the project before the settings dialog will let you remove the language.

Media Assets

Media Assets are the videos you want to caption. Imaginary Captions expects you to provide captions for each asset in a project in each language configured for the project.

Loading Assets

You are not making any changes to your actual media assets in Imaginary Captions. Imaginary Captions simply needs to be able to ready your media assets in order to show them to you for captioning.

You have two options for loading media assets:

  • Local
  • Remote

Local Assets

Local assets are .mov or .mp4 files on your hard drive. Imaginary Captions stores a reference to those files and associates them with your media asset. To load these assets into Imaginary Captions, select the project into which you wish to lead them and then go to Project | Load Asset | From File. You will be prompted with a dialog box from which you can select one or more video files.

All video assets in your import will show up under your project folder. By default, the name of the asset is its file name. You can change this name by clicking the asset in the Project Panel.

If all went well with your load, the Media Panel should be ready to play any asset you select.

Remote Assets

You can also load videos from video platforms like Brightcove, Seeka TV, and Vimeo. Imaginary Captions does not download anything, but instead connects to your video platform and uses the stream. Thus, the advantage of remote assets is that you don't need them on your computer. The downside, however, is that you can work with remote assets only when you have an Internet connection.

To load remote assets, select the project into which you wish to load them and click Project | Load Asset | From URL. You will see a dialog box that asks you which service you want and what URL the video is at.

When you select the service you desire, it will present you with instructions specific to that provider for locating the streaming URL for the service. Follow the instructions and enter the URL into the URL field. If all goes well, the asset will be loaded into your project.

If you are using an unsupported service, but you know the HLS streaming uRL, click Generic HLS and enter that URL. Then cross your fingers! NOTE: Good luck finding the HLS URL for YouTube videos!

Managing Media Assets

You interact with your media assets primarily in the Media Panel which is controlled via the Asset menu. Your goal is to watch the video, mark caption points, and create the captions.

The typical workflow is:

  1. Start the video playing
  2. Keep your left hand on the cmd+option keys and your right hand on the i key.
  3. Just before you hit dialog, use the cmd+option+i to create a caption "in point"
  4. The video will keep playing. Click cmd+option+o to set an out point when the dialog breaks.
  5. Hit cmd+option+, to review the in point to the outpoint.
  6. If it sounds good, hit cmd+option+p to build a caption at those points.
  7. Enter the dialog in the pop-up and save.
  8. The new caption will appear in the Captions Panel. In addition, your in point will be set to the old out point and the out point will be cleared.


Captions are what this app is all about. You configure your projects and media just so you can get to captioning. In the media discussion, we covered the basic captioning workflow. This document goes into the details.

Anatomy of a Caption

A caption consists of a start timecode, an end timecode, and some text. Your job is to specify those three things for every sound of interest to a viewer using captions or subtitles. Furthermore, you need to do so in a way that preserves that narrative integrity of what is on screen (including suspense) but still making it possible for people to read and digest the contents. When in doubt, opt for fidelity to the original over speed.

Any video service that provides captioning reads a captions file and displays the appropriate caption at the appropriate points during the video. There are a number of different captions formats. Part of the goal of Imaginary Captions is to make sure you don't need to worry about that. This first release of Imaginary Captions will generate captions for the two most common formats: Web VTT and SRT.

Creating a Caption

As the above paragraphs suggest, your job is to define the start, end and text for every sound in your video. We provide a number of different mechanisms for accomplishing this. How you approach it depends on your use case:

  • Are you creating captions from scratch?
  • Are you fixing some existing captions?
  • Are you reviewing the results of transcription software?
  • Are you translating existing captions into other languages?

Imaginary Captions supports all of these different workflows. In this chapter of the online help, we cover the basic tools. Other chapters will go into details on each of the use cases.


Timecode for captioning is done in hours:minutes:seconds.milliseconds. There are no frames in the sense you might be used to. The lack of frames as a measurement may seem odd in the video world, but for streaming it makes complete sense since the frame rate may vary. 

In the Captions Panel, you will see each caption with its start, end, and text. You can manually alter the timecode for any existing caption right in the table.

When creating new captions, you specify your start and end timecodes by creating in points and out points. You watch the video and specify the start of a caption as an "in point" and the end as an "out point". You can enter these values (or change them) directly in the "In" and "Out" fields below the Media Panel. The easiest way, however, is to watch the video and hit cmd+option+i at the in point and cmd+option+o at the out point. 

You can always review your settings before creating a new caption by playing the in to out through cmd+option+,. You then create the caption by entering cmd+option+p which then prompts you for the caption text.

You can speed things up by directly hitting cmd+option+p without setting an out point. If you attempt to create a caption with no out point, Imaginary Captions will automatically define an out point at the point where you created the caption. 


Text, of course, is what is being said or heard in the video during the portion of the video marked by the in and out points. It's OK to let the text linger after the dialog has ceased in order to give more time for it to be read, but avoid presenting dialog and sounds before they actually occur in the video. Doing so can be confusing for a viewer.

Everything is important, not just dialog. Chances are if the sound is in the video and its not expected ambient sound, it has some kind of story value that the filmmaker wanted to convey. So it should be in the captions. Especially music. Its important to note that many people who use captions can hear partially or totally or were able to hear at one time. So they may be familiar with the music that is being played and will appreciate the feeling the filmmaker is trying to create. It's also helpful to let the viewer know that the captions didn't just stop working during long musical interludes.

In your first run through a video, don't worry too much about length of captions (either in terms of amount of text or duration). One of the advantages of Imaginary Captions is that you can focus on getting the dialog matched to time in a first run and then easily adjust for experience in a second run.