happytails.ai

Extract Subtitles from Video

Open Extract Subtitles from Video on Happytails.ai. This view has the same page content and links, with explicit tool capabilities. Read the processing notes before using a tool.

Tool capabilities

{
  "id": "extract-subtitles",
  "category": "subtitle-tools",
  "built": true,
  "requirements": "Extract embedded selectable tracks; burned-in captions require different OCR work.",
  "implementation": {
    "fields": [
      {
        "key": "track",
        "label": "Subtitle track (starting at 0)",
        "value": 0,
        "type": "number",
        "min": 0,
        "max": 20,
        "step": 1
      },
      {
        "key": "engine",
        "label": "Processing location",
        "type": "select",
        "value": "browser",
        "values": [
          "browser",
          "server"
        ],
        "labels": {
          "browser": "Browser (files stay here)",
          "server": "Local server (larger files)"
        }
      }
    ],
    "files": true,
    "accept": ".mp4,.mov,.mkv,.webm,.avi",
    "multiple": false,
    "input": false,
    "processing": "Browser or server",
    "native": true,
    "maxFileBytes": 20971520,
    "note": "Browser processing keeps files on this device. Choosing Local server sends files to this website’s own processor. Extracts a selectable text subtitle track as SRT. Burned-in captions and bitmap subtitle tracks are not supported.",
    "hybrid": true,
    "desktopAdapter": "ffmpeg-wasm-local-v1",
    "experience": {
      "automatic": false,
      "single": false,
      "inputMaxLength": 1000000,
      "inputMode": "text",
      "label": "Your text",
      "placeholder": "Type or paste your input…",
      "help": "Up to 1,000,000 characters. Review the settings before running.",
      "helpParts": [
        "Up to 1,000,000 characters.",
        "Review the settings before running."
      ],
      "action": null
    },
    "mode": "explicit",
    "interactive": false
  },
  "execution": "POST /api/v1/tools/extract-subtitles/run",
  "api": {
    "id": "extract-subtitles",
    "name": "Extract subtitles",
    "category": "subtitle-tools",
    "description": "Extract an embedded text subtitle track as SRT.",
    "notes": "Browser processing keeps files on this device. Choosing Local server sends files to this website’s own processor. Extracts a selectable text subtitle track as SRT. Burned-in captions and bitmap subtitle tracks are not supported.",
    "human_path": "/en/subtitle-tools/extract-subtitles/",
    "method": "POST",
    "endpoint": "/api/v1/tools/extract-subtitles/run",
    "schema_url": "/api/v1/tools/extract-subtitles",
    "input_schema": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "input": {
          "type": "string",
          "maxLength": 1000000,
          "default": "",
          "description": "Plain text input. File tools use files instead unless otherwise documented."
        },
        "options": {
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "track": {
              "type": "number",
              "description": "Subtitle track (starting at 0)",
              "default": 0.0,
              "minimum": 0,
              "maximum": 20,
              "multipleOf": 1
            },
            "engine": {
              "type": "string",
              "description": "Processing location",
              "default": "browser",
              "enum": [
                "browser",
                "server"
              ]
            }
          }
        },
        "files": {
          "type": "array",
          "maxItems": 1,
          "items": {
            "type": "object",
            "required": [
              "name",
              "base64"
            ],
            "additionalProperties": false,
            "properties": {
              "name": {
                "type": "string",
                "maxLength": 200,
                "description": "Filename only, no path."
              },
              "mime": {
                "type": "string",
                "maxLength": 150
              },
              "bytes": {
                "type": "integer",
                "minimum": 0,
                "description": "Optional decoded byte count; must match content if supplied."
              },
              "base64": {
                "type": "string",
                "contentEncoding": "base64",
                "description": "File bytes as padded base64. Use the tool-specific limits.files_bytes value for the total decoded input size."
              }
            }
          }
        }
      }
    },
    "output_schema": {
      "type": "object",
      "required": [
        "tool",
        "result"
      ],
      "properties": {
        "tool": {
          "type": "string"
        },
        "result": {
          "type": "object",
          "required": [
            "text",
            "files"
          ],
          "properties": {
            "text": {
              "type": [
                "string",
                "null"
              ]
            },
            "data": {
              "description": "Parsed JSON when the textual result is JSON."
            },
            "name": {
              "type": "string"
            },
            "mime": {
              "type": "string"
            },
            "files": {
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "name",
                  "mime",
                  "bytes",
                  "base64"
                ],
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "mime": {
                    "type": "string"
                  },
                  "bytes": {
                    "type": "integer"
                  },
                  "base64": {
                    "type": "string",
                    "contentEncoding": "base64"
                  }
                }
              }
            }
          }
        }
      }
    },
    "processing": "Server; self-hosted native engine, no external conversion service",
    "limits": {
      "request_bytes": 31457280,
      "input_characters": 1000000,
      "files_bytes": 20971520,
      "max_files": 1,
      "timeout_seconds": 90
    }
  },
  "agent_processing": "Server; self-hosted native engine, no external conversion service",
  "browser_agent": {
    "supported": true,
    "name": "run_current_tool",
    "discovery": "WebMCP on the human page in a supporting browser",
    "verification": "See audit/API-AUDIT.md; availability is not verification"
  }
}

Page guide

Extract an embedded text subtitle track as SRT.

How to use Extract subtitles
  1. Choose a file in MP4, MOV, MKV, WEBM or AVI.
  2. Review the settings, then choose Run Extract subtitles.
  3. Review the result, then use Copy result or a download link when available.

What to expect

Extract an embedded text subtitle track as SRT. Browser processing keeps files on this device. Server processing is currently unavailable. Extracts a selectable text subtitle track as SRT. Burned-in captions and bitmap subtitle tracks are not supported.