Initializing... drag & drop files here
Supports: XCF
frame_001.xcf, frame_002.xcf,...) and they're treated as ordered frames. Files are uploaded over an encrypted connection, processed on our servers, and deleted automatically after a few hours.qscale parameter (lower number = higher quality, range 1–31 per FFmpeg). Set Background Color (default Black) to fill any transparent XCF regions, since MJPEG has no alpha channel. Under Video resolution, keep original or pick a Preset Resolution (2160p / 1440p / 1080p / 720p / 480p / 360p / 240p), scale by percentage, or enter custom Width × Height.XCF (eXperimental Computing Facility, named after GIMP's birthplace at UC Berkeley) is GIMP's native layered project format — it stores every layer, mask, channel, path, guide, and selection state, which makes it indispensable for editing but useless for direct video playback. MJPEG (Motion JPEG) takes the opposite approach to modern codecs: each frame is an independent JPEG image with no inter-frame prediction, so any single frame can be decoded and cut without touching its neighbours. Converting a sequence of XCF frames to MJPEG produces a frame-accurate video stream that opens cleanly in non-linear editors, surveillance recorders, and animation pipelines. Common reasons to do this:
If you actually need a smaller, web-friendly output instead, convert XCF straight to XCF to MP4 for H.264-in-MP4. For single-image exports use XCF to PNG (preserves alpha) or XCF to JPG (flattened). For looping animation see XCF to GIF.
| Property | MJPEG | H.264 (MP4) | H.265 / HEVC |
|---|---|---|---|
| Compression type | Intra-frame only (each frame standalone JPEG) | Inter-frame (P/B frames reference others) | Inter-frame (refined CTU grid) |
| Typical compression ratio | ~1:20 | ~1:50 | ~1:100 |
| Storage vs H.264 (same quality) | 5–20× larger | 1× baseline | ~0.5× |
| Decoder CPU load | Very low (one JPEG per frame) | Moderate (motion compensation) | High (more complex prediction) |
| Frame-accurate cut | Yes — every frame is a keyframe | No — only at IDR / I-frames | No — only at IDR / I-frames |
| Tolerance to dropped frame | Excellent (frame loss is local) | Poor (loss can cascade until next I-frame) | Poor (same as H.264) |
| Native browser playback | Safari, Chrome, Firefox, Edge | All browsers since ~2014 | Safari 11+, Chrome 107+, Edge |
| Audio in stream | No (video-only — wrap in AVI/MOV for audio) | Yes (AAC, MP3, AC3, Opus) | Yes |
| Best for | Editing intermediates, surveillance, slow-mo capture | General sharing, streaming | 4K, bandwidth-limited, modern devices |
XConvert's Quality Preset maps to FFmpeg's MJPEG qscale parameter (range 1–31; 1 = best). Lower qscale means higher quality and bigger files.
| Preset | qscale (approx) | Visual quality | Use when |
|---|---|---|---|
| Highest | 1–2 | Visually lossless, near-original JPEG | Master intermediates, archival |
| Very High (Recommended) | 3–5 | Indistinguishable from source on most footage | Default — editing, frame-accurate cuts |
| High | 6–10 | Slight softening in fine detail | Web preview, mid-quality archive |
| Medium | 11–18 | Visible JPEG blocking on flat areas | Storage-constrained backup |
| Low | 19–25 | Obvious blockiness, posterised gradients | Thumbnails, low-bandwidth review |
| Lowest | 26–31 | Heavy artefacts | Smallest preview, not for production |
XCF is GIMP's project file — it preserves every layer, mask, channel, path, guide, and selection separately, plus the canvas size and colour mode. When you convert XCF to MJPEG the converter must first flatten every layer into one composite raster image per frame, then JPEG-encode that composite. Transparent regions fall through to whatever you set in Background Color (default Black) because JPEG has no alpha channel. If you want to keep alpha through to a per-frame still, export each XCF to PNG instead via XCF to PNG.
No — and they can't be. MJPEG, like any video format, stores a sequence of flat raster frames. Layer structure, masks, layer groups (GIMP 2.7+), paths, guides, and channels are flattened into the rendered pixels during conversion. If you need to keep the layered project intact, hold on to the original .xcf and use the MJPEG only for playback or editing-intermediate use.
MJPEG stores every frame as an independent JPEG with no inter-frame prediction. H.264/H.265 in MP4 only stores full keyframes every 1–10 seconds and describes the in-between frames as deltas. For typical footage MJPEG runs 5–20× larger than H.264 at comparable per-frame quality, per surveillance-industry benchmarks. That's the cost of frame independence. If size matters more than frame-accurate editing, convert to MP4 instead via XCF to MP4.
For cinema-style motion use 1/24 second per frame (24 fps); for standard video use 1/30 (30 fps NTSC) or 1/25 (25 fps PAL); for high-frame-rate web video use 1/60 (60 fps). Pick longer durations (1, 2, 5, 10 seconds per frame) when each XCF is a slideshow image rather than an animation frame. The selector exposes 1/60, 1/30, 1/24, 1/10, 1/5, 1/3, 1/2 second and 1–10 second whole-second options.
JPEG (and therefore MJPEG) does not support alpha channels. Any transparent or partially transparent pixels in the XCF are composited against the Background Color you set during the convert step (default Black). If you have soft edges (anti-aliased masks against transparency) and the background colour doesn't match your intended scene, you'll see a coloured halo on the rendered frame. Choose a background that matches your destination (white for documents, black for cinema, chroma green for keying workflows).
Yes — Motion JPEG decodes natively in Safari, Chrome, Firefox, and Edge, and on QuickTime, VLC, and most PlayStation generations. Mobile Safari and Chrome on Android also handle it. The catch is the wrapping container: a raw .mjpeg stream is video-only with no audio support, and some players prefer MJPEG wrapped inside an AVI or MOV container. If a recipient's player won't open it, try VLC (brew install --cask vlc) — its MJPEG demuxer is the most permissive.
GIMP's animation export (File → Export As → ".mp4" or ".webm") goes through FFmpeg as a long-GOP encode with motion compensation, which discards detail that doesn't survive inter-frame prediction. Exporting frames as XCF first and converting the sequence to MJPEG keeps each frame intra-coded — every frame is JPEG-encoded independently at the qscale you pick, with no temporal compression. At Highest / Very High presets the result is visually identical to the per-frame composite GIMP produces internally.
No — MJPEG is a video-only codec by definition (it's literally a stream of JPEG images). To attach audio you need to wrap the MJPEG video in a container that supports separate audio tracks (AVI, MOV, or MKV), then mux an audio stream alongside. If you need audio plus video in one file, convert to MP4 instead via XCF to MP4; the H.264 + AAC combination is universally supported and an order of magnitude smaller.
XConvert processes XCF files in the browser, so the practical limit is upload size and connection speed plus willingness to wait on the upload. Large multi-layer XCFs (4K, 30+ layers) can run hundreds of MB each, and a 1000-frame MJPEG sequence at 1080p Very High preset typically lands at 1–3 GB. There's no fixed per-file cap and no quantity limit on batch jobs.