Initializing... drag & drop files here
Supports: TS
2.100 for 2 seconds 100 ms) to grab one still, or Multiple Screenshots to export a sequence — the dropdown lets you pull one frame per second, per 2 seconds, and so on across the clip.A .ts file is an MPEG transport stream — the container used by ATSC, DVB, IPTV, and most TV-recording PVRs. It wraps either MPEG-2 video (H.262) or H.264/AVC video plus audio and PSIP signalling so the stream survives broadcast packet loss. PPM (Portable Pixmap) is the opposite end of the spectrum: a plain, uncompressed Netpbm raster spec from the late 1980s where every pixel is a literal 8-bit-per-channel RGB triplet. There is no codec, no metadata, no color profile — just a tiny ASCII header (P6 width height 255) followed by raw pixel bytes. That makes it the standard input format for image-processing pipelines that don't want to depend on libjpeg, libpng, or libtiff.
| Property | TS (MPEG transport stream) | PPM (Portable Pixmap) |
|---|---|---|
| Type | Video/audio container | Single-frame raster image |
| Compression | Lossy (MPEG-2 / H.264 / HEVC payload) | Uncompressed |
| Typical bit depth | 8-bit per channel YUV 4:2:0 | 8-bit per channel RGB (24-bit); 16-bit optional |
| Metadata | PAT/PMT, PCR, PSIP/EPG, audio tracks, subtitles | Width, height, maxval — that's it |
| File size (1080p still) | n/a (video container) | ~6 MB raw per frame |
| Designed for | Broadcast, IPTV, PVR recording | Cross-platform pixmap exchange |
| Native players/readers | VLC, MPV, hardware STBs, any H.264 player | ImageMagick, GIMP, IrfanView, OpenCV, Photoshop (via plugin) |
| Magic header | 0x47 sync byte every 188 bytes |
ASCII P6 (raw) or P3 (plain) |
| Standardized by | ISO/IEC 13818-1 (MPEG-2 Systems) | Netpbm project (Jef Poskanzer, 1988) |
| Goal | Frame Selection | Notes |
|---|---|---|
| One still at a specific moment | Specific Frame + Time (e.g. 12.500) |
Captures the frame at 12.5 s; output is a single .ppm |
| Thumbnail at 0 s | Specific Frame + Time 0 |
Default; pulls the first decodable I-frame |
| One PPM per second across the clip | Multiple Screenshots + 1 frame / 1 second |
Useful for scene-cut detection |
| Dense sampling for CV training | Multiple Screenshots + higher framerate | Each frame becomes its own .ppm in a ZIP |
| Bit-exact 24-bit RGB | Bit Depth = 8-bit | Maxval 255, standard P6 output |
| Higher dynamic range source | Bit Depth = 16-bit | Maxval 65535, doubles file size |
| Mask / line art only | Bit Depth = 1-bit | Threshold to black & white |
PPM is uncompressed and dependency-free, so the bytes that come out match the decoded video frame exactly — no JPEG quantization noise, no PNG zlib step, no library version mismatch. That matters when you're feeding the frame into OpenCV, an astrophotography stacker, or a color-science script that wants to read raw 24-bit RGB and start working. For sharing or web display, convert later to PNG or JPG — PPM is meant to be the intermediate, not the final.
PPM itself is lossless, but the source video was already compressed when it was broadcast or recorded — typically 8-bit 4:2:0 YUV in H.264 or MPEG-2. The decode-and-write step doesn't introduce additional loss beyond the YUV-to-RGB color conversion. If your TS source is 10-bit HEVC, pick 16-bit bit depth to preserve more of the dynamic range; otherwise the default 8-bit P6 captures everything the video frame contains.
Yes. TS is a container governed by ISO/IEC 13818-1; the video payload inside can be MPEG-2 (H.262), H.264/AVC, or H.265/HEVC. The converter decodes whichever codec your stream carries, then writes the selected frame(s) as PPM. ATSC broadcasts in North America are still mostly H.262 in TS, and European DVB tends to be H.264 — both convert the same way.
Raw 24-bit RGB has no compression, so the math is direct: width × height × 3 bytes plus a ~20-byte header. A 1920×1080 frame is about 6.2 MB; a 3840×2160 (4K) frame is about 24.9 MB. A 16-bit PPM doubles those numbers (6 bytes per pixel). If file size matters, drop the resolution preset to 720p or 480p before converting, or use TS to JPG instead.
Use Multiple Screenshots and pick the highest sampling rate in the dropdown. For a true frame-perfect dump (every frame, no skips), you'll get better control from FFmpeg locally (ffmpeg -i input.ts frame_%05d.ppm) — the browser-based converter is tuned for sampled stills (one per second, per 2 seconds, etc.) rather than a 60 fps full decode that would produce thousands of multi-megabyte PPM files per minute of video.
You're on the wrong page. To remux or re-encode the broadcast stream as a standard MP4, use TS to MP4 — it keeps the H.264 or transcodes MPEG-2 to AVC and rewraps in an MP4 container that plays in every browser and on every mobile device.
GIMP, IrfanView, XnView, ImageMagick (display, convert), Photoshop (with the free Netpbm plugin), Preview on macOS, and the standard image viewers on most Linux desktops. Web browsers don't render PPM, so if you need to embed the still on a page, run it through PPM to PNG or PPM to JPG first.
8-bit is the right answer for 99% of broadcast TS sources — they're encoded 8-bit YUV at the camera, and going to 16-bit PPM just doubles file size with no real precision gain. Pick 16-bit only if your TS file is 10-bit HEVC (HDR / Rec. 2020 broadcast, some 4K UHD captures) and you plan to do tone-mapping or grading on the still afterward. Pick 1-bit only when you want a black-and-white mask, not a photo.
Free conversions process on our servers with generous per-file caps; for very large batches or full-frame dumps from long recordings, a free account raises the ceiling. Anonymous sessions get the same per-file processing — no watermark, no sign-up wall before the download.