Title: Captionwright – AI Video Captions, Subtitles &amp; Transcripts
Author: karelialabs
Published: <strong>October 25, 2026</strong>
Last modified: October 25, 2026

---

Search plugins

![](https://ps.w.org/captionwright/assets/banner-772x250.png?rev=3764312)

![](https://ps.w.org/captionwright/assets/icon.svg?rev=3764312)

# Captionwright – AI Video Captions, Subtitles & Transcripts

 By [karelialabs](https://profiles.wordpress.org/karelialabs/)

[Download](https://downloads.wordpress.org/plugin/captionwright.1.0.2.zip)

 * [Details](https://wordpress.org/plugins/captionwright/#description)
 * [Reviews](https://wordpress.org/plugins/captionwright/#reviews)
 * [Development](https://wordpress.org/plugins/captionwright/#developers)

 [Support](https://wordpress.org/support/plugin/captionwright/)

## Description

**Automatic captions for your WordPress videos – free, private and without per-minute
fees.**

Captions are required for pre-recorded video under WCAG 2.1 (success criterion 1.2.2)–
the standard behind the US ADA Title II rule for state and local governments, the
European Accessibility Act and the EU Web Accessibility Directive for public bodies.
Writing captions by hand is slow, and captioning services charge per minute – often
$0.25 a minute for AI captions and $1.99 a minute for human captions.

Captionwright writes them for you, right inside WordPress:

 1. Go to **Media  Captions** and click **Generate** next to a video or audio file.
 2. OpenAI’s Whisper speech model listens to the file **inside your browser tab** (
    WebGPU when your computer has a graphics card, WebAssembly otherwise).
 3. Check and edit the text next to a live preview, then save.

Your videos immediately show the captions in the core Video block and in `[video]`
shortcodes – no theme changes needed. A clickable transcript below the video lets
visitors – and search engines – read every word.

#### Who it is for

 * **Schools, universities and public bodies** that must caption their recorded 
   video
 * **Course creators and membership sites** that want captions and searchable transcripts
 * **Podcasters** who want a transcript under every episode
 * **Agencies** that need to make client sites accessible without a per-minute bill
 * **Churches, clubs and nonprofits** that publish recordings of talks and meetings

#### Features

 * Automatic captions in 30 languages, or an English translation of any of them
 * Runs locally in the browser: no uploads, no account, no API key, no usage fees
 * Edit captions next to a live preview before saving
 * Captions are added automatically to the core Video block and the `[video]` shortcode
 * **Transcript block** with clickable times that jump the player, and the current
   sentence highlighted while it plays
 * Optional transcript below every captioned video, which also helps search engines
   and AI assistants read your videos
 * `[captionwright_transcript id="123"]` shortcode for classic editors and page 
   builders
 * Standard WebVTT subtitle files you can download and reuse anywhere
 * Four model sizes, from Tiny (38 MB) to Large v3 Turbo (best accuracy, needs a
   graphics card)

#### Captionwright Pro

For larger sites, [Captionwright Pro](https://karelialabs.gumroad.com/l/captionwright-pro)
adds:

 * **Caption the whole Media Library** with one click – pause and resume any time
 * **Translate captions into 30 languages** with timings kept in sync
 * **Interactive transcripts for YouTube and Vimeo** embeds
 * **Cloud mode** with your own Groq or OpenAI key for large libraries

Everything in the free plugin stays free, with no limits on the number of videos
or minutes.

#### Privacy

Speech recognition happens on the computer of the person who clicks Generate. The
audio is decoded in the browser and is never sent to any server. Captions are saved
as WebVTT files in your own uploads folder.

### External services

This plugin downloads the Whisper speech-recognition model files from **Hugging 
Face** (huggingface.co) the first time you generate captions in a browser, and from
the browser cache afterwards.

 * What is sent: ordinary HTTP requests for the public model files (for example `
   onnx-community/whisper-base`), which include your IP address and browser user
   agent as with any web request. No audio, text or site data is sent.
 * When: only after an administrator turns on “Allow model download” under Media
   Captions  Settings, and only when someone clicks Generate.
 * Hugging Face terms of service: https://huggingface.co/terms-of-service
 * Hugging Face privacy policy: https://huggingface.co/privacy

### Third-party libraries

 * Transformers.js 4.3.1 by Hugging Face – Apache License 2.0 – https://github.com/
   huggingface/transformers.js
 * ONNX Runtime Web 1.31.0-dev.20260914-8d85527a0 by Microsoft – MIT License – https://
   github.com/microsoft/onnxruntime
 * Whisper model weights by OpenAI (ONNX conversions by the onnx-community organisation)–
   MIT License – https://github.com/openai/whisper

The library files ship unmodified in `vendor/transformers/` together with their 
licence texts. They are copied byte for byte from the published npm packages:

 * `transformers.min.js` – `dist/transformers.min.js` from `@huggingface/transformers`
   4.3.1. Source code: https://github.com/huggingface/transformers.js/tree/4.3.1
 * `ort-wasm-simd-threaded.asyncify.mjs` and `ort-wasm-simd-threaded.asyncify.wasm`–
   from `dist/` in `onnxruntime-web` 1.31.0-dev.20260914-8d85527a0. Source code:
   https://github.com/microsoft/onnxruntime/tree/8d85527a010e294a26b274749f74294b2a32cec5

The `.wasm` file is ONNX Runtime compiled to WebAssembly. It is the engine that 
runs the Whisper model in the browser, on the graphics card (WebGPU) as well as 
on the processor, so captions cannot be generated without it. Only this one runtime
file is included, not the other ONNX Runtime variants.

## Screenshots

[⌊Media → Captions: every video and audio file with its caption languages.⌉⌊Media
→ Captions: every video and audio file with its caption languages.⌉[

Media  Captions: every video and audio file with its caption languages.

[⌊Check and edit the captions next to a live preview before you save.⌉⌊Check and
edit the captions next to a live preview before you save.⌉[

Check and edit the captions next to a live preview before you save.

[⌊The captions in the core Video block, with the interactive Transcript block below
it.⌉⌊The captions in the core Video block, with the interactive Transcript block
below it.⌉[

The captions in the core Video block, with the interactive Transcript block below
it.

## Blocks

This plugin provides 1 block.

 *   Transcript Shows the transcript of a captioned video or audio file. Click a
   time to jump the player there.

## FAQ

### Which browsers work?

Tested in current Chrome, Edge and Firefox, with a graphics card (WebGPU) and on
the processor alone (WebAssembly). The graphics card is several times faster; if
it causes errors, Captionwright switches to the processor automatically, and you
can choose “Use the processor only” in the settings. Safari 17 or later has all 
the browser features Captionwright needs, but we have not tested it on a Mac yet.
Only the person creating captions needs one of these browsers – visitors see the
captions in any browser.

### How long does it take?

With a graphics card (WebGPU) and the Base model, speech is processed roughly ten
times faster than real time – in our tests a 90-second video took 8 seconds. Without
a graphics card it runs on the processor and is noticeably slower; choose Tiny or
Base there. The model (73–199 MB for Base) is downloaded only once per browser.

### How accurate is it?

Whisper is one of the most accurate open speech models, but no automatic captions
are perfect. Always read through the text in the editor before saving, especially
names and technical terms. For accessibility compliance, captions must be accurate.

### Where are the caption files stored?

In `wp-content/uploads/captionwright/`, one `.vtt` file per file and language.

### What happens to my captions if I delete the plugin?

Deactivating or updating keeps everything. Deleting Captionwright removes its settings,
the caption files in `wp-content/uploads/captionwright/` and the caption records
on your media. Your videos are never touched. To keep the captions, download the.
vtt files or copy that folder first.

### My media is on a CDN or cloud storage

The browser must be able to download the file. If it lives on another domain, that
domain must allow cross-origin requests from your site.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Captionwright – AI Video Captions, Subtitles & Transcripts” is open source software.
The following people have contributed to this plugin.

Contributors

 *   [ karelialabs ](https://profiles.wordpress.org/karelialabs/)

[Translate “Captionwright – AI Video Captions, Subtitles & Transcripts” into your language.](https://translate.wordpress.org/projects/wp-plugins/captionwright)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/captionwright/), check
out the [SVN repository](https://plugins.svn.wordpress.org/captionwright/), or subscribe
to the [development log](https://plugins.trac.wordpress.org/log/captionwright/) 
by [RSS](https://plugins.trac.wordpress.org/log/captionwright/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.0.2

 * Caption files keep the shared `wp-content/uploads/captionwright/` folder, also
   when Captionwright Pro is installed later. Uninstall also removes the folder 
   Pro 1.0.0–1.0.1 used by mistake.

#### 1.0.1

 * Version kept in step with Captionwright Pro. No changes to the free features.

#### 1.0.0

 * First stable release. Automatic fallback from the graphics card to the processor,
   a “Use the processor only” setting, audio decoding that also works when the browser
   cannot decode at 16 kHz.

#### 0.2.0

 * Add-on hooks (engines, track actions, settings sections) and paging in the media
   list.
 * Captions are split at sentence boundaries and wrapped at commas.
 * Transcript block: works with YouTube and Vimeo players when they have captions.

#### 0.1.0

 * First release: browser-based Whisper captions, caption editor with live preview,
   Video block and shortcode integration, Transcript block and shortcode.

## Meta

 *  Version **1.0.2**
 *  Last updated **16 hours ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.5 or higher **
 *  Tested up to **7.1.3**
 *  PHP version ** 7.4 or higher **
 * Tags
 * [accessibility](https://wordpress.org/plugins/tags/accessibility/)[captions](https://wordpress.org/plugins/tags/captions/)
   [subtitles](https://wordpress.org/plugins/tags/subtitles/)[transcript](https://wordpress.org/plugins/tags/transcript/)
   [wcag](https://wordpress.org/plugins/tags/wcag/)
 *  [Advanced View](https://wordpress.org/plugins/captionwright/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/captionwright/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/captionwright/reviews/)

## Contributors

 *   [ karelialabs ](https://profiles.wordpress.org/karelialabs/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/captionwright/)