{
  "slug": "subtitle-merge",
  "name": "gizza-ai/subtitle-merge",
  "version": "0.1.0",
  "title": "Subtitle Merger — Combine SRT &amp; VTT Files Into One — gizza.ai",
  "description": "Merge SRT or VTT subtitle files into one — combine split parts or overlay a second language track, with optional per-file time-shift. Free, in your browser.",
  "tags": [
    "subtitle merge",
    "merge srt",
    "combine subtitles",
    "srt",
    "vtt",
    "webvtt",
    "subrip",
    "join subtitles",
    "bilingual subtitles",
    "subtitle combiner"
  ],
  "category": "video",
  "urls": {
    "page": "https://gizza.ai/tools/subtitle-merge/",
    "markdown": "https://gizza.ai/tools/subtitle-merge/index.md",
    "descriptor": "https://gizza.ai/tools/subtitle-merge/tool.json",
    "deep_link_example": "https://gizza.ai/tools/subtitle-merge/?subtitles=1%0A00%3A00%3A01%2C000%20--%3E%2000%3A00%3A02%2C000%0AFirst%20file%2C%20first%20line.%0A%0A%3D%3D%3D%0A%0A1%0A00%3A00%3A01%2C000%20--%3E%2000%3A00%3A02%2C000%0ASecond%20file%2C%20first%20line.&offset_ms=0&format=auto"
  },
  "cli": "gizza tool subtitle-merge \"1\n00:00:01,000 --> 00:00:02,000\nFirst file, first line.\n\n===\n\n1\n00:00:01,000 --> 00:00:02,000\nSecond file, first line.\"",
  "tool": {
    "description": "Merge (combine) two or more SubRip (.srt) and/or WebVTT (.vtt) subtitle files into a single file. Provide the files as `subtitles`, concatenated and separated by a line containing only '===' . Every cue from every file is collected, sorted by start time (ties keep input order, so a second language track overlays cleanly), renumbered from 1, and re-emitted. `offset_ms` shifts each file after the first by a cumulative multiple of that millisecond amount — use it to line up sequentially-split parts (CD1/CD2) on one timeline, or leave 0 to overlay. `format` is 'auto' (match the first file), 'srt', or 'vtt'. Cue settings/headers are normalized; timestamps below zero clamp to 00:00:00. Runs locally.",
    "parameters": {
      "additionalProperties": false,
      "properties": {
        "format": {
          "default": "auto",
          "description": "Output format: 'auto' (default) matches the first file's format, 'srt' forces SubRip, 'vtt' forces WebVTT.",
          "enum": [
            "auto",
            "srt",
            "vtt"
          ],
          "type": "string"
        },
        "offset_ms": {
          "default": 0,
          "description": "Cumulative time-shift in milliseconds applied to each file AFTER the first: file 2 is shifted by offset_ms, file 3 by 2×offset_ms, and so on. Use a positive value to append sequentially-split parts (e.g. CD1/CD2) onto one timeline; leave 0 to overlay tracks that already share a timeline. Default 0.",
          "type": "integer"
        },
        "subtitles": {
          "description": "Two or more subtitle files (SubRip .srt or WebVTT .vtt) concatenated into one block, each file separated by a line containing only '===' (three or more equals signs). Each file keeps its own cue numbering/timing lines and dialogue.",
          "type": "string"
        }
      },
      "required": [
        "subtitles"
      ],
      "type": "object"
    }
  }
}