How to export video chapter markers without desktop software
- Step 1Open the tool in any browser — No download, no extension, no admin prompt. Chrome, Edge, Firefox, or Safari on desktop or mobile all run the WebAssembly FFmpeg build.
- Step 2Drop your video file — Drag an MP4, MKV, MOV, or WebM in. One file at a time. Free tier handles up to 1 GB without an account — enough for most clips on a shared machine.
- Step 3FFmpeg.wasm reads the header locally — JAD runs
ffmpeg -i <file> -c copy -t 0 -f null -in the tab. Only the container metadata is parsed; no frames decode and nothing uploads — confirmable in your browser's network panel (no file POST). - Step 4See the chapters — Each marker becomes
{ start, end, title }with times in seconds. An empty array means the file has no embedded chapters — there's nothing to install your way out of; the data isn't there. - Step 5Download the JSON — Saves as
<filename>-chapters.jsondirectly to the machine, in the standard{ chapters: [...] }shape. - Step 6Take the JSON wherever you need it — Because it's plain JSON, you can move it to a system where you can't install software at all — a notes app, a spreadsheet, or a pipeline on another box.
Desktop tools vs this browser tool
Same chapter data, different access model.
| Desktop approach | Needs install / admin? | Output | Browser-tool equivalent |
|---|---|---|---|
ffmpeg -i file -f ffmetadata | Yes (CLI install) | ffmetadata text | This tool — same read, JSON output, no install |
mkvtoolnix mkvextract chapters | Yes | XML / simple chapters | This tool — MKV reads identically, returns JSON |
| MediaInfo tree view | Yes (or web upload) | Visual tree | This tool — structured JSON, no upload |
| HandBrake Chapters tab | Yes (heavy app) | On-screen list | This tool — list as downloadable JSON |
What runs where
Everything in this tool happens client-side.
| Step | Location | Network? | Notes |
|---|---|---|---|
| Read file bytes | Browser tab | No | File picked locally, never POSTed |
| FFmpeg chapter parse | FFmpeg.wasm in tab | No (after wasm load) | -c copy -t 0 — header only |
| Build JSON + download | Browser tab | No | Saved straight to the device |
| Anonymous processed counter | Server | Tiny ping | Count only, no file content; signed-in stats |
Cookbook
Outputs you can produce on a machine where you can't install anything. Times in seconds; titles verbatim or null.
Reading chapters on a locked-down work laptop
No admin rights, can't install FFmpeg or HandBrake. The browser tool reads the same data.
Input: webinar.mp4 (no install available)
Output: webinar-chapters.json
{
"chapters": [
{ "start": 0, "end": 300.0, "title": "Agenda" },
{ "start": 300.0, "end": 1500.0, "title": "Main talk" },
{ "start": 1500.0,"end": 1800.0, "title": "Q&A" }
]
}Confirming nothing uploads
On a sensitive file, open the browser's network panel before dropping. You'll see the wasm load, then no file upload during extraction.
Network panel during extraction: GET ffmpeg-core.wasm (one-time engine load) GET ffmpeg-core.js (drop file) → no POST of the video; chapters appear locally POST /api/usage (tiny counter ping, no file content)
An empty array — install wouldn't help
The file has no embedded chapters. Installing HandBrake or FFmpeg would show the same empty result — the data was never written.
Input: phone-clip.mp4 (no chapters)
Output: phone-clip-chapters.json
{
"chapters": []
}
→ Markers aren't missing tooling; they're not in the file.
Use scene-detector to derive cut timestamps instead.Moving the JSON to a no-tooling environment
Extract on your browser machine, then drop the JSON into a system that can't run binaries at all (e.g. a sandboxed VM, a notes app).
1. Browser: drop video → download webinar-chapters.json 2. Copy the JSON anywhere — it's plain text 3. Paste into your notes / docs / pipeline No FFmpeg ever runs on the destination machine.
Reading on a Chromebook or tablet
No desktop FFmpeg exists for these, but the WebAssembly build runs in their browser the same as on a PC.
Device: Chromebook (no installable FFmpeg)
Input: lesson.mkv
Output: lesson-chapters.json
{ "chapters": [ { "start": 0, "end": 540.0, "title": "Part 1" }, ... ] }Edge cases and what actually happens
File has no embedded chapters
Empty arrayReturns { "chapters": [] }. Installing desktop tooling wouldn't change this — the markers were never written. To generate markers from the video itself, use the scene-detector.
Corporate browser blocks WebAssembly
May failFFmpeg.wasm needs WebAssembly enabled. A few hardened enterprise browser policies disable wasm or SharedArrayBuffer. If extraction never starts, that's the likely cause — try a different supported browser, or ask IT about the policy.
Very old browser
May failThe WebAssembly FFmpeg build needs a current browser. Internet Explorer and very old mobile browsers can't run it. Any recent Chrome, Edge, Firefox, or Safari works.
Phone with a large file
Memory-limitedChapter reading is header-only and light, but a phone with little free RAM can still struggle to hold a multi-GB file. The read itself decodes nothing, so it's usually fine; if the tab reloads, free memory or use a desktop browser.
Titles with non-ASCII characters
PreservedTitles read as UTF-8 and write verbatim, independent of the OS locale — handy on a shared machine set to a different language than the content.
AVI / MPG dropped
Empty arrayThese containers can't store chapters, so the array is empty no matter what tool you'd use. Convert from a chaptered source if one exists; otherwise there's nothing to export.
Wanting to write chapters without software
Read-onlyThis tool reads/exports only. Authoring or editing chapters still needs a desktop tool like mkvtoolnix — there's no browser writer here. For YouTube, you don't need software at all: paste MM:SS Title lines into the description.
Offline after the first load
SupportedOnce the wasm engine has loaded, the extraction itself doesn't need the network — the file read and JSON build happen locally. Only the anonymous counter ping needs connectivity.
Big file on the 1 GB free cap
Tier limitFree tier caps the file at 1 GB. Because parsing is header-only it's fast, but the size gate still applies — Pro (10 GB) or Pro-media / Developer (100 GB) raise it.
Frequently asked questions
Do I really not need to install anything?
Correct — no install, no extension, no admin rights. The tool is FFmpeg compiled to WebAssembly running in your browser tab. That's the whole appeal for locked-down or shared machines.
Is it the same as running FFmpeg on the command line?
For chapter reading, effectively yes — it runs the same FFmpeg chapter parse, just in WebAssembly, and returns the result as JSON instead of ffmetadata text. No terminal required.
Does my file get uploaded?
No. FFmpeg.wasm reads the container header in the tab (-c copy -t 0), and the bytes never leave the device. You can confirm in the browser network panel — there's no file POST during extraction.
Will it work on a Chromebook or tablet?
Yes. There's no installable desktop FFmpeg for those, but the WebAssembly build runs in their browser exactly like on a PC. Large files may strain a low-RAM device, since the whole file is held in memory.
What's the output?
{ "chapters": [{ "start": <seconds>, "end": <seconds>, "title": <string or null> }] }, downloaded as <filename>-chapters.json. Start/end are floating-point seconds; titles are verbatim or null.
Why is the array empty even though I expected chapters?
The file simply has no embedded chapter markers — and no tool, installed or not, can read data that isn't there. Re-encode from a chaptered source if one exists, or derive markers from cuts with the scene-detector.
Can I write or edit chapters here without installing software?
No — this is read/export only. Authoring chapters still needs a desktop tool such as mkvtoolnix. For YouTube specifically you don't need any software: paste MM:SS Title lines into the description.
What if my corporate browser blocks WebAssembly?
Then the engine can't load and extraction won't start. Some hardened enterprise policies disable wasm or SharedArrayBuffer. Try another supported browser, or ask IT to allow it for the site.
Does it work offline?
After the wasm engine has loaded once, the extraction itself runs locally with no network. Only a tiny anonymous usage counter pings the server, which you can ignore offline.
Which formats can it read?
MP4 / M4V, MKV / WebM, and MOV carry chapters and read fine. AVI, MPG, and TS can't hold chapters, so they return an empty array.
Is there a file-size limit without an account?
Free tier (no account needed) caps at 1 GB. Header-only parsing keeps it fast within that. Pro raises it to 10 GB, Pro-media and Developer to 100 GB.
How does this compare to uploading to an online MediaInfo?
MediaInfo's web version uploads your file to a server; this tool doesn't — everything runs in your browser. Same kind of structured output, without sending the footage anywhere.
Privacy first
Every JAD Video tool runs entirely in your browser via WebCodecs and FFmpeg (WebAssembly). Your video files never leave your device — verified by zero outbound network requests during processing.