AVIF、WebP、JPEG XL 該用哪一個?2026 網頁圖片格式完整選擇指南:瀏覽器支援現況、壓縮率實測數字、picture 寫法與轉檔指令(含 Hugo/sharp 實作)

2026 年 10 月 JPEG XL 正式在 Chrome 155 與 Firefox 158 預設啟用,三大瀏覽器引擎終於到齊,圖片格式的選擇題也跟著改寫。本文用查證過的數字整理 AVIF、WebP、JPEG XL 與 JPEG/PNG 的差異:誰在照片上最小、誰在截圖與透明圖上輾壓、誰編碼慢到只能在 build 階段做、HDR 與漸進式渲染差在哪,並附上可直接複製的 <picture> fallback、avifenc/cwebp/cjxl 指令、Node sharp 與 Hugo 內建圖片處理的實作範例。

  • Dennis
  • 12 分鐘閱讀
AVIF、WebP、JPEG XL 該用哪一個?2026 網頁圖片格式完整選擇指南:瀏覽器支援現況、壓縮率實測數字、picture 寫法與轉檔指令(含 Hugo/sharp 實作)

一句話結論:2026 年 10 月的網站圖片預設值應該是「AVIF 為主、WebP 或 JPEG 當 fallback」,因為 AVIF 在同品質下幾乎總是最小、全球支援率約 96%;JPEG XL 在 10 月 6 日與 13 日分別於 Chrome 155、Firefox 158 預設啟用後終於三引擎到齊,但它真正的價值在無損、漸進式載入與 JPEG 無損重封裝,不是「全面取代 AVIF」。

為什麼現在該重看一次這個題目

圖片通常是一個網站裡最重的資源。在 Core Web Vitals 的 LCP(最大內容繪製)指標裡,主視覺圖片往往是決定分數的那一個元素;以一張 1200px 的照片來說,同樣的視覺品質下,格式換對了可能直接少掉一半以上的位元組——這比大多數前端優化手段都划算。

但這個題目在 2026 年 10 月剛好遇到兩件事同時發生:

  1. Chrome 155(2026-10-06 發布)預設啟用 JPEG XL 解碼,使用 Google Research 以 Rust 寫的 jxl-rs 解碼器,Windows/macOS/Linux/ChromeOS/Android 全都開。
  2. Firefox 158(2026-10-13 發布)預設啟用 JPEG XL,並把 image/jxl 加進 HTTP Accept 標頭。

也就是說,過去四年「AVIF 有支援、JPEG XL 只有 Safari」的舊結論已經過期。舊文章、甚至 AI 產出的比較表,很可能還在告訴你「JPEG XL 沒有任何瀏覽器支援」——這個說法從 2026 年 10 月起就是錯的。

一表看懂:四種格式的核心差異

項目JPEGWebPAVIFJPEG XL
標準化年份19922010(Google)2018/2019(AOMedia)ISO/IEC 18181,2021 首版
有損/無損只有有損兩者都有兩者都有(但無損 RGB 效率差)兩者都有(無損最強)
透明通道無有有(無損 alpha 效率較差、邊緣可能微糊)有(有損/無損皆可,解碼不需第二個 context)
HDR/高位元無(8-bit)無(8-bit)有(10/12-bit,PQ/HLG)有(最高 32-bit 浮點、XYB 色彩空間,但瀏覽器端 gain map 仍不可用)
動畫無有有(其實就是 AV1 影片)有
漸進式渲染有(經典 progressive JPEG)無有,但目前僅 Chrome(Firefox 進行中)有,且高 effort 下幾乎不增加檔案大小
現行瀏覽器覆蓋率(2026-10-16 查證)100%97.08%96.33%約 17%(剛開始爬升)
授權專利歷史複雜免權利金、BSD-3免權利金(AOMedia,BSD/Apache-2.0)免權利金、參考實作 BSD-3,Google 提供永久免費專利授權
最適合email、古董系統的保底相容性最好的通用選項網頁照片的預設首選封存、無損素材、JPEG 無損瘦身

覆蓋率數字取自 caniuse 的 usage_perc_y(AVIF/WebP 為完整支援比例),JPEG XL 的覆蓋率是 Chrome 155、Firefox 158 剛預設啟用後的過渡期數字,會隨著使用者更新而快速上升。

瀏覽器支援現況(逐版本)

瀏覽器AVIFWebPJPEG XL
Chrome(桌機/Android)85 起(2020-08)32 起完整支援155 起預設啟用(145–154 僅在 chrome://flags)
Firefox93 起65 起158 起預設啟用(152 起可從 Firefox Labs 開啟)
Safari/iOS16.1 部分(僅 macOS 13+)、16.4 起完整16.0 起完整(14 起部分)17.0 起部分支援:只解靜態圖,不支援動畫與漸進式渲染
Edge/Samsung Internet/其他 Chromium 系121 起18 起尚未跟上(跟隨底層 Chromium 版本)
動機影片編碼 AV1 的靜態圖版本影片編碼 VP8 的靜態圖版本專為靜態圖設計,由 JPEG 委員會 + Google + Cloudinary 開發

一個常被忽略的細節:JPEG XL 的支援是「部分支援」而不是「完全支援」的 Safari 版本佔了大量流量。Safari 17 從 2023 年就支援 JXL 靜態圖,但 Mozilla 一路強調 Safari 的實作缺了漸進式渲染等關鍵功能。所以「三引擎到齊」不等於「功能對等」。

壓縮率:誰在什麼情境贏(附具體數字)

這部分的數字來源必須講清楚,因為網路上(包括 AI 生成的答案)充滿互相複製的錯誤數字。以下是兩份可信度較高的實測:

  • Jake Archibald(2026-10-15,image-codec-bench 腳本,M4 Pro 跑 7 張測試圖):同為 SSIMULACRA2 品質分數 70 的照片,AVIF 41.4 kB、libjxl 58.4 kB(+41%)、jixel 46.6 kB(+12%)。結論是有損照片上 AVIF 幾乎總是最小:JPEG XL 在預設 effort 下通常大 15–25%,開到最大 effort 仍大 6–20%,但也有 JPEG XL 反超的例外(例如「weasel」那張)。
  • 多來源彙整(Cloudinary、Netflix、獨立站點實測):以視覺品質 80 為基準,WebP 比 JPEG 小約 31%、AVIF 比 JPEG 小約 54%、AVIF 又比 WebP 小約 33%(不同測試集的區間大致落在 WebP 25–39%、AVIF 37–67%)。

依內容型態分開看更實用:

內容型態AVIFWebPJPEG XL
一般照片(有損)最小。同品質比 JPEG 小 37–67%比 JPEG 小約 25–39%,但在細節多的照片上偶爾反而比 JPEG 大比 JPEG 小 30–55%;在很高品質(SSIMULACRA2 ≥ 85)區間可反超 AVIF(實測小 23–49%)
截圖/UI/插圖大幅勝出。比 JPEG 小 66–71%;無損比 PNG 小 30–50%表現好(無損比 PNG 小 20–30%),但空間感不如 AVIF最弱的一環:預設 effort 下比 AVIF 大 30–90%,最大 effort 也大 20–70%
透明背景(logo、貼圖)檔案很小,但無損 alpha 效率差、邊緣可能被柔化(實測 18/255 階的偏差)無損透明比 PNG 小 30–40%無損模式最精確(像素完全一致),但 libjxl 的透明圖比 AVIF 大 31–44%;jixel 因為透明一律無損,檔案會是 AVIF 的 2–3 倍
HDR實務上最佳:支援 10/12-bit 與 gain map不支援規格最強(16–32-bit、XYB),但瀏覽器解碼器不支援 gain map,現階段 HDR 交付吃虧
既有 JPEG 封存必須重新編碼(會再一次有損)必須重新編碼獨門功能:無損重封裝可縮小 9–20%,而且能位元組完全還原成原 JPEG
無損照片最差(比 lossless WebP 大 30–120%)lossless WebP 比 lossless JPEG XL 大 9–17%無損冠軍

速度與資源:AVIF 的代價

壓縮率只是半張帳單,另一半是「你要花多少算力換」。

格式編碼(1280×800 單執行緒)解碼相對感受
JPEG6–9 ms3–4 ms基準線
WebP30–49 ms4–8 ms即時上傳也用得起
AVIF(speed 6)237–293 ms4–8 ms比 JPEG 慢 29–46 倍;高品質下單張 1200px 可能要 3–15 秒
JPEG XL(effort 7)190–230 ms12–20 ms編碼比 AVIF 快,解碼慢 1.5–2.5 倍;libjxl 預設 effort 比 AVIF 慢 1.5–2 倍但檔案更大

三個實務結論:

  1. AVIF 不要在使用者上傳的路徑上即時編。放到背景佇列或 build 階段;批次處理時用 --speed 6~8(avifenc 的數字越小越慢越好)取平衡。
  2. AVIF 的 effort 值得開高(s5 約多花 3 倍時間換 10% 檔案縮減),libjxl 的 effort 不值得開到頂(e10 只比預設好一點點,卻慢約 18 倍);jixel 的 slow 值得,extraslow 邊際效益低。
  3. 4:2:0 不要當預設。AVIF 的 4:2:0(色彩解析度減半)通常不會讓檔案明顯變小,反而更難達到高品質;沒時間逐一比較時就用 4:4:4。

場景決策表:直接照這個選

你的情境建議備註
一般內容網站、部落格主視覺AVIF 4:4:4(effort 開到你能忍受的最高) + WebP + JPEG fallback這是目前 CP 值最高的組合
電商商品圖(量大)AVIF(build 階段或背景佇列) + WebP fallback編碼成本要算進 CI 時間
截圖、UI 圖、圖表AVIF(有損就夠,不必硬用無損)若線條銳利度極重要,考慮 SVG 或無損 WebP
透明 logoSVG(若原始檔是向量)→ WebP lossless → AVIFJPEG 完全不適用
HDR 照片要上網AVIF(含 gain map)目前唯一實務可行的瀏覽器端 HDR 交付
大量既有 JPEG 要瘦身、且必須能還原JPEG XL 無損重封裝這是 JPEG XL 真正不可取代的用途
攝影作品封存JPEG XL(高位元、無損、可還原)存 JXL,交付時再轉
動畫用 <video muted autoplay loop>動畫 AVIF 實測 725 kB、動畫 JXL 2.17 MB,兩者都不如影片格式
email 內嵌圖JPEG/PNGemail 客戶端對新格式支援極差

實作一:<picture> fallback 的正確寫法

<picture>
  <source type="image/avif" srcset="photo-800.avif 800w, photo-1600.avif 1600w" sizes="(max-width: 800px) 100vw, 800px">
  <source type="image/webp" srcset="photo-800.webp 800w, photo-1600.webp 1600w" sizes="(max-width: 800px) 100vw, 800px">
  <img src="photo-800.jpg"
       width="800" height="600"
       loading="lazy" decoding="async"
       alt="說明文字">
</picture>

三個一定要記住的點:

  • width 與 height 絕對不能省。瀏覽器需要它們預留版面空間,否則圖片載入時版面會跳動(CLS)。
  • 瀏覽器是用 type 屬性判斷支援度,不是先下載再檢查——所以順序要「新到舊」,把相容性最好的放進 <img>。
  • 不要只放 JPEG XL。Edge、舊版 Chrome/Firefox、email、聊天軟體預覽都還不支援;<img src="x.jxl"> 在那些環境就是破圖。若要用 JXL,就把它放在 <picture> 的第一個 <source>:
<picture>
  <source type="image/jxl" srcset="photo.jxl">
  <source type="image/avif" srcset="photo.avif">
  <source type="image/webp" srcset="photo.webp">
  <img src="photo.jpg" width="1600" height="900" alt="說明文字">
</picture>

實作二:轉檔指令(終端機)

以下指令為各工具官方 CLI 的常見用法;參數在不同版本間會調整,執行前先跑一次 --help 最保險。

# 1) AVIF:速度 6、品質約 60、alpha 無損
avifenc --speed 6 --qcolor 60 --qalpha 100 input.png output.avif
# 批次轉整個資料夾(GNU parallel 範例)
ls *.png | parallel avifenc --speed 6 --qcolor 60 {} {.}.avif

# 2) WebP:品質 80、最高壓縮努力
cwebp -q 80 -m 6 -mt input.jpg -o output.webp

# 3) JPEG XL:有損,distance 1.0(近似視覺無損)、effort 7
cjxl input.png output.jxl -d 1.0 -e 7

# 4) JPEG XL 無損重封裝既有 JPEG(縮小、可還原)
cjxl photo.jpg photo.jxl -d 0 --lossless_jpeg=1
djxl photo.jxl restored.jpg          # 還原回原 JPEG

# 5) 若想保留原檔大小對照
for f in *.jpg; do
  cwebp -q 80 -m 6 "$f" -o "${f%.jpg}.webp"
  avifenc --speed 6 --qcolor 60 "$f" "${f%.jpg}.avif"
  cjxl "$f" "${f%.jpg}.jxl" -d 1.0 -e 7
  ls -l "$f" "${f%.jpg}.webp" "${f%.jpg}.avif" "${f%.jpg}.jxl" | awk '{print $5, $9}'
done

Node 專案裡最省事的是 sharp(底層用 libvips,AVIF/WebP 都有):

import sharp from 'sharp';

await sharp('input.jpg')
  .resize({ width: 1600, withoutEnlargement: true })
  .avif({ quality: 60, effort: 4 })   // effort 0-9,數字越大越慢越小
  .toFile('output.avif');

await sharp('input.jpg')
  .resize({ width: 1600 })
  .webp({ quality: 80, effort: 6 })
  .toFile('output.webp');

實作三:Hugo 站台(avif 內建可輸出,jxl 不行)

Hugo 的內建圖片處理可以輸出 avif、bmp、gif、jpeg、png、tiff、webp——清單裡沒有 JPEG XL,這是選型時要先知道的硬限制(本站在 Hugo 上,所以 JXL 若要上線得多一條外部管線)。

先在 hugo.toml 調參數(以下為可用的設定鍵,數值依官方預設):

[imaging]
  anchor = 'smart'
  bgColor = 'ffffff'
  [imaging.avif]
    compression = 'lossy'   # 或 lossless
    encoderSpeed = 10       # 數字越大越快、檔案越大
    hint = 'photo'          # drawing / icon / photo / picture / text
    quality = 60
  [imaging.webp]
    compression = 'lossy'
    hint = 'photo'
    method = 2
    quality = 75

樣板裡用 Process 一次產出兩種格式並組出 <picture>:

{{ $src := .Resources.Get "hero.jpg" }}
{{ with $src }}
  {{ $avif := .Process "resize 1600x q60 avif" }}
  {{ $webp := .Process "resize 1600x q75 webp" }}
  <picture>
    <source srcset="{{ $avif.RelPermalink }}" type="image/avif">
    <source srcset="{{ $webp.RelPermalink }}" type="image/webp">
    <img src="{{ .RelPermalink }}" width="{{ .Width }}" height="{{ .Height }}" alt="">
  </picture>
{{ end }}

幾個 Hugo 特有的注意事項:

  • 處理後的結果會快取在 resources/_gen,每次改 Process 參數都會重編;換參數或刪圖後可以跑 hugo --gc 清掉孤兒檔(本站的 build 指令本來就帶 --gc)。
  • 部署到 CI(Netlify/GitHub Actions)時,要把 Hugo 的 image cache 一起快取,否則每次 build 都重新編碼一次 AVIF,build 時間會暴增。
  • 大圖先縮再處理:一張 4032×2268 的原圖,處理時吃的記憶體與時間遠高於 1920×1080。

常見迷思與陷阱

迷思/陷阱實際情況
「JPEG XL 沒有任何瀏覽器支援」舊資訊。Chrome 155(2026-10-06)與 Firefox 158(2026-10-13)已預設啟用;Safari 17+ 早就支援靜態圖
「Google 打壓 JPEG XL 所以它不會成功」確實在 2023 年 2 月(Chrome 110)移除過實驗支援,理由是生態不足;但 2026 年是由 Google Research 開發的 Rust 解碼器 jxl-rs 回到 Chrome 與 Firefox,Mozilla 也在 2024 年公開下戰帖要 Rust 版才願出貨。把這段歷史說成單方面打壓,忽略了「記憶體安全」這個真正卡點(libjxl 是逾 10 萬行的多執行緒 C++)
「AVIF 一定比 JPEG 小」絕大多數情況是,但不是保證。WebP 甚至在細節多的照片上偶爾輸給 JPEG。格式的帳要拿你自己的圖來算
「用最高品質參數準沒錯」對 libjxl 而言是浪費:頂端 effort 幾乎沒有檔案縮減,卻慢約 18 倍
「動畫 AVIF/JXL 可以取代 GIF」能,但不該。動畫 AVIF 播放體驗在 Chrome/Safari 被實測評為很差,而且 <video muted autoplay> 本來就在那裡
「轉成 AVIF 就不用管 fallback」仍有約 3% 流量落在不支援的瀏覽器(舊機、企業鎖版瀏覽器、內建 webview、email 預覽)
「AI 給的比較表可以直接抄」Jake Archibald 在文末明講:「這個領域有很多錯誤資訊,而你的 AI 很樂意把那些錯誤資訊交給你。」請用官方 caniuse/MDN 與自己的圖實測

本文沒有做的事(查證保留)

  • 沒有用本站自己的圖片重跑 benchmark。文中的壓縮率與速度數字來自 Jake Archibald 的公開測試腳本與測試圖集(M4 Pro、單執行緒計時)以及 Cloudinary/Netflix 等來源的公開數據;不同圖集、不同硬體、不同 encoder 版本都會得到不同百分比。
  • 沒有實測 Edge/Samsung Internet/email 客戶端的 JPEG XL 行為,其「尚未支援」是依 caniuse 與瀏覽器廠商說明判定。
  • caniuse 覆蓋率是 2026-10-16 當日快照,JPEG XL 的數字(約 17%)會隨使用者更新快速變動。
  • 指令範例以官方 CLI 的常見用法撰寫,未逐一在本機對所有版本驗證;請以 avifenc --help、cwebp -longhelp、cjxl --help 的當下輸出為準。
  • 沒有評估各家 CDN/平台的自動圖片轉換服務(如 Cloudflare Images、WordPress、Shopify 的支援狀況因方案而異),這部分建議以平台當下文件為準。

站內延伸閱讀

資料來源與查證方式

  • Jake Archibald,〈JPEG XL vs AVIF for web use-cases〉,2026-10-15(一手 benchmark:jakearchibald.com/2026/jpeg-xl-vs-avif,測試腳本 github.com/jakearchibald/image-codec-bench)
  • Chrome for Developers 公告〈Shipping JPEG XL in Chrome〉與 Chrome 155 版本說明(2026-10-06);Mozilla Hacks〈Intent to Ship: JPEG XL〉(2026-08-24)與 Firefox 158 發布說明(2026-10-13)
  • MDN〈Image file type and format guide〉(格式能力與相容性)、web.dev〈Image formats: AVIF〉
  • caniuse.com 功能資料(avif/webp/jpegxl)於 2026-10-16 以官方 GitHub 資料檔抓取:AVIF 完整支援 96.33%、WebP 97.08%、JPEG XL 約 17%
  • Hugo 官方文件:〈Image processing〉、〈Process〉、〈Configure imaging〉(2026-10-16 查證;可輸出格式清單為 avif/bmp/gif/jpeg/png/tiff/webp)
  • 比較與壓縮率數字另以 NotebookLM deep research(44 個來源)交叉比對 Cloudinary、Netflix、獨立站點實測數據,並標註來源差異

📬 訂閱 most.tw 電子報

每週精選 AI 工具教學與技術乾貨,直接送到你的信箱。免費、隨時可退訂。

訂閱即表示同意收到 most.tw 電子報,隨時可一鍵退訂。

💬 有問題想討論?加 LINE 聯絡我

歡迎透過 LINE 官方帳號直接留言,我會盡快回覆你的問題。

加入 LINE 好友