Subtitle Ocr
Playground
Try it on WavespeedAI!WaveSpeedAI Subtitle OCR is a fast AI subtitle extraction model that extracts subtitles from videos and returns an SRT file URL. Ready-to-use REST inference API for OCR-based subtitle extraction, video caption recovery, subtitle generation, content localization, accessibility workflows, social media videos, and professional video processing with simple integration, no coldstarts, and affordable pricing.
Features
WaveSpeed AI Subtitle OCR
WaveSpeed AI Subtitle OCR extracts subtitles from a video using OCR and returns an SRT file URL. It is designed for subtitle recovery, caption extraction, accessibility workflows, localization prep, and video processing tasks where on-screen subtitles need to be converted into reusable subtitle files.
Why Choose This?
-
OCR-based subtitle extraction
Detect and extract burned-in or embedded on-screen subtitles from video frames. -
Direct SRT output
Returns a subtitle file URL that can be reused in editing, publishing, or localization workflows. -
Simple one-input workflow
Upload a video and generate subtitle output with minimal setup. -
Useful for accessibility and repurposing
Supports caption recovery, subtitle reuse, localization prep, and content accessibility workflows. -
Production-ready API
Suitable for subtitle extraction pipelines, social media processing, archive recovery, and post-production workflows.
Parameters
| Parameter | Required | Description |
|---|---|---|
| video | Yes | Input video to analyze for subtitle extraction. |
How to Use
- Upload your video — provide the source video that contains visible subtitles.
- Submit — run the OCR subtitle extraction request.
- Download the result — use the returned SRT file URL in your editing, publishing, or localization workflow.
Example Use Case
Extract burned-in subtitles from a fitness or tutorial clip and reuse them as an editable SRT file for republishing or translation.
Output
Returns one SRT file URL in the standard WaveSpeed prediction response.
Pricing
Pricing is billed in started 60-second units.
| Video Duration | Cost |
|---|---|
| 1s–60s | $0.16 |
| 61s–120s | $0.32 |
| 121s–180s | $0.48 |
| 181s–240s | $0.64 |
Billing Rules
- Base price is $0.16 per started minute
- Videos shorter than 60 seconds are billed as 60 seconds
- Billing rounds up in 60-second increments
- Pricing depends only on video duration
Best Use Cases
- Subtitle recovery — Extract hardcoded subtitles from existing videos.
- Accessibility workflows — Recover captions for reuse in accessible publishing.
- Localization prep — Turn on-screen subtitles into editable SRT assets for translation.
- Archive processing — Recover subtitle text from older video assets.
- Social media repurposing — Reuse subtitles from clips for editing or reposting.
Pro Tips
- Use the cleanest source video possible for better OCR accuracy.
- Videos with high subtitle contrast generally produce better extraction results.
- Subtitle extraction works best when text is clearly visible and not heavily stylized.
- Review the generated SRT before final use, especially for fast-moving or low-resolution footage.
Notes
videois required.- The model returns an SRT file URL, not a burned-in subtitle video.
- Pricing is fixed at $0.16 per started minute, with a minimum billed length of 60 seconds.
- Very small, low-contrast, stylized, or heavily animated subtitles may reduce OCR quality.
Related Models
- VEED Subtitles — Add styled subtitles to a video with automatic transcription or imported SRT.
- Other WaveSpeed subtitle and caption workflows — Useful when you need subtitle burn-in or subtitle styling instead of OCR extraction.
<ApiPage model={model}>
## Authentication
For authentication details, please refer to the [Authentication Guide](/docs-authentication).
## API Endpoints
### Submit Task & Query Result
## Parameters
### Task Submission Parameters
#### Request Parameters
#### Response Parameters
<SubmitResponse />
#### Result Request Parameters
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| id | string | Yes | - | Task ID |
#### Result Response Parameters
| Parameter | Type | Description |
|-----------|------|-------------|
| code | integer | HTTP status code (e.g., 200 for success) |
| message | string | Status message (e.g., "success") |
| data | object | The prediction data object containing all details |
| data.id | string | Unique identifier for the prediction, the ID of the prediction to get |
| data.model | string | Model ID used for the prediction |
| data.outputs | string | Array containing the generated SRT file URL. |
| data.urls | object | Object containing related API endpoints |
| data.urls.get | string | URL to retrieve the prediction result |
| data.status | string | Status of the task: `created`, `processing`, `completed`, or `failed` |
| data.created_at | string | ISO timestamp of when the request was created (e.g., "2023-04-01T12:34:56.789Z") |
| data.error | string | Error message (empty if no error occurred) |
| data.timings | object | Object containing timing details |
| data.timings.inference | integer | Inference time in milliseconds |
</ApiPage>