[{"data":1,"prerenderedAt":271},["ShallowReactive",2],{"i-lucide:menu":3,"i-lucide:grip":8,"i-lucide:chevron-right":10,"i-lucide:moon":12,"i-lucide:sun":14,"i-material-symbols:language":16,"i-lucide:chevron-down":18,"i-lucide:shield-check":20,"i-lucide:mail":22,"i-tabler:markdown":24,"i-lucide:code-xml":26,"i-lucide:film":28,"i-lucide:file-text":30,"i-lucide:box":32,"i-lucide:code-2":34,"i-lucide:image":35,"i-lucide:square-sigma":37,"i-lucide:gamepad-2":39,"i-lucide:sparkles":41,"i-lucide:graduation-cap":43,"tool-content-videos-subtitleEdit":45,"i-lucide:play-circle":231,"i-lucide:arrow-right":233,"i-lucide:info":235,"i-lucide:languages":237,"i-lucide:scissors":239,"i-lucide:clock":241,"i-lucide:wand-2":243,"i-lucide:shield":245,"i-lucide:upload":247,"i-lucide:edit":249,"i-lucide:download":251,"i-lucide:timer-reset":253,"i-tabler:transform":255,"i-lucide:video":257,"i-lucide:audio-waveform":259,"i-lucide:diff":261,"i-lucide:captions":263,"i-lucide:arrow-up-right":265,"i-lucide:plus-circle":267,"i-lucide:keyboard":269},{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":7},0,24,false,"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M4 5h16M4 12h16M4 19h16\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":9},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Ccircle cx=\"12\" cy=\"5\" r=\"1\"\u002F>\u003Ccircle cx=\"19\" cy=\"5\" r=\"1\"\u002F>\u003Ccircle cx=\"5\" cy=\"5\" r=\"1\"\u002F>\u003Ccircle cx=\"12\" cy=\"12\" r=\"1\"\u002F>\u003Ccircle cx=\"19\" cy=\"12\" r=\"1\"\u002F>\u003Ccircle cx=\"5\" cy=\"12\" r=\"1\"\u002F>\u003Ccircle cx=\"12\" cy=\"19\" r=\"1\"\u002F>\u003Ccircle cx=\"19\" cy=\"19\" r=\"1\"\u002F>\u003Ccircle cx=\"5\" cy=\"19\" r=\"1\"\u002F>\u003C\u002Fg>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":11},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"m9 18l6-6l-6-6\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":13},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":15},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Ccircle cx=\"12\" cy=\"12\" r=\"4\"\u002F>\u003Cpath d=\"M12 2v2m0 16v2M4.93 4.93l1.41 1.41m11.32 11.32l1.41 1.41M2 12h2m16 0h2M6.34 17.66l-1.41 1.41M19.07 4.93l-1.41 1.41\"\u002F>\u003C\u002Fg>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":17},"\u003Cpath fill=\"currentColor\" d=\"M8.125 21.213q-1.825-.788-3.187-2.15t-2.15-3.188T2 11.988t.788-3.875t2.15-3.175t3.187-2.15T12.013 2t3.875.788t3.175 2.15t2.15 3.175t.787 3.875t-.787 3.887t-2.15 3.188t-3.175 2.15t-3.875.787t-3.888-.787M12 19.95q.65-.9 1.125-1.875T13.9 16h-3.8q.3 1.1.775 2.075T12 19.95m-2.6-.4q-.45-.825-.787-1.713T8.05 16H5.1q.725 1.25 1.813 2.175T9.4 19.55m5.2 0q1.4-.45 2.488-1.375T18.9 16h-2.95q-.225.95-.562 1.838T14.6 19.55M4.25 14h3.4q-.075-.5-.112-.987T7.5 12t.038-1.012T7.65 10h-3.4q-.125.5-.187.988T4 12t.063 1.013t.187.987m5.4 0h4.7q.075-.5.113-.987T14.5 12t-.038-1.012T14.35 10h-4.7q-.075.5-.112.988T9.5 12t.038 1.013t.112.987m6.7 0h3.4q.125-.5.188-.987T20 12t-.062-1.012T19.75 10h-3.4q.075.5.113.988T16.5 12t-.038 1.013t-.112.987m-.4-6h2.95q-.725-1.25-1.812-2.175T14.6 4.45q.45.825.788 1.713T15.95 8M10.1 8h3.8q-.3-1.1-.775-2.075T12 4.05q-.65.9-1.125 1.875T10.1 8m-5 0h2.95q.225-.95.563-1.838T9.4 4.45Q8 4.9 6.912 5.825T5.1 8\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":19},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"m6 9l6 6l6-6\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":21},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z\"\u002F>\u003Cpath d=\"m9 12l2 2l4-4\"\u002F>\u003C\u002Fg>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":23},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"m22 7l-8.991 5.727a2 2 0 0 1-2.009 0L2 7\"\u002F>\u003Crect width=\"20\" height=\"16\" x=\"2\" y=\"4\" rx=\"2\"\u002F>\u003C\u002Fg>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":25},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"M3 7a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\"\u002F>\u003Cpath d=\"M7 15V9l2 2l2-2v6m3-2l2 2l2-2m-2 2V9\"\u002F>\u003C\u002Fg>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":27},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"m18 16l4-4l-4-4M6 8l-4 4l4 4m8.5-12l-5 16\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":29},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Crect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\"\u002F>\u003Cpath d=\"M7 3v18M3 7.5h4M3 12h18M3 16.5h4M17 3v18m0-13.5h4m-4 9h4\"\u002F>\u003C\u002Fg>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":31},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\"\u002F>\u003Cpath d=\"M14 2v5a1 1 0 0 0 1 1h5M10 9H8m8 4H8m8 4H8\"\u002F>\u003C\u002Fg>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":33},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z\"\u002F>\u003Cpath d=\"m3.3 7l8.7 5l8.7-5M12 22V12\"\u002F>\u003C\u002Fg>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":27},{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":36},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Crect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" ry=\"2\"\u002F>\u003Ccircle cx=\"9\" cy=\"9\" r=\"2\"\u002F>\u003Cpath d=\"m21 15l-3.086-3.086a2 2 0 0 0-2.828 0L6 21\"\u002F>\u003C\u002Fg>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":38},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Crect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\"\u002F>\u003Cpath d=\"M16 8.9V7H8l4 5l-4 5h8v-1.9\"\u002F>\u003C\u002Fg>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":40},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M6 11h4M8 9v4m7-1h.01M18 10h.01m-.69-5H6.68a4 4 0 0 0-3.978 3.59l-.017.152C2.604 9.416 2 14.456 2 16a3 3 0 0 0 3 3c1 0 1.5-.5 2-1l1.414-1.414A2 2 0 0 1 9.828 16h4.344a2 2 0 0 1 1.414.586L17 18c.5.5 1 1 2 1a3 3 0 0 0 3-3c0-1.545-.604-6.584-.685-7.258q-.01-.075-.017-.151A4 4 0 0 0 17.32 5\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":42},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594zM20 2v4m2-2h-4\"\u002F>\u003Ccircle cx=\"4\" cy=\"20\" r=\"2\"\u002F>\u003C\u002Fg>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":44},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"M21.42 10.922a1 1 0 0 0-.019-1.838L12.83 5.18a2 2 0 0 0-1.66 0L2.6 9.08a1 1 0 0 0 0 1.832l8.57 3.908a2 2 0 0 0 1.66 0zM22 10v6\"\u002F>\u003Cpath d=\"M6 12.5V16a6 3 0 0 0 12 0v-3.5\"\u002F>\u003C\u002Fg>",{"strings":46,"features":129,"steps":160,"useCases":184,"articleHtml":228},{"zh":47,"en":88},{"description":48,"uploadSubtitle":49,"uploadVideo":50,"uploadSubtitleHint":51,"uploadVideoHint":52,"removeVideo":53,"currentCue":54,"noActiveCue":55,"addCue":56,"splitCue":57,"deleteCue":58,"cueText":59,"cueListTitle":60,"exportButton":61,"errorParseFailed":62,"errorEmpty":63,"errorVideoLoad":64,"tipKeyboard":65,"placeholderTag":66,"placeholderTimelineLabel":67,"placeholderTimelineHint":68,"placeholderCueListHint":69,"placeholderCue1":70,"placeholderCue2":71,"placeholderCue3":72,"demoTitle":73,"demoIntro":74,"demoButton":75,"demoGenerating":76,"demoFailed":77,"faq1q":78,"faq1a":79,"faq2q":80,"faq2a":81,"faq3q":82,"faq3a":83,"faq4q":84,"faq4a":85,"faq5q":86,"faq5a":87},"用可视化时间轴 + 视频实时预览编辑 SRT\u002FVTT\u002FASS\u002FSBV\u002FLRC 字幕。拖动时间轴上的字幕条调整时间、行内修改文本、拆分合并行，导出为任意目标格式。","字幕文件","用于预览的视频（可选）","拖入 SRT \u002F VTT \u002F ASS \u002F SBV \u002F LRC","拖入 MP4 \u002F WebM \u002F MOV — 仅供预览，不会上传","移除视频","当前字幕","（此刻没有正在显示的字幕）","新增字幕","在播放头处拆分","删除","文本","字幕列表","下载","解析失败，请检查文件格式和编码。","字幕文件中没有任何条目。","无法加载视频，浏览器可能不支持该编码。","快捷键：空格 播放\u002F暂停 · ↑↓ 切换字幕 · Enter 在播放头处插入字幕 · Delete \u002F Backspace 删除当前字幕","示例","时间轴","上传字幕或试用 demo 后，可以拖动字幕条调整时间、点击切换播放头位置。","上传字幕或试用 demo 后，这里可以行内编辑文本和精确时间，删除按钮也会出现在每行右侧。","点击下方文本框即可行内编辑字幕内容","拖动时间轴上的字幕条即可调整出现时间","选中字幕后按 Delete \u002F Backspace 一键删除","一键试用 demo","自动生成 5 秒演示视频和与之时间对齐的字幕，让你立刻在播放器里看到字幕 overlay 与时间码同步，并能开始拖动 \u002F 编辑。","用 demo 体验","正在生成 demo…","demo 生成失败，请直接上传字幕和视频试用。","编辑字幕一定要上传视频吗？","不需要。视频纯粹是用来预览的，没有视频也可以编辑字幕文件。挂上视频后，编辑器会把播放头与字幕同步显示，方便你眼见为实地校对时间。","我的视频会被上传到服务器吗？","永远不会。浏览器通过本地文件 URL 直接播放视频，字节不会离开你的设备。字幕文件同理。","在播放头位置插入字幕的快捷键是什么？","焦点不在文本框时按 Enter，会在当前播放头位置插入一条 2 秒长的新字幕。↑\u002F↓ 可以在字幕之间跳转，空格控制播放\u002F暂停。","可以把一长句拆成两条字幕吗？","可以。把播放头放到一条字幕中间，点「在播放头处拆分」即可。前半段保留原始起始时间，后半段从播放头到原始结束时间，文本可以独立编辑。","为什么导出的 ASS 没有保留原来的样式？","编辑器使用简化的 ASS 解析器，保留文本和时间，但样式重置为默认。如果需要完整保留 ASS 样式，建议在这里只调时间，再用文本对比工具把改动合并回原 ASS 文件。",{"description":89,"uploadSubtitle":90,"uploadVideo":91,"uploadSubtitleHint":92,"uploadVideoHint":93,"removeVideo":94,"currentCue":95,"noActiveCue":96,"addCue":97,"splitCue":98,"deleteCue":99,"cueText":100,"cueListTitle":101,"exportButton":102,"errorParseFailed":103,"errorEmpty":104,"errorVideoLoad":105,"tipKeyboard":106,"placeholderTag":107,"placeholderTimelineLabel":108,"placeholderTimelineHint":109,"placeholderCueListHint":110,"placeholderCue1":111,"placeholderCue2":112,"placeholderCue3":113,"demoTitle":114,"demoIntro":115,"demoButton":116,"demoGenerating":117,"demoFailed":118,"faq1q":119,"faq1a":120,"faq2q":121,"faq2a":122,"faq3q":123,"faq3a":124,"faq4q":125,"faq4a":126,"faq5q":127,"faq5a":128},"Edit SRT\u002FVTT\u002FASS\u002FSBV\u002FLRC subtitles with a visual timeline and live video preview. Drag cues to retime, edit text inline, split and merge lines, then export to any format.","Subtitle file","Video for preview (optional)","Drop SRT \u002F VTT \u002F ASS \u002F SBV \u002F LRC","Drop MP4 \u002F WebM \u002F MOV — preview only, the file isn't uploaded","Remove video","Current cue","(no active cue at this time)","Add new cue","Split at playhead","Delete","Text","Cue list","Download","Failed to parse this subtitle file. Please check the format and encoding.","This subtitle file has no cues.","Could not load the video. The browser may not support this codec.","Keyboard: Space play\u002Fpause · ↑↓ jump cues · Enter add cue at playhead · Delete \u002F Backspace remove selected cue","preview","Timeline","After you upload a subtitle (or try the demo), drag any cue bar to retime it and click anywhere on the ruler to scrub the playhead.","After you upload a subtitle (or try the demo), edit text and precise timecodes inline here. A delete button also appears at the end of each row.","Click the textarea below to edit cue text inline.","Drag any cue bar on the timeline to retime it.","Select a cue and press Delete or Backspace to remove it.","Try the one-click demo","We synthesise a 5-second video paired with cues that align to its timecodes, so you can instantly see the live overlay and start dragging or editing.","Run the demo","Generating demo…","Demo generation failed. Please upload your own subtitle and video to try the tool.","Do I have to upload a video to edit subtitles?","No. The video is purely for preview — you can edit pure subtitle files without one. When you do attach a video, the editor synchronizes the playhead with the cues so you can verify timing visually.","Will my video file be uploaded to a server?","Never. The browser plays your video directly via the local file URL; the bytes never leave your device. The same applies to the subtitle file.","What's the keyboard shortcut for adding a cue at the current playhead?","Press Enter while focused outside a text field to insert a new 2-second cue at the current playhead position. Use ↑\u002F↓ to jump between cues and Space to play\u002Fpause.","Can I split a long sentence into two cues?","Yes — position the playhead inside an existing cue and click 'Split at playhead'. The first half keeps the original start, the second half goes from playhead to the cue's original end. You can then edit each half's text independently.","Why doesn't my exported ASS file keep the original styles?","The editor uses a simplified ASS parser that preserves text and timing but resets styling to a clean default. If you need to keep complex ASS styling exactly, edit only the timing here and merge changes back into your original ASS file with a text diff tool.",{"zh":130,"en":147},[131,135,139,143],{"icon":132,"title":133,"desc":134},"lucide:captions","可视化时间轴","拖拽字幕条调时间，左右 trim handle 精确控制 start\u002Fend",{"icon":136,"title":137,"desc":138},"lucide:video","视频实时预览","挂上视频后，字幕 overlay 跟随播放头，眼见为实校时间",{"icon":140,"title":141,"desc":142},"lucide:keyboard","快捷键加速","空格 播放 \u002F ↑↓ 切换字幕 \u002F Enter 在播放头插入新字幕",{"icon":144,"title":145,"desc":146},"lucide:shield","本地零上传","字幕和视频都通过 Blob URL 在浏览器内处理，不发送任何字节",[148,151,154,157],{"icon":132,"title":149,"desc":150},"Visual Timeline","Drag cue bars to retime; left\u002Fright handles for precise start\u002Fend control",{"icon":136,"title":152,"desc":153},"Live Video Preview","Attach a video and the subtitle overlay follows the playhead in real time",{"icon":140,"title":155,"desc":156},"Keyboard Shortcuts","Space to play · ↑\u002F↓ to jump cues · Enter to insert at playhead",{"icon":144,"title":158,"desc":159},"Zero Upload","Both subtitle and video processed via local Blob URLs — no bytes sent anywhere",{"zh":161,"en":174},[162,166,170],{"icon":163,"title":164,"desc":165},"lucide:upload","上传字幕文件","上传 SRT 或其他格式的字幕文件，或从头新建",{"icon":167,"title":168,"desc":169},"lucide:edit","编辑字幕内容","直接修改文本、调整时间轴，支持拆分合并字幕行",{"icon":171,"title":172,"desc":173},"lucide:download","导出字幕","完成编辑后下载修改好的字幕文件",[175,178,181],{"icon":163,"title":176,"desc":177},"Upload Subtitle File","Upload an SRT or other subtitle file, or start building one from scratch",{"icon":167,"title":179,"desc":180},"Edit Subtitle Content","Edit text and adjust timestamps directly, with support for splitting and merging lines",{"icon":171,"title":182,"desc":183},"Export Subtitles","Download the edited subtitle file once you're done",{"zh":185,"en":209},[186,189,193,197,201,205],{"icon":167,"title":187,"desc":188},"修正字幕内容错误","直接在线编辑字幕文本，修正识别错误或翻译不准确之处",{"icon":190,"title":191,"desc":192},"lucide:languages","编辑翻译字幕","在原字幕框架上修改译文，保留时间轴快速完成翻译",{"icon":194,"title":195,"desc":196},"lucide:plus-circle","手动添加字幕","为无字幕视频逐段录入文本，生成标准 SRT 字幕文件",{"icon":198,"title":199,"desc":200},"lucide:scissors","拆分合并字幕行","调整字幕断句，使每条字幕长度和内容更自然易读",{"icon":202,"title":203,"desc":204},"lucide:clock","微调字幕时间轴","精确调整每条字幕的入出点，与视频内容完美对齐",{"icon":206,"title":207,"desc":208},"lucide:wand-2","优化机器识别字幕","批量修正 AI 自动转写的错别字和断句，提升字幕可读性",[210,213,216,219,222,225],{"icon":167,"title":211,"desc":212},"Fix Subtitle Text Errors","Edit subtitle text online to correct recognition mistakes or inaccurate translations",{"icon":190,"title":214,"desc":215},"Edit Translated Subtitles","Revise translated text within the existing subtitle structure while keeping timestamps",{"icon":194,"title":217,"desc":218},"Add Subtitles Manually","Type subtitle text segment by segment for videos without captions, then export SRT",{"icon":198,"title":220,"desc":221},"Split and Merge Subtitle Lines","Adjust line breaks so each subtitle is a natural, readable length",{"icon":202,"title":223,"desc":224},"Fine-Tune Timestamps","Precisely adjust in\u002Fout points for each subtitle to sync perfectly with the video",{"icon":206,"title":226,"desc":227},"Polish AI-Generated Subtitles","Batch correct typos and sentence breaks in auto-transcribed subtitles to improve readability",{"zh":229,"en":230},"\u003Ch2>2026 年为什么还要用浏览器编辑字幕？\u003C\u002Fh2>\n\u003Cp>字幕编辑曾经是个「专业软件」专属领域：Aegisub、Subtitle Edit、Final Cut Pro 字幕轨道。这些工具功能强大，但门槛高、安装麻烦、跨平台体验割裂。2026 年你的常见痛点反倒是\u003Cstrong>轻量任务\u003C\u002Fstrong>：把几条字幕的时间往后调 1 秒、把一条长字幕拆成两条、把翻译有错字的几行修一下、把字幕导出成另一种格式。\u003C\u002Fp>\n\u003Cp>这些事完全不需要 Aegisub。MeTool 把\u003Cstrong>视频预览 + 时间轴拖拽 + 文本编辑 + 多格式导出\u003C\u002Fstrong>做进了浏览器，覆盖 80% 的轻量字幕编辑需求：\u003C\u002Fp>\n\u003Cul>\n\u003Cli>编辑现有字幕（SRT\u002FVTT\u002FASS\u002FSBV\u002FLRC）\u003C\u002Fli>\n\u003Cli>挂上视频实时校对（视频字幕都在本地处理，不上传）\u003C\u002Fli>\n\u003Cli>时间轴上拖拽字幕条调时间，或在表格里直接输入精确时间\u003C\u002Fli>\n\u003Cli>导出为任意目标格式\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>免费、零安装、Chrome \u002F Edge \u002F Safari 通用。\u003C\u002Fp>\n\u003Ch2>可视化时间轴 + cue 列表：双视图编辑\u003C\u002Fh2>\n\u003Ch3>时间轴：拖拽改时间\u003C\u002Fh3>\n\u003Cp>每条字幕在时间轴上是一个矩形条。\u003Cstrong>拖中间\u003C\u002Fstrong>整体平移、\u003Cstrong>拖左边\u003C\u002Fstrong>调 start、\u003Cstrong>拖右边\u003C\u002Fstrong>调 end。视频的播放头也显示在时间轴上，能直观看到「这条字幕出现的瞬间」对应视频的哪一帧。点击时间轴空白区域跳转视频播放头。\u003C\u002Fp>\n\u003Ch3>cue 列表：精确改文本和时间\u003C\u002Fh3>\n\u003Cp>下方表格每行一条字幕，\u003Cstrong>start \u002F end 是文本输入框\u003C\u002Fstrong>（接受 \u003Ccode>HH:MM:SS,mmm\u003C\u002Fcode> 格式），\u003Cstrong>文本是 textarea\u003C\u002Fstrong>（多行字幕直接换行）。改完按 Enter 或失焦自动应用。\u003C\u002Fp>\n\u003Ch3>视频联动\u003C\u002Fh3>\n\u003Cp>挂上视频后：\u003C\u002Fp>\n\u003Cul>\n\u003Cli>视频播放时，字幕 overlay 实时显示当前条字幕\u003C\u002Fli>\n\u003Cli>当前正在播放的字幕在时间轴和列表里都会高亮\u003C\u002Fli>\n\u003Cli>点列表里任意一条 → 视频跳转到这条的开始时间\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>这样能在视频实际帧上眼见为实地校对时间，比盲调精确得多。\u003C\u002Fp>\n\u003Ch2>快捷键与高效操作\u003C\u002Fh2>\n\u003Cp>编辑字幕高频操作有 4 个：播放\u002F暂停、切换上下条、新增、拆分。MeTool 全部映射到键盘：\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>空格\u003C\u002Fstrong> — 播放 \u002F 暂停视频（焦点不在文本框时）\u003C\u002Fli>\n\u003Cli>\u003Cstrong>↑ \u002F ↓\u003C\u002Fstrong> — 跳到上一条 \u002F 下一条字幕，并把视频跳到该条开始时间\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Enter\u003C\u002Fstrong> — 在当前播放头位置插入一条新字幕（默认 2 秒长）\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>「在播放头处拆分」按钮把当前字幕从播放头位置劈成两条 — 用于「这条字幕太长，应该拆成两次显示」的场景。前半段保留原 start，后半段从播放头到原 end，文本可以独立编辑。\u003C\u002Fp>\n\u003Cp>\u003Cstrong>实战工作流\u003C\u002Fstrong>：边播视频边按 Enter 在每句话开始时插字幕（先占位）→ 暂停后回到刚才那条调精确的 start\u002Fend → 写文本。比从头打表方式快好几倍。\u003C\u002Fp>\n\u003Ch2>为什么视频和字幕都不上传\u003C\u002Fh2>\n\u003Cp>字幕文件可能含敏感内容（未发布脚本、客户访谈逐字稿、医疗访谈），视频更是大概率不希望上传到第三方。MeTool 字幕编辑器在两个层面都做到「真本地」：\u003C\u002Fp>\n\u003Ch3>字幕：浏览器解析 \u002F 序列化\u003C\u002Fh3>\n\u003Cp>整个字幕生命周期 — 解析、编辑、导出 — 都是 JavaScript 在浏览器内存里完成。打开浏览器 DevTools 的 Network 面板，整个编辑过程\u003Cstrong>没有任何字幕相关的网络请求\u003C\u002Fstrong>。\u003C\u002Fp>\n\u003Ch3>视频：浏览器原生 \u003Ccode>&lt;video&gt;\u003C\u002Fcode> + 本地 Blob URL\u003C\u002Fh3>\n\u003Cp>用户上传视频后，浏览器创建一个 \u003Ccode>blob:\u003C\u002Fcode> 协议的本地 URL（仅当前 tab 有效），\u003Ccode>&lt;video&gt;\u003C\u002Fcode> 标签从这个 URL 直接读字节。视频字节\u003Cstrong>从不离开浏览器进程\u003C\u002Fstrong>，不发送给任何服务器（包括 metool.online 自己）。同样可在 Network 面板验证。\u003C\u002Fp>\n\u003Cp>这种架构的副作用是好的：哪怕断网，编辑器仍然可以用。后端宕机也不影响功能。\u003C\u002Fp>\n","\u003Ch2>Why Edit Subtitles in the Browser in 2026?\u003C\u002Fh2>\n\u003Cp>Subtitle editing used to be a &quot;professional software&quot; niche: Aegisub, Subtitle Edit, Final Cut's caption track. Powerful tools, but high friction — installs, learning curves, fragmented cross-platform UX. In 2026, your most common pain point is actually the \u003Cstrong>lightweight tasks\u003C\u002Fstrong>: shift a few cues by a second, split one long line into two, fix typos in the translation, export to a different format.\u003C\u002Fp>\n\u003Cp>None of that needs Aegisub. MeTool brings \u003Cstrong>video preview + timeline drag + text editing + multi-format export\u003C\u002Fstrong> into the browser, covering 80% of lightweight subtitle editing needs:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Edit existing subtitles (SRT\u002FVTT\u002FASS\u002FSBV\u002FLRC)\u003C\u002Fli>\n\u003Cli>Attach a video to verify timing in real time (everything stays local — no upload)\u003C\u002Fli>\n\u003Cli>Drag cue bars on the timeline to retime, or type exact timestamps in the table\u003C\u002Fli>\n\u003Cli>Export to any target format\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Free, zero install, works in Chrome\u002FEdge\u002FSafari.\u003C\u002Fp>\n\u003Ch2>Visual Timeline + Cue List: Two Views for One Task\u003C\u002Fh2>\n\u003Ch3>Timeline: drag-to-retime\u003C\u002Fh3>\n\u003Cp>Each cue appears as a rectangle on the timeline. \u003Cstrong>Drag the middle\u003C\u002Fstrong> to move the whole cue, \u003Cstrong>drag the left edge\u003C\u002Fstrong> to adjust start, \u003Cstrong>drag the right edge\u003C\u002Fstrong> to adjust end. The video's playhead also shows on the timeline so you can visually confirm &quot;this cue appears at the same instant as that frame.&quot; Click any empty area on the timeline to seek the video.\u003C\u002Fp>\n\u003Ch3>Cue list: precise text and time\u003C\u002Fh3>\n\u003Cp>Below the timeline, a table with one row per cue. \u003Cstrong>Start\u002Fend are text inputs\u003C\u002Fstrong> (accepting the \u003Ccode>HH:MM:SS,mmm\u003C\u002Fcode> format), \u003Cstrong>text is a textarea\u003C\u002Fstrong> (multi-line subtitles just use line breaks). Edits commit on Enter or blur.\u003C\u002Fp>\n\u003Ch3>Video binding\u003C\u002Fh3>\n\u003Cp>With a video attached:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>The currently active cue overlays the video as you play\u003C\u002Fli>\n\u003Cli>The cue is highlighted in both the timeline and the list\u003C\u002Fli>\n\u003Cli>Clicking any row in the list seeks the video to that cue's start\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>You can verify timing visually against actual frames — much more accurate than blind editing.\u003C\u002Fp>\n\u003Ch2>Keyboard Shortcuts and Efficient Workflow\u003C\u002Fh2>\n\u003Cp>Four high-frequency operations dominate subtitle editing: play\u002Fpause, jump prev\u002Fnext cue, add cue, split cue. MeTool maps them all to keys:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Space\u003C\u002Fstrong> — play\u002Fpause the video (when focus isn't on a text field)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>↑ \u002F ↓\u003C\u002Fstrong> — jump to the previous \u002F next cue and seek the video to its start\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Enter\u003C\u002Fstrong> — insert a new 2-second cue at the current playhead position\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>The &quot;Split at playhead&quot; button cuts the current cue at the playhead position — for &quot;this cue is too long; it should be displayed in two parts.&quot; The first half keeps the original start, the second half spans from the playhead to the original end, and each half's text is independently editable.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Real workflow:\u003C\u002Fstrong> press Enter on the fly while playing the video to drop placeholder cues at every line start, then pause and go back to fine-tune each cue's start\u002Fend and write the actual text. Many times faster than typing timestamps from scratch.\u003C\u002Fp>\n\u003Ch2>Why Both Video and Subtitles Stay 100% Local\u003C\u002Fh2>\n\u003Cp>Subtitle files may contain sensitive content (unreleased scripts, customer interview transcripts, medical interviews); video is even more sensitive — you really don't want to upload it to a third party. MeTool's subtitle editor keeps both 100% local:\u003C\u002Fp>\n\u003Ch3>Subtitles: parsed and serialized in the browser\u003C\u002Fh3>\n\u003Cp>The subtitle's whole lifecycle — parsing, editing, exporting — happens in JavaScript inside the browser's memory. Open DevTools → Network panel and you'll see \u003Cstrong>zero subtitle-related network requests\u003C\u002Fstrong> throughout the editing session.\u003C\u002Fp>\n\u003Ch3>Video: native \u003Ccode>&lt;video&gt;\u003C\u002Fcode> + local Blob URL\u003C\u002Fh3>\n\u003Cp>When you upload a video, the browser creates a \u003Ccode>blob:\u003C\u002Fcode>-protocol local URL (valid only inside the current tab); the \u003Ccode>&lt;video&gt;\u003C\u002Fcode> element reads bytes from that URL directly. Video bytes \u003Cstrong>never leave the browser process\u003C\u002Fstrong> — not to any server, including metool.online itself. Verifiable in the Network panel.\u003C\u002Fp>\n\u003Cp>This architecture has a nice side effect: even if you go offline (after the page has loaded), the editor still works. Backend downtime doesn't affect functionality either.\u003C\u002Fp>\n",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":232},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"M9 9.003a1 1 0 0 1 1.517-.859l4.997 2.997a1 1 0 0 1 0 1.718l-4.997 2.997A1 1 0 0 1 9 14.996z\"\u002F>\u003Ccircle cx=\"12\" cy=\"12\" r=\"10\"\u002F>\u003C\u002Fg>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":234},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M5 12h14m-7-7l7 7l-7 7\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":236},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Ccircle cx=\"12\" cy=\"12\" r=\"10\"\u002F>\u003Cpath d=\"M12 16v-4m0-4h.01\"\u002F>\u003C\u002Fg>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":238},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"m5 8l6 6m-7 0l6-6l2-3M2 5h12M7 2h1m14 20l-5-10l-5 10m2-4h6\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":240},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Ccircle cx=\"6\" cy=\"6\" r=\"3\"\u002F>\u003Cpath d=\"M8.12 8.12L12 12m8-8L8.12 15.88\"\u002F>\u003Ccircle cx=\"6\" cy=\"18\" r=\"3\"\u002F>\u003Cpath d=\"M14.8 14.8L20 20\"\u002F>\u003C\u002Fg>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":242},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Ccircle cx=\"12\" cy=\"12\" r=\"10\"\u002F>\u003Cpath d=\"M12 6v6l4 2\"\u002F>\u003C\u002Fg>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":244},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"m21.64 3.64l-1.28-1.28a1.21 1.21 0 0 0-1.72 0L2.36 18.64a1.21 1.21 0 0 0 0 1.72l1.28 1.28a1.2 1.2 0 0 0 1.72 0L21.64 5.36a1.2 1.2 0 0 0 0-1.72M14 7l3 3M5 6v4m14 4v4M10 2v2M7 8H3m18 8h-4M11 3H9\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":246},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":248},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M12 3v12m5-7l-5-5l-5 5m14 7v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":250},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"\u002F>\u003Cpath d=\"M18.375 2.625a1 1 0 0 1 3 3l-9.013 9.014a2 2 0 0 1-.853.505l-2.873.84a.5.5 0 0 1-.62-.62l.84-2.873a2 2 0 0 1 .506-.852z\"\u002F>\u003C\u002Fg>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":252},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"M12 15V3m9 12v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"\u002F>\u003Cpath d=\"m7 10l5 5l5-5\"\u002F>\u003C\u002Fg>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":254},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"M10 2h4m-2 12v-4m-8 3a8 8 0 0 1 8-7a8 8 0 1 1-5.3 14L4 17.6\"\u002F>\u003Cpath d=\"M9 17H4v5\"\u002F>\u003C\u002Fg>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":256},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M3 6a3 3 0 1 0 6 0a3 3 0 0 0-6 0m18 5V8a2 2 0 0 0-2-2h-6l3 3m0-6l-3 3M3 13v3a2 2 0 0 0 2 2h6l-3-3m0 6l3-3m4 0a3 3 0 1 0 6 0a3 3 0 0 0-6 0\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":258},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"m16 13l5.223 3.482a.5.5 0 0 0 .777-.416V7.87a.5.5 0 0 0-.752-.432L16 10.5\"\u002F>\u003Crect width=\"14\" height=\"12\" x=\"2\" y=\"6\" rx=\"2\"\u002F>\u003C\u002Fg>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":260},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M2 13a2 2 0 0 0 2-2V7a2 2 0 0 1 4 0v13a2 2 0 0 0 4 0V4a2 2 0 0 1 4 0v13a2 2 0 0 0 4 0v-4a2 2 0 0 1 2-2\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":262},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M12 3v14m-7-7h14M5 21h14\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":264},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Crect width=\"18\" height=\"14\" x=\"3\" y=\"5\" rx=\"2\" ry=\"2\"\u002F>\u003Cpath d=\"M7 15h4m4 0h2M7 11h2m4 0h4\"\u002F>\u003C\u002Fg>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":266},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M7 7h10v10M7 17L17 7\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":268},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Ccircle cx=\"12\" cy=\"12\" r=\"10\"\u002F>\u003Cpath d=\"M8 12h8m-4-4v8\"\u002F>\u003C\u002Fg>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":270},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"M10 8h.01M12 12h.01M14 8h.01M16 12h.01M18 8h.01M6 8h.01M7 16h10m-9-4h.01\"\u002F>\u003Crect width=\"20\" height=\"16\" x=\"2\" y=\"4\" rx=\"2\"\u002F>\u003C\u002Fg>",1782799335640]