Captionwright Pro
1. Install
- In WordPress, go to Plugins → Add New → Upload Plugin and upload
captionwright-pro-1.0.2.zip. - Click Activate. If the free Captionwright plugin is installed, Pro replaces it automatically and keeps all your captions.
- Open Media → Captions.
Requirements: WordPress 6.5 or later, PHP 7.4 or later. To create captions in the browser you need a current Chrome, Edge or Firefox (Safari 17+ should work but is not yet tested by us). Visitors can watch the captions in any browser.
2. Licence key and updates
Bought on WPBay or another marketplace: no key needed
If you bought Captionwright Pro on WPBay, or on Pluggable, PlugNest, CodeGrape, itch.io or Payhip, you have the marketplace build. It needs no licence key: there is nothing to enter, and every Pro feature is active as soon as you activate the plugin. This build never contacts a licence server.
Updates: the marketplace build does not check for updates by itself. When we release a new version, the marketplace makes the new zip available in your account:
- WPBay: log in to WPBay and download the latest zip from My Account → My Downloads. If WPBay also lists the purchase under License Manager, you do not need to enter that key anywhere in WordPress.
- Other marketplaces: download it from your purchases or library on the marketplace where you bought it. On Payhip, use the download link in your receipt email.
To install the update, go to Plugins → Add New → Upload Plugin, choose the new zip and click Replace current with uploaded. Your captions, transcripts and settings are kept, because updating does not run the uninstall clean-up described in section 13.
Bought on Gumroad: enter your licence key
Open Media → Captions → Pro settings, paste the licence key from your Gumroad receipt (it is also in your Gumroad Library) and click Activate. A 1-site licence can be activated twice, so you can move to a new site or reinstall without asking us. The 10-site licence works the same way for ten sites. New versions are added to your Gumroad Library; install them the same way as above.
For Gumroad licences: your captions, transcripts and the free features keep working if a licence ends. The queue, cloud transcription, translations and video-link transcripts need an active licence. Marketplace copies have no expiry.
3. Your first captions
- On Media → Captions, open Settings and tick Allow model download, then save. The speech model is downloaded once from Hugging Face into your browser's cache.
- Click Generate next to a video or audio file.
- Choose the spoken language, the output (captions in that language, or an English translation) and the model. Base is a good start; Small is more accurate; Large v3 Turbo is the most accurate and needs a graphics card.
- Click Start and keep the tab open. With a graphics card, a 90-second video took about 8 seconds in our tests once the model was downloaded.

4. Check and edit
When listening is done, the captions open next to a preview of your video with the captions on. Fix names and terms directly in the text; keep the time lines (00:00:01.000 --> 00:00:04.000) as they are. Choose the language and the name viewers see in the player, then click Save captions. Download .vtt gives you the standard WebVTT file.

No automatic captions are perfect. For accessibility compliance captions must be accurate – always read them through.
5. Show captions and transcripts
- Video block and
[video]shortcode: captions appear automatically – nothing to do. - Transcript block: add the Transcript block and pick the file. Visitors can click a time to jump the player there; the line being spoken is highlighted.
- Automatic transcript: tick Add a transcript below every captioned video block in Settings.
- Shortcode:
[captionwright_transcript id="123"](optional:lang="sv",collapsed="no",times="no").

6. Caption the whole library
In Queue: caption many files, choose the engine, language and model, then click Caption every file without captions – or tick files in the list and click Caption selected files. Files that already have captions in that language are skipped. Captions are saved automatically; you can review them later with Edit. Stop after this file pauses the queue, and Resume continues it, even after reloading the page.
If a file fails (for example, the browser cannot read its sound, or the cloud service is unreachable), the queue moves on to the next file and keeps the failed one in a list below the progress bar, with the reason. The file is also marked Queue failed in the media list. The list survives a page reload. Click Retry failed files to process only those files again; files that were captioned successfully are never processed again, and a failed file that has since got captions in that language is skipped.
7. Cloud transcription (your API key)
Cloud mode sends the audio from your server to a speech service and is much faster than the browser, on any computer. You pay the service directly.
| Service | What to enter | Typical cost |
|---|---|---|
| Groq (recommended) | Create a key at console.groq.com/keys. Model: whisper-large-v3-turbo. | About $0.04 per hour of audio |
| OpenAI | Key from platform.openai.com/api-keys. Model: whisper-1 (the newer gpt-4o transcribe models do not return timestamps). | See OpenAI pricing |
| Other | Any OpenAI-compatible service that returns verbose_json segments: enter its base URL ending in /v1. | – |
Long files are split at quiet moments into parts small enough for your server's upload limit. The key is stored on your server and never sent to the browser. Choose Default engine to decide what Generate and the queue use first.

8. Translate captions
Click Translate next to a caption language, tick the languages you want and click Translate. Each language becomes its own caption track that viewers can choose in the player; timings stay identical.
Translation uses the AI service set up in Settings → Connectors (WordPress 7.0+). Without it, add an API key in Pro settings, click Load models and choose a chat model for translation.

9. YouTube and Vimeo
Captionwright does not download video from YouTube or Vimeo. Instead you import the caption file you own:
- YouTube Studio → Subtitles → ⋮ → Download (.srt or .vtt). Vimeo → video settings → Distribution → Subtitles.
- On Media → Captions, under YouTube and Vimeo transcripts, paste the video link, choose the file and the language, and click Add transcript.
- Embed the same video in a post. With Add a transcript below every captioned video block on, the transcript appears below it; or use the Transcript block. Clicking a line jumps the video there.

10. Settings reference
| Setting | What it does |
|---|---|
| Allow model download | Required once for in-browser speech recognition (downloads the model from Hugging Face). |
| Default model | Tiny, Base, Small or Large v3 Turbo. Larger is more accurate and slower. |
| Use the processor only | Skip the graphics card. Captionwright already switches automatically if the graphics card fails. |
| Default language | Pre-selected spoken language. |
| Show captions by default | Turns captions on when the video starts. |
| Add a transcript below every captioned video block | Adds the transcript automatically, also under YouTube/Vimeo embeds with transcripts. |
11. Troubleshooting
| Message or problem | Solution |
|---|---|
| "This browser could not read the sound in this file" | Use Chrome, Edge or Firefox, or upload an MP4 (H.264/AAC), WebM or MP3 version. Cloud mode has the same requirement because the audio is prepared in the browser. |
| "The file could not be downloaded from the Media Library" | Your media is on another domain (CDN or cloud storage). Allow cross-origin requests (CORS) from your site on that storage. |
| Slow on the processor | Use Chrome or Edge on a computer with a graphics card, choose a smaller model, or use cloud mode. |
| "The service rejected the API key" | Check the key in Pro settings. Paste a new key; leaving the field empty keeps the saved one. |
| "did not return timestamps" | Use a Whisper model: whisper-large-v3-turbo on Groq or whisper-1 on OpenAI. |
| Captions do not show in the video | The video must use the core Video block or the [video] shortcode with a file from the Media Library. Clear page caches after saving captions. |
| "This key has already been activated the allowed number of times" | Contact us through the store where you bought Pro and we will reset it. |
12. Privacy and external services
- In-browser mode: the audio never leaves the computer of the person creating captions. Only the model files are downloaded from Hugging Face.
- Cloud mode: audio parts are sent from your server to the service you chose (Groq, OpenAI or another). Translations send the caption text to that service or to the provider in WordPress Connectors.
- Licence (Gumroad copies): the licence key is checked with Gumroad when you activate it and once a day. Marketplace copies (WPBay and the others) never contact a licence server.
- Caption files are stored as WebVTT in
wp-content/uploads/captionwright/. They are public files, like your videos. See section 13 for what happens to them when you delete the plugin.
13. Deactivating, deleting and your caption files
- Deactivating Captionwright Pro removes nothing. Your caption files, transcripts and settings are kept, and they are back when you activate it again.
- Updating (replacing the plugin with a new zip) also keeps everything.
- Deleting Captionwright Pro under Plugins → Delete runs a clean-up:
- If the free Captionwright plugin is still installed, only the Pro settings and licence data are removed. All caption files and settings stay, because the free plugin uses them.
- Otherwise everything Captionwright created is removed: the caption files in
wp-content/uploads/captionwright/, the caption records attached to your media, the settings, the licence data and the YouTube/Vimeo transcripts. Videos then play without captions, and Transcript blocks show nothing.
- Deleting the free Captionwright plugin also removes its settings, the caption files and their records.
- Your videos and audio files in the Media Library are never changed or deleted.
Want to keep your captions before deleting the plugin? Click Download .vtt in the caption editor for each file, or copy the folder wp-content/uploads/captionwright/ from your server (one .vtt file per media file and language). They are standard WebVTT files that any player or caption tool can use.
Upgrading from Pro 1.0.0 or 1.0.1? Those versions saved caption files in wp-content/uploads/captionwright-pro/ instead. Version 1.0.2 moves them automatically to wp-content/uploads/captionwright/ the first time the site loads after the update, so the free plugin and Pro use the same files. If a file cannot be moved (for example, because of folder permissions), the old folder is kept and the move is tried again on the next page load. Deleting the plugin removes both folders.
Support
Contact us through the store where you bought Captionwright Pro: on WPBay, open a ticket from your account (WPBay's support system); on Pluggable, PlugNest, CodeGrape or itch.io, message us there; for Gumroad and Payhip, reply to your receipt.
Captionwright is made by Karelia Labs. Licensed under the GPL v2 or later.