MKV to JPG converter
This route answers one question: which moment do you want? You drag a timestamp slider, the local worker decodes that point in the clip, and you get one JPG. Nothing else from the file leaves the page — no audio, no motion, no upload.
Only one still frame is kept; audio, motion and the rest of the clip are discarded.
Processed on your device. Files aren’t sent anywhere.
Pick the moment before you pick the format
Illustrative: Marek records a screen walkthrough that saves as MKV, and the task tracker wants a JPG thumbnail of the dialog that appeared at about 2 seconds. The file is fine; the problem is that a thumbnail is not the beginning of the clip. The timestamp slider is the whole tool here — everything else is fixed.
A video file is a container holding many frames plus sound. Asking for a JPG means asking for one of those frames, so the useful decisions are narrow: which time, and how much quality you are willing to spend on the still.
- One file per run, up to 60 MiB — this is not a batch route
- The slider runs from 0 to 600 seconds in half-second steps, and defaults to 1 second
- The output is a single still image; audio and motion are discarded by design
The one worked example: a frame at 2.0 seconds
Marek's dialog appears at 2.0 s. He moves the slider from its default of 1.0 to 2.0, leaves quality at 90, converts, and downloads one JPG. Had he left the slider at 1.0 he would have got a frame showing the cursor mid-move instead — the same file, two different pictures, and the slider is the only thing between them.
- Open the MKV on this page; the worker loads on first use
- Set the timestamp to the moment you need, in half-second steps
- Set quality: 90 is the default, 70–80 suits a thumbnail sent in email or chat
- Convert once, look at the still, then re-run if the moment was wrong
What the slider actually does near the end of a clip
If you ask for a time past the known duration, the request is clamped near the end rather than failing — you get the last playable frame. The frame is taken at the nearest decodable point at or before the time you asked for, so on some streams the picture can be a fraction of a second earlier than the number on the slider.
That matters when you are chasing an exact event. Nudge the slider by one step and convert again; the half-second granularity is usually enough to land on the frame you meant.
Why the JPG cannot be better than the video
A frame is not a photograph of the original scene — it is whatever the video encoder already stored. If the source was compressed aggressively, block artefacts and banding are baked into that frame, and re-encoding as JPG adds a second lossy generation on top of them.
- Quality 40–100 controls the JPEG encoder; it is a setting, not a percentage of information preserved
- Flat areas and hard edges degrade first, so text overlays and UI captures suffer before photographs do
- If the still must be edited or compared afterwards, use the MKV to PNG route instead — PNG adds no extra generation
- Nothing is recovered: detail the video encoder discarded stays discarded
What it costs to run
Decoding happens in your browser through a single-threaded FFmpeg worker served from this site. The first conversion loads roughly 32 MB of WASM, so the initial run is slower than the ones after it. The worker is terminated after each conversion and on cancellation, which keeps memory down between jobs.
| Thing to plan for | What it means in practice |
|---|---|
| First use | About 32 MB of WASM loads before the first frame can be decoded |
| CPU and memory | Single-threaded decode; a 60 MiB clip is worked on in your tab, not on a server |
| Source resolution | Roughly a 2 megapixel source limit — larger recordings are refused |
| Page requirement | Needs an HTTP(S) page; worker assets are same-origin and nothing is uploaded |
Where a single frame is the right deliverable
One still is the right answer when the destination is an image slot: a card thumbnail, a slide, a form attachment, a preview in a list. It is the wrong answer when the reader needs to see change over time — that is what the MKV to PDF contact sheet is for.
- Good fit: thumbnails, preview images, a proof frame attached to a ticket
- Good fit: a slide in a deck where motion would be a distraction
- Poor fit: anything where the sequence itself is the evidence
- Poor fit: frames you will re-edit or diff pixel-by-pixel — export PNG instead