Capture a still frame from a video in your browser. Export at the decoded source resolution rather than the smaller preview size.
Pause the video on the moment you want and save that frame as PNG, JPG or WebP at the video's own resolution: a 4K source gives a 3840 × 2160 image whatever size the preview has on screen. The frame is decoded again from the file with WebCodecs, so it is the real frame rather than a screenshot of the player, and a phone video's rotation is applied. Saving a still does not count as an encoded export.
Drop video files hereProcess many files at onceNo upload · processed on this device
Making a game?
Nerulio is a 2D game asset studio first: draw pixel art, cut sprite sheets into animations, pack texture atlases, check autotile tilesets and export them for Godot, Unity, Phaser and other engines. It runs in your browser; files stay on your device.
Every video frame covers a short span of time. When you save at time t, Nerulio decodes the last frame that starts at or before t, which is the frame on screen at that moment. At 29.97 fps a frame lasts 33.4 ms, so any time inside that span gives the same picture.
The image has the decoded frame's full size after the file's rotation metadata is applied, so a portrait phone clip that is stored sideways comes out upright. PNG keeps every pixel exactly; JPG and WebP are written at quality 0.94, which is far smaller for photographic frames.
The ⏮ and ⏭ buttons and the arrow keys on a trim handle move by 1/30 s (Shift moves 1 s). On 30 fps video that is one frame; on 60 fps video it skips every other frame, and on 24 fps video two presses can land on the same frame.
Presentation time
When a frame is shown; it stays on screen until the next frame starts.
Source resolution
The coded picture size of the video track, such as 3840 × 2160, independent of the preview size.
Rotation metadata
A flag in phone videos saying the stored picture must be turned by 90°, 180° or 270° for display.
Example: a 29.97 fps 4K clip, frame at 12.345 s
For a constant-rate clip that starts at 0 s:
Frame duration 1 ÷ 29.97 = 0.0334 s
Frame index floor(12.345 × 29.97) = floor(369.98) = 369
That frame is shown 369 ÷ 29.97 = 12.312 s until 370 ÷ 29.97 = 12.346 s
Saved image 3840 × 2160 px
Raw pixels 3840 × 2160 × 4 bytes = 33.2 MB before PNG/JPG encoding
One press of ⏭ 12.345 + 0.0333 = 12.378 s → frame 370
PNG keeps every pixel of that frame; for a detailed 4K frame JPG or WebP is much smaller, as the test suite confirms for JPG.
Check the result
The result box shows the saved image's dimensions: they should equal the source dimensions in the file line.
Zoom into the saved image at 100 %: fine detail should match the video, not the smaller preview.
If the exact moment matters, step with ⏮ / ⏭ and save again; the time on the clock is the time used.
Troubleshooting
Symptom
Likely cause
How to check
Fix
The frame looks blurred
Motion blur or compression in the source frame itself; the capture adds none
Step one frame forward and back; neighbouring frames may be sharper
Pick a frame where the motion pauses
Saving stops with "No frame at this timestamp" or a decoder error
The video codec cannot be decoded in this browser (for example HEVC or ProRes), or the time is after the last frame
ffprobe shows the codec; try a slightly earlier time
Use a browser that decodes the codec, or export the video again as H.264
The image is sideways
The file carries no rotation flag, or one the reader does not use
When one frame is not enough and a short loop is wanted.
What this page does not cover
One frame per save; there is no batch export of every N seconds.
HDR frames become 8-bit images; no HDR still format is written.
Versions and sources
Checked in tests/media-browser.mjs in Chromium 153 and Firefox 155: the frame at 1 s of a 3840 × 2160 test video was saved as a 3840 × 2160 PNG, and the JPEG variant kept that size while using fewer bytes. Frames are decoded with Mediabunny 1.58.1 and WebCodecs; without WebCodecs the frame is drawn from the browser's own video player at its native size.
Capture a still frame from a video in your browser. Export at the decoded source resolution rather than the smaller preview size.
How it works
Open a video and seek to a frame
Pause and inspect the selected scene
Export a still image and check its dimensions
Supported formats
MP4 / WebM / MOV → PNG — Input decoding and output encoding depend on browser support.
What this tool does
Export the decoded frame at source resolution; preview size does not constrain output.
Implementation and verified quality
advanced · WebCodecs source-resolution frame / video fallback. Quality qualification is in progress. Pro/Flagship quality has not been established.
Before you export
Fast cut shrinks to inner keyframes. Precise mode re-encodes; codec availability varies. Temporary outputs use local browser storage when available. Compatibility recording retains its short-clip limits.
Frequently asked questions
What determines the supported size?
Actual device memory, storage and codec support. Tested examples are evidence, not a guarantee for every file.
Are my files uploaded?
This tool processes the files you open on your device without uploading them. Images you explicitly attach to community posts are uploaded separately. Optional engines and models are downloaded from third parties; those requests expose connection information such as your IP address.
Will my work be saved automatically?
No. Images and editing state stay in this tab; media output can use local temporary storage. Changing language preserves your work; reloading, closing the tab, or following a link to another page can clear it.