✳ OMNIVIEWER.ORG

Drop a WebP. Any size.

safe · secure · no server · works offline · fast

…or paste a file you copied in Finder, or just start typing at the cursor.

Or try it now

↓ scroll for about & FAQ

Preview

Drop a CSV file, or use the file picker.

Know what a WebP is before you convert it

“WebP” covers three very different files. A lossy WebP is a single VP8 video key frame: the encoder already threw detail away, and no converter can bring it back. A lossless WebP (VP8L) keeps every pixel, often as a small colour palette. Either can carry an alpha channel, and either can be animated. OmniViewer reads the bitstream headers first and says which one you have. For a lossy file it reads the quantizers the encoder chose, using a real VP8 boolean decoder, and turns them back into the -q libwebp would have been given. Then the CONVERT tab can tell you what each conversion costs. PNG reproduces exactly what you see but is much larger for a photo. JPG at about the source quality is the honest equivalent. A palette image wants PNG. Every card shows the exact size of its result before you download it.

Animated WebP, one frame at a time

An animated WebP is a canvas and a list of ANMF frames. Each one is a rectangle somewhere on the canvas with its own duration, a blend rule (alpha-blend over what is there, or replace it) and a dispose rule (leave it, or clear it before the next frame). Most frames after the first are small patches, so you cannot export “frame 12” by decoding frame 12 alone. The FRAMES tab cuts each frame out of the file, decodes it with your browser’s own WebP decoder, and composites it the way the spec says, the same way a browser does when it plays the file. Step with the arrow keys, scrub the timeline, see the rectangle each frame repaints, save any frame as a PNG, or convert the whole animation to an animated PNG that keeps full colour and transparency, which GIF cannot.

EXIF, GPS and AI credentials in a WebP

An extended WebP can carry an EXIF chunk with the camera, the time and the GPS position, an XMP packet that often repeats them, and a C2PA content credential. Image generators use that last one to sign “a model made this”. The METADATA tab reads all of them, and every value points at its own bytes in the hex pane beside it. The clean copy is a rewrite rather than a blanking: the chunks are removed, the VP8X flags that announced them are corrected, and the image data is copied through byte for byte, so nothing is re-encoded. Read inside a WebP file: RIFF chunks, VP8, VP8L and animation.

Why a WebP opens instantly, and where it stops

WebP is a RIFF file, and every RIFF size field is 32 bits, so a WebP cannot be larger than 4 GiB. VP8 and VP8L store width and height in 14 bits, so no single image is wider than 16,383 pixels. A WebP gets big in two ways: a huge lossless still or a long animation. OmniViewer reads both by stepping from chunk header to chunk header and skipping the image data by its declared size. A 50,000-frame animation is indexed from its frame headers without decoding a pixel, and frames are decoded one at a time when you look at them. Detection is by the RIFF…WEBP signature, never the extension. Powered by the same engine as fastjsonviewer.com and hugecsv.com; OmniViewer opens every file format.

FAQ

Is my WebP uploaded anywhere?

No. OmniViewer is a static page with no server-side processing. Your WebP is decoded by your own browser and every conversion is encoded by it too. The clean copy is assembled from byte slices of your original file. Nothing leaves your computer.

How do I convert a WebP to PNG or JPG?

Drop the file and open the CONVERT tab. Choose PNG for an exact copy with transparency kept, or JPG for a smaller file; the JPG quality starts near the quality the WebP was saved at, and transparent areas are filled with a colour you choose. Click Convert and the card shows the exact size of the result before you download it. An animated WebP converts the frame you picked on the FRAMES tab, or the whole animation to an animated PNG.

Is my WebP lossy or lossless?

OmniViewer reads the bitstream and says. A lossy WebP stores a VP8 key frame (a "VP8 " chunk); a lossless one stores a VP8L bitstream. The info bar and the CONVERT tab name which one you have, whether it is a palette image, whether it has alpha and whether that alpha was itself stored lossily. An animated WebP can mix both, frame by frame, and STATS counts them.

What quality was this WebP saved at?

A WebP does not store its quality setting; it stores the quantizers that setting produced. OmniViewer reads them from the VP8 frame header with a real boolean decoder, weights the four segment quantizers by how much of the image each covers, and inverts libwebp’s own quality curve. Measured against cwebp, it lands within one point of the -q used with noise shaping off and within two or three with it on, which is the default. Encoders that do not use libwebp’s curve read differently, so the number is shown as approximate.

How do I extract the frames of an animated WebP?

Open the FRAMES tab. Step with the arrow keys, play with the space bar or drag the timeline; each frame is cut out of the file, decoded by your browser and composited with the blend and dispose rules the spec defines, so what you see is exactly what a browser shows at that moment. Save frame as PNG downloads the composited frame. To keep the whole animation, CONVERT turns it into an animated PNG with the same timings and loop count.

Can I convert an animated WebP to GIF?

Yes. On the CONVERT tab, the GIF card writes every frame with its timing and loop count, each frame with its own 256-colour palette. GIF is limited to 256 colours per frame and on/off transparency, so a photographic animation loses detail and usually comes out bigger; if the destination plays animated PNG, the APNG card keeps every pixel and every level of transparency.

Does a WebP have EXIF or GPS data, and how do I remove it?

It can. An extended WebP may carry an EXIF chunk with the camera, the date and the GPS position, an XMP packet, and a C2PA content credential. METADATA shows them all and the info bar flags a GPS position as soon as the file opens. Clear identifying, or Download clean copy on the CHUNKS tab, writes a copy with those chunks removed and the VP8X header corrected; the image data is copied byte for byte, so nothing is re-encoded and no quality is lost.

How large a WebP can I open?

Any WebP there is. The format itself stops at 4 GiB, because every RIFF size field is 32 bits, and at 16,383 pixels a side. OmniViewer reads the structure from the chunk headers alone, so opening a file costs a handful of small reads whatever its size, and an animation with tens of thousands of frames is indexed without decoding any of them. The preview and conversions are decoded by your browser, so their limit is its memory; the CHUNKS, METADATA, HEX and STATS tabs do not depend on that.