ファイルを選択
  1. base64hub
  2. 画像ツール
  3. Base64 → WebP

Base64 から WebP へ変換

WebP の Base64 や data:image/webp URI を貼り付けると、画像をプレビューして .webp ファイルとして保存できます。文字列の先頭を見るだけで、どの種類の WebP かもわかります。

無料 登録不要・制限なし ローカル アップロードなし 更新日 2026/10/27
入力 –出力 –サイズ –

ブラウザ内で処理されます。このページがデータをどこかに送信することはできません – その根拠

Base64 を WebP に変換する手順

  1. Base64 か、data:image/webp;base64,... 形式の URI 全体を貼り付けます。CSS の url() や <img> タグのように、URI を含むコードのままでもかまいません。
  2. ステータス行に 検出 WebP と表示されることを確認し、プレビューとその上の寸法を確かめます。アニメーション WebP はプレビューで再生されます。
  3. ファイルをダウンロード を押します。拡張子は webp に設定されます。

WebP の 3 つの種類

WebP は RIFF コンテナで、WEBP タグの直後に 3 種類のチャンクのいずれかが続きます。タグは固定のオフセットにあるため、種類は Base64 でも決まった位置に現れます。

Base64 の先頭チャンク中身
UklGR…XRUJQVlA4IVP8非可逆、透過なし
UklGR…XRUJQVlA4TVP8L可逆、透過を含められる
UklGR…XRUJQVlA4WVP8X拡張:アルファ付き非可逆、アニメーション、ICC プロファイル、EXIF

UklGR と XRUJQ の間の 6 文字はファイルサイズを表し、ファイルごとに変わります。(WEBP に由来する)XRUJQ は常に 12〜16 文字目に、(VP8 に由来する)VlA4 は 17〜20 文字目にあります。注目すべきは 21 文字目で、I、T、W のいずれかです。

種類によって、ファイルを変換したときの結果が変わります。可逆 WebP は PNG の代わりとして十分使えます。非可逆 WebP はすでに細部が失われているので、PNG に変換してもファイルが大きくなるだけで画質は戻りません。拡張形式のファイルは複数のフレームを持てますが、静止画形式に変換すると最初のフレームしか残りません。

コードで WebP の種類を判別する

Python で同じ判定をするには、チャンクのタグと、拡張形式ならフラグのバイトを読みます。

import base64

def webp_kind(b64: str) -> str:
    data = base64.b64decode(b64.split(",", 1)[-1])
    if data[:4] != b"RIFF" or data[8:12] != b"WEBP":
        return "not WebP"
    chunk = data[12:16]
    if chunk == b"VP8 ":
        return "lossy"
    if chunk == b"VP8L":
        return "lossless"
    flags = data[20]
    parts = ["extended"]
    if flags & 0x10:
        parts.append("alpha")
    if flags & 0x02:
        parts.append("animated")
    return ", ".join(parts)

Pillow で書き出した WebP ファイルに対しては、lossy、lossless、透過付き非可逆画像なら extended, alpha、アニメーションなら extended, animated を返します。詳しくは Python での Base64 をご覧ください。

RIFF が WebP とは限らない

UklGR が意味するのは「RIFF」だけです。WAV 音声や AVI 動画も同じように始まり、違いは 8〜11 バイト目のタグにあります。デコーダーはこのタグを確認するので、ここに WAV を貼り付けると「これは WebP ではなく WAV のようです。」と表示され、.wav として保存するボタンが出ます。再生するには Base64 から音声へ を使ってください。

WebP の Base64 が使われる場面

  • Canvas の書き出し:toDataURL("image/webp", quality) を使った場合です。結果は必ず確認してください。WebP エンコーダーを持たないブラウザは黙って PNG を返します。
  • 画像 API や CDN:WebP を受け付けるクライアントには WebP を返します。ブラウザが取得した画像なら、thumbnail_jpg という名前のフィールドにも WebP が入っていることがあります。
  • インラインのプレースホルダーやアイコン:HTML や CSS では、WebP のほうが PNG や JPEG より短い文字列になります。
  • チャットのスタンプ:WebP であることが多く、アニメーションの場合もあります。

古いプログラムが保存したファイルを受け付けない場合は、ここに表示される SHA-256 と、プログラムが受け取ったファイルのハッシュを比べてください。一致するなら、そのプログラムが WebP を読めないということなので、PNG か JPEG のコピーを渡すのが解決策です。

よくある質問

Base64 の WebP が非可逆か可逆かを見分けるには?

文字列の 21 文字目を見てください。VlA4 に続く文字が I なら非可逆の VP8 画像、T なら可逆の VP8L 画像、W なら拡張形式で、透過付きの非可逆画像やアニメーションはこれを使います。

デコードした WebP を PNG や JPG で保存できますか?

名前を変えるだけではできません。バイト列は WebP のままです。.webp をダウンロードしてから、WebP から Base64 へ で 変換先 に PNG か JPEG を選び、できた文字列を Base64 から PNG へ でデコードしてください。

canvas.toDataURL('image/webp') で PNG が返ってきたのはなぜですか?

WebP をエンコードできないブラウザ(特に Safari)は、何も言わずに代わりに PNG の data URI を返します。結果をここに貼り付けて PNG と表示されたら、それが起きています。

古い Mac や iPhone でプレビューが失敗するのはなぜですか?

Safari 14 と 15 が WebP を表示できるのは macOS 11 Big Sur 以降だけで、Safari 14 より前ではまったく表示できません。その場合プレビューにはブラウザが画像を表示できない旨が出ますが、ファイルをダウンロード では有効な .webp が保存されます。