# EXIF Viewer

> 線上 EXIF 檢視器：把照片裡每一個中繼資料標籤攤開來看，相機、鏡頭、曝光、修圖軟體到 GPS 座標，座標還能一鍵複製。全程在瀏覽器裡解析，不上傳、不嵌地圖。

- URL: https://bytescope.dev/zh-Hant/exif-viewer/
- Locale: zh-Hant · Also: [en](https://bytescope.dev/en/exif-viewer.md) · [ja](https://bytescope.dev/ja/exif-viewer.md)
- Runs: 檔案不會離開你的瀏覽器 — 全部在本機處理。
- Requires: Any modern browser (Chrome, Edge, Firefox, Safari), desktop and mobile.
- Updated: 2026-09-08

## What it does

相機和手機吐出來的每一張 JPEG，裡面都塞著一塊 EXIF 中繼資料，而大部分看圖軟體只肯給你其中四五個欄位。這頁全部攤開。第一組是器材：機身的 `Make` 和 `Model`、鏡頭的 `LensModel`，以及夾在中間的韌體或 App 版本。別人傳給你一張照片時，你真正想問的那幾件事——我兩台機身是哪一台拍的、這張是 35mm 定焦還是 kit 鏡、賣家說的那台相機真的拍得出這張嗎——通常在這裡就有答案了。

第二組是曝光三角，也是拍照的人會打開標籤檢視器的主要理由：`ExposureTime`、`FNumber`、`ISO` 並排放，旁邊接著 `FocalLength` 和 `DateTimeOriginal`。把 `1/200 s`、`f/2.8`、`ISO 1600` 一起讀，就知道這張為什麼一堆雜訊、連拍裡為什麼偏偏那一張沒實。而且原始拍攝時間是唯一一個經得起複製、重新存檔、以及一路被改壞的檔案日期還活下來的日期。

第三組安靜但很有戲。`Software` 和處理相關欄位記的是「最後一次寫這個檔案的是誰」，所以照片自己會招出它進過 Lightroom、開過手機的美肌模式、來自某個截圖工具、或被 AI 放大過——在任何人主動提起之前。修圖軟體通常還會留下自己嵌的縮圖，而過期的縮圖有時候會露出裁切前的畫面。這些嚴格說不算祕密，只是你根本不知道自己一併送出去的資訊；發佈前看一眼，很值得。

最後一組是位置，而這裡是刻意這樣設計的。只要 GPS IFD 存在，你會拿到十進位度數的經緯度、一鍵複製、南北東西的參照，相機有記錄的話還有海拔——但沒有內嵌地圖。塞一個第三方地圖框進來，等於頁面一渲染就把你照片的座標送去別人的圖磚伺服器；在一頁講位置隱私的頁面上這樣做，是自己打自己。想看地點的話，把複製到的座標貼進你本來就信得過的地圖：這樣那個請求是你自己發的、你知情，而照片本身從頭到尾沒離開瀏覽器。

## Limits

Does not edit or remove metadata (use remove-exif) and does not read metadata from PDFs or videos.

## Machine output

Copy JSON copies an envelope `{ tool, url, generatedAt, userAgentHint, result }`. `tool` is `"exif-viewer"`; `result` is the on-screen EXIF snapshot below. This JSON includes precise GPS coordinates (signed decimal degrees and altitude in metres) when the photo's GPS IFD decoded them — that is an exact location. The file name, thumbnail bytes, and any base64 blob are omitted.

- `mime` (string | null) — Sniffed image MIME. `null` = sniff did not name a type.
- `byteLength` (number | null) — File size in bytes. `null` = size was not supplied.
- `make` (string | null) — Camera make. `null` = tag absent or EXIF not parsed.
- `model` (string | null) — Camera model. `null` = tag absent or EXIF not parsed.
- `lensModel` (string | null) — Lens model. `null` = tag absent or EXIF not parsed.
- `software` (string | null) — Software tag. `null` = tag absent or EXIF not parsed.
- `orientation` (number | null) — EXIF orientation 1–8. `null` = tag absent or EXIF not parsed.
- `dateTimeOriginal` (string | null) — Raw `"YYYY:MM:DD HH:MM:SS"`. `null` = tag absent or EXIF not parsed.
- `exposureTime` (string | null) — Formatted exposure (e.g. `"1/200 s"`). `null` = tag absent or EXIF not parsed.
- `fNumber` (string | null) — Formatted aperture (e.g. `"f/2.8"`). `null` = tag absent or EXIF not parsed.
- `iso` (number | null) — ISO speed. `null` = tag absent or EXIF not parsed.
- `focalLength` (string | null) — Formatted focal length (e.g. `"26 mm"`). `null` = tag absent or EXIF not parsed.
- `hasIccProfile` (boolean | null) — `null` = no EXIF block parsed; `false` = parsed, no ICC; `true` = ICC present.
- `gps` (object | null) — `null` = no GPS IFD (no GPS tags). When present: `latitude`, `longitude` (signed decimal degrees), `altitude` (metres). Each is `null` when that GPS tag was present but did not decode.
- `tags` (array of objects) — Raw tags in on-screen order, capped at 200. Each item: `ifd` (`"IFD0"` | `"Exif"` | `"GPS"`), `id` (number), `name`, `value`.
- `truncated` (boolean) — `true` when more tags exist than were copied.
- `totalCount` (number) — Real tag count, not the copied length.

## FAQ

### 為什麼我的照片完全沒有 EXIF？

因為早就被清掉了。通訊軟體和社群平台會把你上傳的圖重新壓一次，中繼資料在那個過程順手就掉了，所以經過 WhatsApp、Messenger、Instagram 到你手上的照片，通常本來就是乾淨的。截圖從一開始就沒有 EXIF——那些像素是系統畫的，沒有相機、鏡頭、曝光可以描述——繪圖和設計工具匯出的圖大多也一樣。掃描是第三種情況：掃描器可能只寫了一個時間和它自己的 `Software` 字串。標籤表空空的，幾乎都是在講這個檔案的來歷，不是解析失敗。

### 軟體與處理欄位會洩漏什麼？

比大家想的多。`Software` 記的是最後存檔的那個東西，所以照片會自己說出它經過 Lightroom、用了手機的人像或美肌模式、來自某個截圖工具、或被放大器處理過。相關欄位還可能記下場景模式啟動過、HDR 合了好幾張、或拍完之後被旋轉、縮放。跟相機那幾個欄位擺在一起看，就能回答任何單一標籤都答不了的問題：這個檔案離開感光元件之後有沒有進過修圖軟體，以及傳給你的人講的版本，跟檔案講的版本合不合。

### 讀 EXIF 需要把照片上傳嗎？

不用。檔案是用 File API 開的，解析由你自己這個分頁裡的 JavaScript 完成：走過 JPEG 的 marker segment、找到 EXIF 區塊、把標籤解出來，全部在你的機器上。這頁背後沒有伺服器可以送，載入之後把網路關掉也照樣能用。這件事在這頁比在一般轉檔工具上更要緊，因為你最想看的那幾個標籤——GPS 座標、拍攝時間、相機序號——剛好就是你最不想先交給陌生伺服器的那幾個。

### 位置服務已經關了，為什麼照片還有 GPS？

位置權限是逐 App 給的，不是一個總開關，所以完全可能是別的 App 什麼都拿不到，相機 App 還在乖乖寫標籤。手機相機自己通常還藏著一個「記錄位置資訊」的開關，在你拒絕所有其他 App 的位置權限之後照樣活著。另外兩個常被忽略的來源：EXIF 在重新存檔或分享時會被複製過去，所以你上週編輯過的照片還帶著它出生時的座標；而別人給你的照片，帶的是別人的座標。唯一可靠的答案是直接檢查檔案本身，這頁就是為了這件事存在的。

### 支援哪些檔案格式？

實務上講 EXIF 就是在講 JPEG 和帶 TIFF 標頭的檔案，這個檢視器讀的也是那些：相機或手機直出的 `.jpg` / `.jpeg`，加上 TIFF 容器類的檔案，包含很多相機 RAW 格式。PNG 和 WebP 雖然也能在自己的容器裡放中繼資料，但實際上通常放得極少，截圖更是完全沒有，所以看到表很短或是空的都算正常。iPhone 的 HEIC 確實帶 EXIF，只是包在瀏覽器沒有解碼器就打不開的 HEIF 容器裡——先轉成 JPEG，標籤會跟著一起過來。

## Related tools

- [Remove EXIF](https://bytescope.dev/zh-Hant/remove-exif.md) — 無損拿掉這張照片的中繼資料，像素不會重新編碼。
- [Binary Diff](https://bytescope.dev/zh-Hant/binary-diff.md) — 兩個檔可以逐位元組對，例如清掉之前和之後。
