Initializing... drag & drop files here
Supports: DVR
A .dvr file is whatever your digital video recorder wrote — a captured broadcast, a set-top-box dump, or footage off a security or CCTV system. A PPM is the colour member of the Netpbm family: a short plain-text header followed by raw pixel bytes, and nothing else. No compression, no colour profile, no metadata block, no decoder to install.
That combination is why this conversion exists. Nobody wants a PPM to look at — browsers do not render them and most photo viewers skip them. They are wanted when a program on the other side has to read pixels with no library in the way: an OpenCV or Pillow script, a Netpbm command chain, a teaching exercise in raster I/O, or an evidence-handling workflow that needs byte-predictable output from a surveillance recording.
.dvr recording onto the page or click "+ Add Files" to browse. Several recordings can be queued and converted with the same settings. If your file is the Windows Media Center .dvr-ms variant, see the failure notes further down before you start.0, which grabs the opening frame. Type the moment you want — the field takes decimals, so 137.5 is two minutes and seventeen and a half seconds in. Multiple Screenshots samples the whole recording at a Capture Rate running from 0.1 seconds up to 10 seconds per frame..ppm. Files upload over an encrypted connection, are processed on our servers, and are deleted automatically after a few hours. No sign-up, no watermark.This is the one control on the page that behaves differently from how its label reads, so it is worth being exact. A PPM stores one byte per colour sample when its maxval is below 256 and two bytes per sample above that. Measured on a 1920x1080 frame through the same tools this page uses:
| Setting | PPM header written | Bytes per pixel | File size at 1920x1080 | Distinct colours possible |
|---|---|---|---|---|
| 8-bit (Recommended) | P6 1920 1080 255 |
3 | 6.22 MB | 16.7 million |
| 16-bit (High Precision) | P6 1920 1080 65535 |
6 | 12.44 MB | Far more than the source holds |
| 1-bit (Black & White) | P6 1920 1080 1 |
3 | 6.22 MB | 8 |
Two things follow. 16-bit does not add anything to a DVR frame. The recording is 8-bit video, so the extra byte per sample is padding — you double the file and gain no information. It exists for genuinely high-precision sources and for tools that insist on 16-bit input.
And 1-bit does not make the file smaller, nor is the result black and white. Because each of the three channels is reduced to two levels while still occupying a byte, the file stays the same size and the picture becomes an eight-colour posterisation: black, white, and the six primaries and secondaries. If you want a smaller PPM, reduce the resolution — that is the only lever that works on an uncompressed format.
| Property | PPM | PNG | BMP |
|---|---|---|---|
| Family | Netpbm — PBM, PGM, PPM, PAM | W3C / ISO/IEC 15948 | Microsoft device-independent bitmap |
| Compression | None | Lossless DEFLATE | None in the 24-bit form |
| Fidelity to the decoded frame | Exact | Exact | Exact |
| Size for one 1080p frame | 6.22 MB | Much smaller, content-dependent | 6.22 MB plus a 54-byte header |
| Header | Under 20 bytes of plain text | 8-byte signature plus chunks | 54 bytes of binary structures |
| Parsing effort in your own code | Read a text header, then read the bytes | Needs a DEFLATE and chunk implementation | Needs header-version handling and row padding |
| Row padding | None | None | Rows padded to a 4-byte boundary |
| Metadata | None at all | Optional text, gamma, colour profile | Optional profile in V4 and V5 headers |
| Native browser support | No | Yes, universally | Yes, decode only |
| Best for | Feeding raw pixels to a program | A lossless still you will look at or share | Legacy Windows tooling |
All three carry exactly the same pixels here, because the frame is decoded once and written out without further loss in any of them. Choose by what is reading the file: PPM if it is a script, DVR to PNG if it is a person.
It is pixel-exact to the frame the decoder produced, which is not the same as being exact to what the camera saw. DVR recordings store video with lossy codecs — MPEG-2 or H.264 depending on the device — so blocking, quantisation noise and any low-bitrate smearing are already baked into that frame. PPM adds no further loss on top: no requantisation, no colour reduction, just the exact RGB values the decoder handed over, artefacts included.
P6, the raw binary encoding. You can confirm it with head -c 16 on the output: the first two bytes are P6, followed by the width, height and maxval as plain text and then the pixel bytes. P3 stores every sample as human-readable decimal, which roughly triples the size and is only useful for hand-inspecting values. Any Netpbm-aware reader accepts P6, and it is what image-processing libraries expect.
Because they are doing opposite jobs. A DVR file compresses hours of video by predicting each frame from its neighbours and discarding what the eye is unlikely to notice; a PPM stores one frame with no compression whatsoever, at exactly width x height x 3 bytes plus a short header. A 1080p still is 6.22 MB regardless of what it shows — a plain wall and a busy car park cost identically. The Netpbm documentation is candid about this, describing the format as highly redundant by design.
.dvr file will not convert — what is wrong with it?Two causes account for most failures. Some Windows Media Center recordings were flagged as protected by the broadcaster, and those .dvr-ms files are encrypted so that they play only on the machine that recorded them; nothing can re-encode them elsewhere. The other case is a proprietary dump from a standalone CCTV or set-top box, where the .dvr extension hides a vendor-specific wrapper only that manufacturer's player understands. The quick test for both: open the file in VLC. If VLC cannot play it, export or back it up from the recorder's own software into a standard file first.
The frame at zero seconds, because Frame Selection is preselected on Specific Frame with Time (seconds) at 0. On a DVR recording that is frequently the least useful frame available — the start of a scheduled capture, a channel still tuning, or a motion-triggered clip's pre-roll. Enter a timestamp from the middle of the event instead, or use Multiple Screenshots to find it.
Not literally every frame. The fastest Capture Rate available is 0.1 seconds, which samples ten images per second — below the frame rate of 25 or 30 fps footage, though enough to review a sequence of events. Be careful with the arithmetic: at one image per second, an hour of CCTV footage produces 3,600 uncompressed PPMs, which at 704x576 is roughly 4.4 GB. Sample coarsely first, find the moment, then re-run with Specific Frame.
ImageMagick (magick identify or magick display), GIMP, IrfanView, and any Netpbm utility will open it, as will Pillow and OpenCV from a script. Browsers will not, and neither will the default photo viewers on Windows or macOS. If all you needed was a still you could look at, DVR to PNG is the better target, and PPM to PNG converts a pixmap you already have into something viewable.
No — it adds size without adding information. Evidential value comes from the fact that PPM stores exactly what the decoder produced with no further processing, and that is equally true at 8-bit. Since the source recording is 8-bit video, a 16-bit pixmap is the same picture with a zero byte appended to every sample, doubling the file for nothing. Keep the original .dvr alongside the still if provenance matters; that is what an examiner will want to see.
No. PPM has no metadata block whatsoever — the header carries width, height and maxval and that is the entire specification. Any burned-in on-screen timestamp will still be visible because it is part of the picture, but nothing else about the recording survives. For workflows where the capture time has to travel with the image, record the timecode you entered under Time (seconds) in your own notes or filename.
Only by reducing the pixel count. The format has no quality setting and no compression to tune, so file size is fixed at three bytes per pixel plus the header. Lower Image resolution — by percentage, by preset, or by an explicit width — and the file shrinks in proportion. Changing the bit depth to 1-bit does not help, as the table above shows, and 16-bit doubles it. If you want a small lossless file rather than a raw pixmap, DVR to PNG compresses the identical pixels.
It travels over an encrypted connection, is decoded on our servers, and both the upload and the stills produced from it are deleted automatically after a few hours. Nothing is shared or made public, no account is required, and there is no watermark. DVR files are often long, so trimming to the section you need before uploading — or using DVR to MP4 to produce a manageable working copy first — saves the most time.