Initializing... drag & drop files here
Supports: SWF
This page freezes one moment from a legacy Adobe/Macromedia Flash (.swf) file and saves it as AVIF — a single AV1-coded still inside a HEIF-family container. It is the right tool when you want a compact, modern archive image of Flash-era artwork, an intro card, or a cutscene frame before the original becomes unreadable.
It is a still image, not an animation: one frame comes out, or a batch of separate frames if you ask for several. And it only works on Flash files that carry a real embedded video stream — the walk-through explains how to tell, and what to do when a timestamp comes back empty.
.swf onto the page or click "Add Files" to browse. Several Flash files can be queued and captured with the same settings..swf cannot be seeked to a timestamp — see the walk-through. Pick a Capture Rate instead and take a run of frames across the timeline.An .swf is a compiled Flash program, not a plain video container. It holds vector shapes, a timeline, ActionScript bytecode — and, only sometimes, an actual encoded video stream. What comes out of this page is that encoded stream, decoded and re-saved. The vector timeline is never redrawn and the script is never executed.
That produces three distinct outcomes, and knowing which one you have saves a lot of guessing:
The one behaviour worth planning around is seeking, which does not work on a .swf at all. The SWF reader has no seek support, so "Specific Frame" cannot jump to your timestamp — it reports could not seek to position N at every value we tried, including 0. What happens next depends on the embedded codec, and neither outcome is what you asked for:
| Embedded video codec | Keyframe-flagged packets | Result of a "Specific Frame" request at 1.0 s |
|---|---|---|
| Sorenson Spark (FLV1) — the common case in older SWFs | 0 of 72 | Nothing decodes; no image is produced |
| Flash Screen Video | 5 of 40 | An image, but taken at 0.40 s — not the second you asked for |
| MJPEG (all-intra) | 40 of 40 | An image, but taken at 0.30 s — not the second you asked for |
So a timestamp either yields nothing or silently yields the wrong frame. The fix is to switch Frame Selection to "Multiple Screenshots", which walks the timeline forward instead of seeking into it — pick a Capture Rate, take the batch, and keep the frame you actually wanted.
| Property | Value |
|---|---|
| Container | ISO-BMFF / HEIF family, major brand ftypavif, compatible brands mif1 avif miaf |
| Picture codec | AV1 (AOMedia Video 1), stored as a still image item |
| Bit depth and chroma in the outputs we measured | 8-bit, 4:2:0 |
| Frames | One per output file; "Multiple Screenshots" writes a separate file per frame |
| Alpha | Supported by the AVIF format itself |
| Browser support | 94.67% globally per caniuse — Chrome 85+, Firefox 93+, Safari 16.4+, Edge 121+ |
| Not preserved from the SWF | Animation, audio, ActionScript, interactivity, vector scalability |
For a sense of the size advantage, we pulled one 640×480 frame out of a test Flash file and saved the identical picture three ways:
| Format for the same 640×480 SWF frame | Bytes | Relative to PNG |
|---|---|---|
| PNG, lossless | 72,136 | 1.0× |
| JPEG, quality 80 | 20,219 | 0.28× |
| AVIF, quality 80 | 11,916 | 0.17× |
Roughly a sixth of the PNG, and about 40% smaller than the JPEG at a comparable quality setting — which is the whole reason to pick AVIF for an archive still.
.swf cannot be seeked, and on a Sorenson Spark stream there are no keyframes to fall back on either. Switch to "Multiple Screenshots" and take the frame from the batch.If the Flash file is a game, a quiz, a menu, or anything else whose visuals are drawn at runtime by ActionScript over a vector stage, no frame-capture pipeline can reach them — there is no rendered picture stored in the file to extract. Adobe stopped supporting Flash Player on December 31, 2020 and blocked Flash content from running on January 12, 2021, so playing the file back to screenshot it needs an emulator: the open-source Ruffle project runs many legacy SWFs and lets you capture what you see. Encrypted or obfuscated SWFs from old game portals resist reading entirely.
One frame. AVIF here is a still image: the converter decodes the SWF's embedded video stream and saves the frame at the timestamp you set under Frame Selection. "Multiple Screenshots" gives you several separate stills at a chosen capture rate, delivered together. If you want motion back, convert to video with SWF to MP4 instead.
Because it holds no encoded picture stream. A Flash file built purely from vector shapes, tweens and ActionScript — which is most banner ads, logo animations and Flash games — has nothing a decoder can turn into pixels, so the conversion stops instead of writing a blank frame. Only SWFs that wrap Flash Video, On2 VP6 or Flash Screen Video have an image to extract.
Switch Frame Selection to "Multiple Screenshots". The SWF reader has no seek support, so a timestamp request fails at every value including 0 — and on a Sorenson Spark stream, where we measured zero keyframe-flagged packets across 72 frames, there is nothing to fall back on and no image comes out. The multiple-screenshot path decodes forward through the timeline instead of seeking, so it is unaffected.
If the source was vector art that was later encoded to Flash video, no — it was already rasterised and compressed before it reached the SWF, and a still image cannot recover that. Set Image resolution high (a large Preset Resolution or an explicit Width × Height) and keep Quality Preset toward Highest so the AVIF encode does not add further loss; you can always downscale afterwards.
AVIF gives the best size-for-quality of the three and supports alpha and higher bit depths, at 94.67% global browser support — Safari needs 16.4 or newer. Choose SWF to PNG when you want a truecolour master or need the file to open in older tooling, and SWF to JPG when maximum compatibility matters more than size. AVIF is the right pick when you control where the image gets displayed.
Lossy at the Quality Preset settings on this page, which is where AVIF's size advantage comes from — there is no separate lossless toggle rendered for this conversion. If you need a bit-exact copy of the decoded frame, use SWF to PNG with its Quality Preset set to Highest; PNG's lower presets palette-quantize the image rather than storing it truecolour. And note that "lossless" here only ever means lossless relative to the decoded Flash video, which was itself lossily compressed when the file was authored.
Use "Multiple Screenshots" with a coarse Capture Rate first — one frame per second, say — to see roughly where the moment is, then re-run at a finer rate. Sampling is the practical approach here precisely because you cannot ask for a timestamp and trust the answer: the seek fails, so a "Specific Frame" request either returns nothing or returns an early frame instead of the one you named.
It is uploaded over an encrypted connection, processed on our servers, and deleted automatically after a few hours. Files are never shared or made public, and there is no sign-up and no watermark. Other output formats for the same source are listed on the SWF converter hub.