Jianying (CapCut) Draft Subtitle Extractor
Extract and convert hard-coded subtitles from Jianying or CapCut draft JSON files into standard SRT or ASS formats.
Click or drag draft_content.json files here
Supports multiple files from Jianying/CapCut drafts
Common Problems
How do I find the draft_content.json file on my computer?
On Windows it's typically under `C:\Users\<you>\AppData\Local\CapCut\User Data\Projects\com.lveditor.draft\` (swap `CapCut` for `JianyingPro` for the CN app); on Mac it's under `~/Movies/CapCut/User Data/Projects/com.lveditor.draft/`. Each draft lives in its own subfolder named after the draft ID, and `draft_content.json` inside it holds every track, material, effect, and subtitle for that project — which is why the file can run from a few hundred KB to several MB.
Why do my extracted subtitle timings seem misaligned?
The tool reads the microsecond timestamps in `target_timerange` directly with no frame-rate correction or guessing — that value already is the segment's absolute position on the timeline. The most common source of real misalignment is a clip with speed changes applied: retiming makes a segment's `source_timerange` (its native duration) diverge from its `target_timerange` (how long it occupies on the timeline), and this tool only ever reads the latter. A drift of a few tens of milliseconds is usually just a manual nudge made during editing, not a bug.
Can this convert subtitles directly into hard-coded video files?
No. This tool only reads text and timecodes out of `draft_content.json` and writes them as SRT or ASS subtitle files — it never touches a single video frame. To burn subtitles into the picture you need FFmpeg or a video editor to combine the exported subtitle file with the original footage separately.
Are font, color, and other visual styles preserved in the conversion?
No, by design. Newer Jianying/CapCut versions pack per-character formatting (color, size, bold — the `styles` array) into the same JSON-encoded `content` string as the text itself; older versions wrap the text in inline tags like `<size=30>` or `<color=...>`. This tool strips styling in both cases and keeps plain text only, because SRT has no styling support at all, and ASS styling would need a Style block rebuilt by hand anyway — carrying the raw tags over would just render as garbage in most players.
Why am I getting an invalid JSON error for my draft file?
The most common cause is picking the wrong file — the same draft folder also contains `draft_meta_info.json` and `draft_settings`, and only `draft_content.json` has the `materials.texts` and `tracks` structure this tool expects. The next most common cause is a truncated file from an interrupted copy or archive extraction, or hand-editing the JSON in a text editor and breaking its syntax. Confirm the file parses cleanly with `JSON.parse` and that the extension is genuinely `.json`.
Workflow
What is Jianying (CapCut) Draft Subtitle Extractor?
A Jianying or CapCut draft isn't a video file — it's one `draft_content.json`. The `materials.texts` array holds every text element (in newer app versions the `content` field is itself a JSON string containing the real `text` plus a `styles` array of per-character formatting runs), and the `tracks` array contains a track with `type` set to `"text"` (or numeric `2`) whose `segments` reference those text materials by `material_id`. Each segment carries a `target_timerange` with a `start` and `duration` — and that value is in **microseconds** (1,000,000 = one second), not the milliseconds or frame numbers most people assume.
This tool walks that exact structure: it builds an id-to-text map from `materials.texts`, scans every text track's `segments`, converts `target_timerange.start`/`duration` from microseconds to milliseconds, strips legacy inline tags like `<size=30>` with a regex (or first tries `JSON.parse` on the newer JSON-encoded `content` to pull out plain text), sorts everything chronologically, and emits SRT or ASS. All of that runs in your browser — the draft file itself is never uploaded.
How to use Jianying (CapCut) Draft Subtitle Extractor
Locate the project's `draft_content.json`. CapCut desktop typically stores it at `...\CapCut\User Data\Projects\com.lveditor.draft\<draft-id>\` on Windows or `~/Movies/CapCut/User Data/Projects/com.lveditor.draft/<draft-id>/` on Mac; Jianying (the CN version) uses the same layout with `JianyingPro` in place of `CapCut`. Drag it in or click to upload — multiple files can be selected at once for batch processing. If the captions are for a short vertical video, turn on Line Break Optimization: it wraps text longer than 14 characters at word boundaries when spaces exist, or force-splits near the midpoint for space-less scripts (CJK text), which keeps captions from overflowing a portrait frame. Use the search filter to spot-check the extracted list before downloading as SRT or ASS.
Example
Excerpt from draft_content.json (simplified):
{
"materials": {
"texts": [
{ "id": "txt-01", "content": "{\"text\":\"Welcome to the tutorial.\"}" }
]
},
"tracks": [
{ "type": "text", "segments": [
{ "material_id": "txt-01",
"target_timerange": { "start": 1500000, "duration": 2700000 } }
]}
]
}
Parsed output (microseconds ÷ 1000 = milliseconds) as SRT:
1
00:00:01,500 --> 00:00:04,200
Welcome to the tutorial.Use Cases
1. Migrating subtitle tracks from Jianying or CapCut projects to NLEs like Adobe Premiere Pro or DaVinci Resolve.
2. Repurposing video captions for translation and localization workflows using raw extracted text.
3. Creating a backup of subtitle text that survives a corrupted draft file, independent of any specific editor's project format.
4. Batch extracting script content from multiple drafts for documentation and content auditing.
FAQ
Does this tool work with mobile versions of CapCut?
The file format is identical, but mobile drafts live inside the app's sandboxed storage and aren't easy to pull out directly. In practice, sync or export the draft from the mobile app to the desktop CapCut or Jianying app first, then grab `draft_content.json` from the desktop Drafts folder described below.
Can I process multiple draft files at once?
Yes. The upload area accepts multiple files, and each one gets its own subtitle list and download links, which is convenient when you need to pull captions out of several projects in one pass.
Is my draft data uploaded to a server?
No. JSON parsing, timecode conversion, and tag stripping all run locally via the browser's built-in JSON.parse and regular expressions — the file content never leaves your device.