filetity

VIDEO -> JPG · Local tool

Video to JPG

Pull still frames out of a video and save them as JPG.

Last updated

How do I get JPG images out of a video?

filetity reads the video in your browser tab and writes out the frames you ask for as JPG files, with nothing uploaded. Choose one frame every second, every five, every ten, or a fixed twelve spread across the whole clip, and each image is named with the second it came from. JPG is the right choice when the video is camera footage and you want the files small: it is lossy, so a screen recording with sharp text will look cleaner as PNG. Useful for a thumbnail, for pulling a readable frame out of a document someone filmed, or for indexing a long recording.

  1. 01 / Your device

    the file stays here

  2. 02 / Browser memory

    the work runs locally

  3. 03 / Back to you

    saved on this device

When you would use this

Situations, not settings.

A thumbnail for the video itself
Upload forms and course platforms often want a still to go with the file. Take a few and pick the one that is not a fade to black.
A document somebody filmed instead of scanning
One readable frame is worth more than the whole clip. Space them a second apart and keep the one that is in focus.
Indexing a long recording
One frame every ten seconds turns a two hour capture into a contact sheet you can scan in a minute.

How it works / no cloud

A conversion engine, not an upload form.

filetity decodes the video with WebCodecs, the browser's own video engine, seeks to each moment you asked for, and writes that frame out as a JPG. One frame is handed back on its own and several arrive as a ZIP, each named with the second it came from. The decoding happens on your machine, so there is no upload and no queue.

  • Offline ready
  • Installable app
  • No file limit queue

Straight answers

No accordion. Nothing hidden.

Is it free?
Yes, with no watermark and no page limit.
Does it need an account?
No. There is no account system.
Is my file processed on my device?
Yes. The file is read by your browser and never uploaded. There is no server to send it to.
What formats are supported?
MP4, MOV and WebM in. JPG out, one file per frame.
What are the limits?
500 frames at once, refused before decoding rather than after, because every frame is a full image held in memory. It needs WebCodecs, so Safari must be 16.4 or newer.
Does it work on mobile?
Yes, on any modern mobile browser. Large files are limited by the memory the phone gives the browser.
Does it work offline?
Yes, once the page has loaded. The tool keeps working with no network connection.
Is my video uploaded?
No. The file is read from your disk into the tab and decoded by the browser's own video engine. There is no server to send it to, and it works with the network off after the page has loaded.
Should I use JPG or PNG?
JPG for camera footage, because it is lossy and the files come out several times smaller with no visible difference on a photograph. PNG for screen recordings, slides and anything with sharp text or flat colour, because JPG puts a faint halo around hard edges. If you are pulling one readable frame out of a filmed document, use PNG.
How are the files named?
Each one carries its number and the second it was taken from, so holiday-004-12.5s.jpg is the fourth frame, twelve and a half seconds in. A folder of two hundred stills is unusable if the only way to find one is opening them in turn.
Why is there a 500 frame limit?
Every frame is a full decoded image held in memory until you save. Asking for one frame every hundredth of a second of an hour of video is asking the tab to hold 360,000 images, and it would die trying. The count is checked against your settings before a single frame is decoded, so you are told immediately rather than after a long wait.
Can I get a frame from an exact moment?
Not yet by typing a timestamp. "Every frame" gives you the video's own rate, so on 30 fps footage there is one every thirty-third of a second and nothing between them to miss. Each frame's real timestamp is in its filename, so you can tell exactly which one you have rather than counting.

Keep working locally

4 available · more coming