跳到主要內容
楓葉工具箱 ToolMaple

圖片最後更新:

圖片轉 Base64

把圖片轉成 Base64 字串,直接貼進 HTML 或 CSS 內聯用。

拖曳多張圖片或選擇檔案

建議一次 ≤ 50 張、單檔 ≤ 5 MB(Base64 不適合大圖)

尚未選擇圖片

什麼是 Data URL?

Data URL(資料網址)是 1998 年 IETF RFC 2397 定義的格式,把整個檔案內容直接寫進「網址字串」,不必透過獨立 HTTP 請求載入。結構:

data:[mediatype][;base64],<data>

圖片例子:data:image/png;base64,iVBORw0KGgo...。HTML 的 <img src>、CSS 的 background-image: url()、Markdown 的 ![](...) 都能直接放這串字,瀏覽器看到 data: 開頭就會解碼成圖片,不會額外發 request 抓檔。

自己動手做這件事的人常卡在兩個地方。第一,命令列的 base64 只吐出後半段那串字,前面的 data:image/png;base64, 得自己補,型別寫錯(把 JPG 標成 png)某些瀏覽器會直接不顯示。 第二,把輸出貼進編輯器時多出換行,Data URL 裡不能有換行,圖就變成破圖。 本頁產生的是已經接好前綴、單行、可以直接貼的字串。

何時用 Data URL、何時用獨立檔案?

Base64 編碼後大小會增加約 33%,而且嵌進 HTML / CSS 後會跟著文件一起重新下載,無法被瀏覽器獨立快取。

  • 適合 Data URL:< 2 KB 的小圖示、單檔 Markdown 文件、離線網頁、mock 資料
  • 適合獨立檔案:> 10 KB 的圖、會在多頁面共用的資源(共用後可被快取)、會頻繁更新的圖
  • 實務分界:以前的 webpack 預設 8 KB 自動轉 Data URL,現代框架(Next.js / Vite)多採類似閾值。8 KB 以下嵌進去、以上保留檔案

常見使用情境:

  • 單檔分發的 Markdown 報告:把圖塞進 .md,整份文件一個檔案,不怕外部連結失效或路徑跑掉
  • 小 icon / Logo 內聯:把 < 2 KB 的 SVG / PNG 寫進 CSS,減少 HTTP request 數
  • Mock / 測試資料:把圖塞進 JSON 做整合測試,不用準備真實檔案路徑
  • 離線網頁:HTML 單檔含所有資源,無網路也能完整顯示

為什麼編出來比原圖大?

Base64 把每 3 個位元組編成 4 個 ASCII 字元,體積必然變大約 33%。再加上 Data URL 前綴(data:image/png;base64, 約 22 字元),極小的圖會看到「比原始大很多」的錯覺,但對絕對大小(KB 級)影響可忽略。

轉一張圖,挑你要的那種寫法

  1. 把圖片拖進虛線框,或點「選擇檔案」。單檔上限 5 MB,因為 Base64 本來就不適合大圖。
  2. 清單那一行會寫原始大小與 Base64 之後的長度,兩個數字差多少一眼就看得到。
  3. 點那一行,下方預覽就會切到這張圖。 五個分頁分別是 Data URL、Raw Base64、HTML、CSS、Markdown。
  4. 要直接貼進 <img src> 或 url() 就用 Data URL;要自己接前綴、或送進後端解碼,用 Raw Base64。
  5. HTML、CSS、Markdown 三個分頁是幫你接好語法的整段片段,複製就能貼。
  6. 按每個分頁右邊的複製鈕,不要反白拖曳。字串很長,手動選很容易漏掉尾巴, 少一個字元圖就出不來。

一次轉一整批、順便拿到一份對照用的 HTML

  1. 一次拖進多張,建議 50 張以內。超過 5 MB 或不是圖片的檔案會被略過,並跳出提示說略過幾個、原因是什麼。
  2. 上方顯示「處理中(幾張 / 共幾張)」。全程在你的瀏覽器裡跑, 速度只看這台機器,跟網速無關。
  3. 點清單裡任何一張切換下方預覽;不需要的用那一行右邊的 ✕ 移掉,或按「清空」整批重來。
  4. 只要某一張的純文字檔,用那一行的下載鈕存成 .base64.txt。
  5. 按「全部下載 ZIP」把整批打包。每張一個 .base64.txt,同名的自動加編號, 另外附一個 output.html。
  6. 用瀏覽器打開那份 output.html,所有圖會一次顯示出來、下面標著原始檔名。 這是最快的驗收方式:圖出得來,代表那串字是完整的。

HTML / CSS / Markdown 怎麼用?

本工具產生的 Data URL 三種貼法:

  • HTML:<img src="data:..." />
  • CSS:background-image: url("data:...");
  • Markdown:![alt](data:...)

三個分頁複製出來的片段都是可以直接貼的完整語法,但 alt 是空的,貼進去之後請自己補上這張圖在說什麼, 讀螢幕的人與圖載不出來的時候都靠它。

  • 貼進編輯器之後:確認它是一整行,中間不能被自動換行切開。
  • 字串太長不好帶:用下載鈕存成 .base64.txt,或整批下載 ZIP,再用編輯器打開來貼。
  • 要反過來把字串還原成圖片:工具上方切到「Base64 → 圖片」,貼上就能預覽與下載。字串解出來是文字而不是圖片的話,改用Base64 編碼解碼。

哪些地方吃 Data URL、哪些不吃

  • 瀏覽器:各家對 Data URL 的長度上限不同,現在都在數百 MB 以上,數字見下方常見問題。
  • 有設 CSP 的網站:內容安全政策的 img-src 沒有列出 data: 時,內嵌圖會被擋下, 瀏覽器主控台會直接寫是哪一條規則擋的。自架的站要嵌就要記得放行。
  • Email:Gmail(網頁版與手機 App)與 Windows 版 Outlook 2016 以前都不顯示 data: 內嵌圖片,Apple Mail 與 Outlook.com 會顯示。 要穩定顯示,傳統做法是把圖當附件、用 CID 參照,或改用外部圖片連結。
  • 別人家的 Markdown:不少平台的 Markdown 會基於安全考量過濾掉 data: 開頭的圖片來源,貼上去就是空白。 自己保存、自己分發的 .md 與離線 HTML 沒有這個問題, 要貼到某個平台之前先用一張小圖測一次。
  • 版本控制:把大張 Data URL 寫進原始碼,diff 會變成幾萬字元的一行, code review 幾乎沒辦法看。8 KB 以上的圖留成獨立檔案,對協作比較友善。

注意事項與圖片去向

  • Base64 是編碼、不是加密:沒有金鑰、誰都能還原。 私密的截圖、證件、合約不要用內嵌的方式放進公開文件。
  • 會拖慢首屏:內嵌的圖 跟 HTML 或 CSS 綁在一起下載,沒辦法延後載入、也無法獨立快取, 大圖內嵌等於把首屏的體積直接加上去。
  • 不會壓縮、也不會改尺寸:本頁只是換一種表示法,原圖多大就編多大,要縮請先壓縮再來轉。
  • 記得補 alt:複製出來的 HTML 與 Markdown 片段 alt 都是空的,直接上線等於少了一張圖的替代文字。

哪裡都沒去。FileReader 把檔案讀進你分頁的記憶體,轉出 Base64 字串就結束了,關掉分頁記憶體就釋放。 過程零網路請求,這也是為什麼轉大圖時速度只取決於你的電腦,跟網速無關。

常見問題

為什麼 Gmail 看不到我嵌的圖?

因為 Gmail 不顯示 data: 內嵌圖片,網頁版與手機 App 都一樣,跟圖的大小無關。要在信裡放圖,改用外部圖片連結,或把圖當附件、用 CID 參照。另外,Gmail 會把超過約 102 KB 的信截斷、收進「顯示完整郵件」連結後面,塞了 Base64 的信很容易超過。

Data URL 有長度上限嗎?

規範本身沒有上限,現在瀏覽器的上限也很高:依 MDN,Chromium 與 Firefox 是 512 MB、Safari 是 2048 MB。舊文章裡的小數字是早期版本的,例如 Firefox 97 以前只有 256 KB。本工具把單檔擋在 5 MB,是因為 Base64 不適合大圖,不是瀏覽器裝不下。實務上圖 > 100 KB 就該考慮獨立檔案了。

SVG 也要轉 Base64 嗎?

通常不用。SVG 本身就是文字,可以直接 URL-encode 後嵌進 CSS(data:image/svg+xml,...),體積比 Base64 小。Base64 比較適合 PNG / JPG 這種二進位格式。

會壓縮圖片嗎?

不會。本工具只做格式轉換(檔案 → Data URL),品質不變,檔案也不會變小。需要先壓縮再轉,請用圖片壓縮工具先處理。 開啟圖片壓縮工具

可以一次轉很多張嗎?

可以。一次拖進多張,建議 50 張以內、單檔 5 MB 以內。點清單裡任一張,下方的預覽會切成那一張的 Data URL、Raw Base64、HTML、CSS、Markdown 五種寫法。按「全部下載 ZIP」會把每一張存成一個 .base64.txt,同名的自動加編號,另外附一個 output.html,用瀏覽器打開就能一次看到全部的圖,確認每一串都貼得出東西。

可以把 Base64 轉回圖片嗎?

可以。工具上方切到「Base64 → 圖片」,貼上 Data URL、只有 Base64 本體的字串,或整段 <img> 標籤、CSS 的 url() 都行,就會出現預覽、格式、檔案大小與尺寸,按下載存成圖檔。格式是看解出來的開頭位元組判斷的,Data URL 上寫的 MIME 跟內容對不上時會提醒,副檔名照實際格式取。認得 PNG、JPEG、GIF、WebP、SVG、AVIF、BMP、ICO。

Base64 算是加密嗎?貼出去安全嗎?

不算。Base64 是編碼不是加密,沒有金鑰、誰都能還原。Data URL 出現在 HTML、CSS 或 Markdown 裡,就等於把整張圖公開放在那份文件裡,任何拿得到原始碼的人都能把圖還原出來。私密的截圖、證件、合約不要用這個方式內嵌。轉換本身是在你的瀏覽器裡做的,沒有上傳,但轉完之後你把字串貼去哪裡,就是那份文件的事了。

資料來源

相關工具

隱私:圖片由瀏覽器的 FileReader 在本機讀取與編碼,不會上傳、不會儲存,本站沒有任何收圖的後端。 關掉分頁,檔案與產生的字串就一起從記憶體消失;字串貼到哪裡之後就是那份文件的事。