# 怎麼做一個到了別人手機上還掃得出來的 QR Code

做個 QR Code 是一秒鐘的事。做一個在溼漉漉的選單上、在公交站牌上、在昏暗光線下一臂之外還掃得出來的 QR Code，得先定四件事，而且四件都在開印之前。下面講的就是每一件到底管什麼。

[開啟QR Code 與條碼產生](https://abox.tools/zh-TW/qr-barcode/): 打進去，就變成一個碼。產生過程不往外送任何東西。

最後更新 2026年8月26日

## 先說結論

開啟 [QR Code 與條碼產生](https://abox.tools/zh-TW/qr-barcode/)，把連結貼進去，等級保持 **M**，留白保持 **4**，下載那個 SVG。印出來至少兩釐米寬，用啞光材質，深色在淺色上。訂一千份之前，先拿一部不是你自己的手機，掃一下印出來的那張。

絕大多數情況到這裡就完了。這一頁剩下的部分是給例外準備的：要經得起反覆摸的碼、中間要放 logo 的碼、要貼在很小的東西上的碼，還有一個特別容易做錯、又得等上一年才發現的決定。

## QR Code 裡到底裝著什麼

一串字元，就這麼點東西。掃一個 QR Code，等於把一段文字遞給手機。之後開啟網頁也好，連上網路也好，問你要不要存聯絡人也好，都是手機認出了這段文字的樣子，然後主動提議照著辦。

所以根本沒有「Wi-Fi QR Code」這麼一個碼種。有的只是一個普通 QR Code，裡面裝著 `WIFI:T:WPA;S:My Network;P:the password;;`，而近十年出的手機都認得它。產生器把拼好的那串字元擺出來給你看，正是為了這個：碼沒做出你以為它會做的事時，值得看的只有那串字元。

這也意味著，QR Code 一旦印出來就改不了，不會往家裡打電話，也不會過期。除非有人往裡面塞了一個指向他們自己伺服器的連結，而那正是本頁最後一節要說的事。

![一枚做好的 QR Code，下面是它的資訊：碼制、版本、糾錯等級和容納的字元數。](https://abox.tools/screens/make-a-qr-code/result.webp)

碼裡有什麼，用這篇指南後面會用到的說法講了一遍。版本隨內容一起變大，下面那兩個設定之所以重要，正是因為這一點。

## 第一件事：糾錯等級

QR Code 在資料旁邊還帶著一組校驗碼字，演算法讓讀取器能把沒看清的部分重建出來。一個缺了角的碼還能掃出來，靠的就是它。校驗碼字放多少，就是等級，一共四檔：

- **L**，大約 7% 的碼可以丟。
- **M**，大約 15%。
- **Q**，大約 25%。
- **H**，大約 30%。

糾錯多不是白來的。校驗資料要擠在同一個方塊裡，所以同樣一段文字，H 級的碼比 L 級更大也更密。粗略地說，從 L 換到 H，同一串字元的模組數會翻一倍，而模組越密，鏡頭越難分辨。這裡有一筆實實在在的取捨，怎麼選，看這個碼要去哪裡。

**L** 給螢幕用：投影片裡、郵件裡、網頁上的碼。沒什麼東西會去損壞它，而每多一個模組，隔遠了就更難讀。

**M** 是預設值，也是大多數印刷品的正確答案。會被人拿在手裡翻兩下的紙、傳單、名片。

**Q 和 H** 留給會被折騰的碼：每天要擦一遍的選單、貼在車間機器上的標籤、板條箱上的標貼、曬得到太陽的櫥窗裡的碼。中間能放 logo，也得靠 H，下面還會講。

![QR Code 選項：糾錯等級選單設在中等，靜區為四個模組。](https://abox.tools/screens/make-a-qr-code/options.webp)

兩者都關乎這枚碼能否在現實世界裡活下來，一道摺痕、一個標誌、一次糟糕的印刷，而且兩者都在繪製之前就定好了。

## 第二件事：留白，它是碼的一部分

QR Code 周圍那圈白，不是內邊距，也不是設計選擇。讀取器靠它判斷這個圖形到哪裡為止。規範要求四邊各留四個模組的靜區，而一個被裁到邊的碼，是印出來的碼失靈最常見的單一原因。

這話值得說得直白些，因為裁掉它實在太順手了。碼看起來周圍白得太多，於是在版式裡被裁了一刀，或者被扔到一塊一直鋪到方塊邊上的彩色底上，或者乾脆放到一張照片上。這幾種做法，每一種都把讀取器本來要用的那條邊界拿走了。

連著留白顯得太大，那就把碼做小。別動那圈留白。

## 第三件事：印多大

經得起現實檢驗的那條經驗法則是**一比十**：碼的寬度，大約要有掃描距離的十分之一。

- 名片或者選單，30 釐米處掃：兩釐米左右。
- 兩米外掃的海報：二十釐米左右。
- 五米外掃的公交站牌、櫥窗：五十釐米左右。

兩釐米是底線，不是目標。小到 1.5 釐米以下，印得再好，普通手機也開始吃力，因為單個模組的尺寸已經逼近它鏡頭裡一個畫素了。

文字少，模組就少；模組少，同樣的印刷尺寸就能在更遠處讀出來。所以碼該指向 `example.com/x`，而不是一個末尾掛著一百個字元跟蹤引數的網址。

另外，印刷請用 **SVG**。QR Code 是由邊緣構成的，而 PNG 只有固定數量的畫素來拼這些邊緣，放大之後每條邊都發虛，而發虛恰恰是掃描器最頭疼的。SVG 是以指令表達的方塊，印在名片上和印在廣告牌上一樣銳利。

## 顏色、對比度，以及常見的兩個錯

讀取器量的是深色模組和淺色模組之間的差別，所以對比度就是全部。有兩件事經常出錯：

**深底上的淺色碼。**看起來是很搶眼，可相當多的讀取器直接不認：它們找的是淺底深圖，不會去試反相。有些會試。而你的客戶手上是哪一種，你根本不知道。

**差別不夠大。**白底中灰，或者兩個分量相近的品牌色，在螢幕上量著沒問題，一旦印上紙，油墨擴散加上手機的自動曝光，就失靈了。真要給碼上色，就讓深的那部分深得夠真。

凡是會在燈下被掃的東西，啞光勝過亮面，而這兩者又都勝過印在一張照片上。要把碼放到彩色底上，透明背景很好用，但記得看清最後墊在它後面的到底是什麼，深底上的透明碼，無非是上面那第一個錯多繞了幾道。

## 中間放一個 logo

這行得通，而且靠的正是糾錯，不是繞開糾錯。H 級下大約 30% 的模組被毀掉，碼依然讀得出來，所以一個蓋住比這少一些、又正好落在中間那塊沒有定點陣圖形的地方的 logo，屬於讀取器修得回來的損傷。

有三點得守住。用 H 級。logo 控制在面積的五分之一以內，離理論上限留出一大截，因為吃掉你餘量的不只印刷這一件事。還有，四角那三個大方塊和它們附近那些小的，絕對不能蓋：讀取器一上來就是靠它們找到這個圖形、確定方向的，再多的糾錯也重建不出來。

然後拿真手機測。加了 logo，一個碼就從「總是能用」變成了「在這麼多餘量下能用」，而想知道還剩多少餘量，只能去試。

## 最容易讓人後悔的那個決定：靜態還是「動態」

搜 QR Code 產生器，出來的結果大半想讓你註冊個帳號，因為他們賣的是*動態*碼。動態碼裡裝的不是你的連結，是一個指向產生方自己伺服器的短連結，再由那邊跳到你這裡。

它換來的東西是真的：印出來之後你還能改這個碼指向哪裡，而且每一次掃描都有計數。印量六位數的推廣活動，這錢花得值。

它的代價也是真的，而且值得事前知道，別等事後：

- **他們不做了，你的碼就廢了。**服務關停、域名到期、免費額度用完，你印出去的每一個碼都會死掉，而那時它們已經躺在一萬張選單上了。
- **每一次掃描都成了別人的資料。**那個跳轉看得到每一個掃碼的人的 IP 位址、時間和裝置。
- **那個連結是他們的，不是你的。**掃的人會看見一個陌生域名一閃而過，而這正是大家被反覆叮囑要提防的東西。

折中辦法一分錢都不用花：用*你自己域名上*的一個短網址做靜態 QR Code，跳轉由你自己來做。改目的地的能力還在，統計資料也還在，而這個碼的任何一部分，都不取決於一家你素未謀面的公司明年還在不在。

[這裡的產生器](https://abox.tools/zh-TW/qr-barcode/)只做靜態碼，也沒有帳號可註冊。你打進去什麼，碼裡就裝什麼。

## 印一千份之前

掃一下這個碼。別掃螢幕上那個，掃印出來的打樣，在它將要待的那個地方，用一部不是你做它時用的手機。這要花一分鐘，卻能一網打盡這一整頁講的所有毛病：被版式吃掉的留白、漏了 `https://` 的連結、在紙上量出來完全不同的顏色、在桌上管用、上了牆就不管用的印刷尺寸。

還要看掃完之後會發生什麼。掃出來是掃出來了，可開啟的頁面在手機上根本沒法讀，那也是個失敗的碼。

## 這些事一樣都不用上傳

QR Code 就是對一串字元做算術。沒有檔案要送，也沒有哪件事是伺服器能做而瀏覽器做不了的，所以[這裡的工具](https://abox.tools/zh-TW/qr-barcode/)全都在你自己的機器上完成，拔了網線照樣能用。

這一點比聽起來要緊，因為人們往 QR Code 裡塞的是什麼東西。Wi-Fi 那個格式最常見的用途，就是把一個網路的真實密碼打進一個網頁裡。那個頁面有沒有地方可以把它送出去，值得先弄清楚。
