Initializing... drag & drop files here
Supports: PPM
PPM (Portable Pixmap) stores raw uncompressed RGB pixel data — it's the simplest possible color image format and a default output target for many rendering, scientific, and image-processing pipelines. Because PPM has no built-in compression and no animation support, every PPM file is one frame, often megabytes in size, and unplayable as a sequence anywhere outside specialized viewers. Wrapping a PPM render sequence into MP4 turns those raw frames into a compact, universally playable video. Most mainstream converters (CloudConvert, FreeConvert) don't even expose a PPM → MP4 path, leaving users to wrestle with FFmpeg command lines. Common reasons to do this conversion:
Output_File_Type=P flag emits PPM by default; many academic raytracers and demoscene renderers do the same. A 240-frame POV-Ray animation at 1/24 second becomes a clean 10-second cinematic MP4 ready for portfolio, YouTube, or a paper supplement.pnmtopnm, ppmtompeg) treats PPM as the lingua franca between filters. After a batch image-processing pipeline, a single MP4 is easier to share than a folder of PPMs.| Property | PPM | MP4 |
|---|---|---|
| Media type | Still image (single frame) | Video container |
| Compression | None — raw RGB bytes | Lossy codec (H.264 / H.265 / VP9 / AV1) |
| Audio support | No | Yes (AAC, MP3, AC-3, Opus, Vorbis, FLAC) |
| Frame count | 1 per file | Many (1 → millions) |
| Time dimension | None | Has duration, frame rate |
| Typical file size (1080p) | ~6 MB per frame | ~30-100 KB per frame at H.264 |
| 1,000-frame sequence size | ~6 GB on disk | ~50-200 MB at 1080p H.265 |
| Color depth | 8 or 16 bits per channel | 8-10 bits per channel (codec dependent) |
| Browser / smart TV playback | No native support | Yes — universal |
| Common producers | POV-Ray, GIMP, ImageMagick, OpenCV, NetPBM | Cameras, screen recorders, video editors |
| Use case | Image duration | Effective frame rate |
|---|---|---|
| Slow stepped review (one frame per second) | 1 second per frame | 1 fps |
| Stop-motion / explanatory animation | 1/10 - 1/15 second per frame | 10-15 fps |
| Cinematic ray-trace animation | 1/24 second per frame | 24 fps |
| Broadcast / smooth simulation playback | 1/30 second per frame | 30 fps |
| High-frame-rate render sequence | 1/60 second per frame | 60 fps |
| Photo-style slideshow from PPM exports | 2-4 seconds per frame | 0.25-0.5 fps |
FFmpeg works, but the typical command (ffmpeg -framerate 24 -i frame_%04d.ppm -c:v libx264 -pix_fmt yuv420p out.mp4) requires sequentially-numbered filenames, a working FFmpeg install, and trial-and-error on pixel format flags (PPM is RGB, MP4 wants YUV420). This page handles the pixel-format conversion, frame ordering, and codec defaults automatically — drop the files, click Convert.
Output duration = number of frames × image duration. A 240-frame POV-Ray animation at 1/24 second = 10 seconds. 1,800 simulation frames at 1/30 second = 60 seconds. 60 PPM stills at 4 seconds each = a 4-minute slideshow. The duration setting applies uniformly to every PPM in the batch.
Yes — files appear in the MP4 in the order shown on the upload screen, which sorts alphabetically by filename. Numbered sequences like frame_0001.ppm through frame_0500.ppm sort correctly when zero-padded. Drag to reorder before clicking Convert if you need a custom sequence, or rename files locally if your renderer produced unpadded numbers (frame_1.ppm, frame_10.ppm would sort wrong).
H.264 is the safe default — every browser, phone, smart TV, and video player decodes it natively. Pick H.265 (HEVC) when the audience is on iPhone (since iOS 11 / 2017), modern Android, recent Windows 10/11, or macOS Big Sur or newer — you get roughly half the file size at the same visual quality, which matters when a 1,000-frame raytrace would otherwise produce a 200 MB MP4. For a paper supplement or archived render, H.265 saves real storage. For a Discord drop or older embedded player, stick with H.264.
Yes. PPM is uncompressed (a 1080p PPM is about 6 MB, a 4K PPM is about 24 MB), so a few hundred frames quickly hits the gigabyte range. Everything runs in your browser session, so very large jobs depend on your device's RAM. For thousands of 4K PPMs, expect the browser to use multiple GB of RAM during encoding — close other tabs, or split the batch.
Each frame is scaled to fit the chosen output resolution while preserving its source aspect ratio. Empty space is filled with the background color (letterbox for tall sources in a wide frame, pillarbox for wide sources in a tall frame). For consistent results in a render sequence, render every frame at the same dimensions before exporting PPM — most ray tracers honor a single resolution flag for the whole animation.
Yes — Image Drop Frames takes every 2nd, 3rd, 4th, up to every 10th frame from the input sequence. Useful when a CFD or molecular-dynamics run dumped a frame every timestep and the resulting playback is too slow. Drop every 4th frame and a 4,000-frame sequence becomes a 1,000-frame video at the same effective frame rate. Video Trim also lets you cap the output duration directly.
PPM supports 8-bit and 16-bit-per-channel RGB. MP4 video codecs are typically 8-bit (10-bit for HEVC Main 10 and AV1 profiles); the converter encodes 8-bit YUV420 by default. For most renders and simulation outputs the visual result is indistinguishable. If you specifically need 10-bit color preservation for an HDR or scientific workflow, pick H.265 / HEVC and use the Highest quality preset. To go the other direction (extract PPM stills from a finished video), see MP4 to JPG or convert image to MP4 for mixed-format input.
This converter produces silent MP4 — PPM has no audio side. To add a soundtrack or voiceover, convert here first, then merge it with a video editor (DaVinci Resolve, Shotcut, CapCut, Adobe Premiere) to layer in the audio track. The output Audio Codec setting (AAC, MP3, AC-3, Opus, Vorbis, FLAC) controls compatibility for the downstream merge step.