什麼是 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 級)影響可忽略。
轉一張圖,挑你要的那種寫法
- 把圖片拖進虛線框,或點「選擇檔案」。單檔上限 5 MB,因為 Base64 本來就不適合大圖。
- 清單那一行會寫原始大小與 Base64 之後的長度,兩個數字差多少一眼就看得到。
- 點那一行,下方預覽就會切到這張圖。 五個分頁分別是 Data URL、Raw Base64、HTML、CSS、Markdown。
- 要直接貼進
<img src>或url()就用 Data URL;要自己接前綴、或送進後端解碼,用 Raw Base64。 - HTML、CSS、Markdown 三個分頁是幫你接好語法的整段片段,複製就能貼。
- 按每個分頁右邊的複製鈕,不要反白拖曳。字串很長,手動選很容易漏掉尾巴, 少一個字元圖就出不來。
一次轉一整批、順便拿到一份對照用的 HTML
- 一次拖進多張,建議 50 張以內。超過 5 MB 或不是圖片的檔案會被略過,並跳出提示說略過幾個、原因是什麼。
- 上方顯示「處理中(幾張 / 共幾張)」。全程在你的瀏覽器裡跑, 速度只看這台機器,跟網速無關。
- 點清單裡任何一張切換下方預覽;不需要的用那一行右邊的 ✕ 移掉,或按「清空」整批重來。
- 只要某一張的純文字檔,用那一行的下載鈕存成
.base64.txt。 - 按「全部下載 ZIP」把整批打包。每張一個
.base64.txt,同名的自動加編號, 另外附一個output.html。 - 用瀏覽器打開那份
output.html,所有圖會一次顯示出來、下面標著原始檔名。 這是最快的驗收方式:圖出得來,代表那串字是完整的。
HTML / CSS / Markdown 怎麼用?
本工具產生的 Data URL 三種貼法:
- HTML:
<img src="data:..." /> - CSS:
background-image: url("data:..."); - Markdown:

三個分頁複製出來的片段都是可以直接貼的完整語法,但 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 裡,就等於把整張圖公開放在那份文件裡,任何拿得到原始碼的人都能把圖還原出來。私密的截圖、證件、合約不要用這個方式內嵌。轉換本身是在你的瀏覽器裡做的,沒有上傳,但轉完之後你把字串貼去哪裡,就是那份文件的事了。
資料來源
- IETF,RFC 2397, The "data" URL scheme(
data:[<mediatype>][;base64],<data>這個結構的定義,以及規範本身沒有訂長度上限這件事)。 - IETF,RFC 4648, The Base16, Base32, and Base64 Data Encodings(每 3 個位元組編成 4 個字元,這就是體積多出約三分之一的來源)。
- MDN,FileReader.readAsDataURL()(本頁就是用這個 API 把檔案讀成 Data URL,全程不經過網路)。
- MDN,data: URLs(各瀏覽器的長度上限:Chromium 與 Firefox 512 MB、Safari 2048 MB,2026-10-07 查核)。
- Can I email,Base 64 image format(各郵件用戶端顯不顯示
data:內嵌圖片的實測表,Gmail 各版本都不顯示)。
相關工具
- 圖片壓縮
上傳 JPG / PNG / WebP 圖片,調整品質與最大寬度,即時瀏覽器內壓縮並下載。
- 圖片格式轉換
JPG ↔ PNG ↔ WebP 三大圖片格式互轉,可選輸出品質。
- Base64 編碼解碼
文字 ↔ Base64 雙向編碼解碼,完整支援 UTF-8 中文與特殊字元。
- QR Code 產生器
把文字、網址、Wi-Fi 連線資訊(SSID 帳密)轉成 QR Code,支援下載 SVG 向量…
- URL 編碼解碼
URL 編碼解碼:中文與特殊字元的百分比編碼雙向轉換,支援 encodeURI 與 encode…
- CSS 漸層產生器
CSS 漸層產生器:調出 linear、radial、conic 三種漸層,從預設庫挑一個再改色…
隱私:圖片由瀏覽器的 FileReader 在本機讀取與編碼,不會上傳、不會儲存,本站沒有任何收圖的後端。 關掉分頁,檔案與產生的字串就一起從記憶體消失;字串貼到哪裡之後就是那份文件的事。
