FIRST CH TOOLS / Other / 46 QR CODE READER
QR Code Reader
Drop in a picture of a QR code and read the text it actually holds. If it is a URL, nothing is opened: the scheme, domain and path are laid out separately so you can judge the destination first. That makes it a way to check a suspicious code on a flyer, a parking sign or a piece of post without visiting it. Decoding runs inside this page and the image is never uploaded.
For a code that is already on your screen, a screenshot pasted with ⌘/Ctrl+V is the quickest route. For a photo, crop so that the code fills most of the frame with a little white left around it.
| Field | Value |
|---|
How to Use
- Add the imageDrag & drop it, click to choose a file, or paste with ⌘/Ctrl+V. Codes that are rotated, or printed white-on-black, still read.
- Read the contentsThe stored text appears as it is. For a URL, look at the domain before anything else. A name you do not recognise, a plain http link, or odd characters in the domain are all reasons to stop right there.
- Open it only if you want toPress "Open in a new tab" once you are satisfied. Nothing happens until you do. Copy the text if you need to keep a record.
About This Tool
The image is analysed inside this page. It is drawn onto a canvas, the finder patterns are located from the light/dark boundaries, the perspective is corrected back into a grid of modules, Reed–Solomon error correction repairs the damaged parts, and the bits are turned back into text. No API and no reading server is involved, so a QR code holding an internal URL or a client's contact details never leaves your device. The decoding is done by jsQR (Apache-2.0), bundled with this site.
URLs are not opened for you. A QR code hides its contents by design, and a reader app that jumps straight to the link gives you no chance to look at it. This tool separates the two steps and breaks the URL into scheme, domain, path and query. Disguises that rely on the browser discarding everything before an "@" (https://well-known-brand.example@another-domain/ goes to the second one), internationalised domains mixing scripts, bare IP addresses, link shorteners and unencrypted http are each called out. For javascript: and data: links no open button is offered at all.
A note listed here does not mean the code is malicious — and an empty list is not proof that it is safe, since legitimate domains do get compromised. What is shown are only the facts that can be read off the URL string itself; the link is never fetched to inspect what is behind it (doing so would break the promise that nothing leaves your device). The last judgement is whether that code belongs where you found it.
Wi-Fi and contact formats are parsed too. WIFI: (network name, security, password, hidden flag), MECARD: and vCard contacts, mailto:, tel:, SMSTO: and geo: are listed field by field alongside the raw string. If a Wi-Fi password is stored in the clear, you are told before you share your screen.
Japanese text that would otherwise be garbled is handled. Byte mode carries no encoding declaration, and codes produced by Japanese devices or older apps often hold Shift_JIS. A plain decode turns those into blanks, so this tool keeps the recovered raw bytes, checks whether they are valid UTF-8, and falls back to Shift_JIS when they are not (the same test used by Encoding & Line Ending Converter). When a fallback happens, the encoding is shown in the breakdown.
To create a QR code instead, use QR Code Generator (SVG / PNG download, with Wi-Fi and email templates). To strip tracking parameters off a URL you decoded, see URL Parameter Editor; to shrink the image itself, WebP Converter.
When nothing is found
Crop closer to the code
In a photo taken from a distance, one module (a single square) can be a couple of pixels wide, and the grid cannot be recovered. Crop until only a little white remains around the code. Screenshots, which usually have plenty of resolution, read almost as they are.
Glare, shadows and creases
Glossy printing reflects the light and blows out whole modules. Retaking the photo at a different angle is the reliable fix. How much damage a code survives depends on the error correction level it was made with, which the reading side cannot change.
Include the quiet zone
Readers use the white margin around a code to find its edges. Codes squeezed by a layout, or with text printed right against them, are harder to read. Frame the shot so that the white border is included.
More than one code in the picture
When an image holds several QR codes, only the first one found is read. Crop the picture down to the code you actually want.
Barcodes (EAN / UPC) are not supported
This tool reads QR codes only. Striped retail barcodes and other 2D symbologies such as DataMatrix or PDF417 are out of scope.
Other Tools
- 01WebP Converter画像→WebP一括変換
- 02White Background RemoverWhite BG Remover
- 03WCAG Contrast CheckerContrast Checker
- 04Character CounterCharacter Counter
- 05llms.txt Generatorllms.txt Generator
- 06JSON-LD GeneratorJSON-LD Generator
- 07Markdown → PDFMD → PDF
- 08OGP Meta Tag WizardOGP Wizard
- 09Favicon GeneratorFavicon Generator
- 10TikTok PublisherTikTok Publisher
- 11Encoding & Line Ending ConverterEncoding Converter
- 12Batch Image → AVIF ConverterAVIF Converter
- 13Test Data GeneratorTest Data Generator
- 14Marp Markdown → SlidesMarp Slides
- 15Text & Code Diff CheckerDiff Checker
- 16Cron Expression ExplainerCron Explainer
- 17Base64 & Data URI EncoderBase64 & Data URI
- 18URL Parameter Editor & UTM BuilderURL Parameters
- 19HTML Entity Escape & UnescapeHTML Escape
- 20JSON ⇄ YAML ConverterJSON ⇄ YAML
- 21PX ⇄ REM / EM ConverterPX ⇄ REM / EM 単位変換
- 22Color Converter & AlphaColorコード変換&アルファ透過
- 23MD5 / SHA-256 Hash Generatorハッシュ生成
- 24JWT Decoder & Expiry CheckerJWTデコーダー&有効期限チェッカー
- 25User-Agent ParserUser-Agent解析&デバイス判定
- 26UUID & ULID GeneratorUUID (v4) & ULID 一括生成
- 27Aspect Ratio Calculatorアスペクト比計算&サイズ算出
- 28Markdown Table & CSV/TSV ConverterMarkdownテーブル整形&CSV/TSV変換
- 29SQL Query FormatterSQLクエリフォーマッター&整形
- 30QR Code GeneratorQR Code Generator
- 31Regex Tester正規表現テスター
- 32Unix Timestamp ConverterUNIXタイムスタンプ⇄日時変換
- 33New Tab Memo — Chrome Extension新規タブメモ帳 Chrome拡張
- 34Image Resizer & Cropper画像リサイズ&クロップ
- 35EXIF Viewer & RemoverEXIF情報の確認&除去
- 36robots.txt Generatorrobots.txt ジェネレーター
- 37Password Generator安全なパスワード生成
- 38Case Converter文字列ケース変換
- 39CSV/TSV ⇄ JSON ConverterCSV/TSV ⇄ JSON 相互変換
- 40PDF Merge, Split & ExtractPDF結合・分割・ページ抽出
- 41Full-width ⇄ Half-width Converter全角⇄半角変換&テキストクリーナー
- 42X (Twitter) Post CounterX(Twitter)投稿の文字ウェイト計算
- 43CSS clamp() Fluid Typography CalculatorCSS clamp() 計算機
- 44CSS Gradient GeneratorCSSグラデーションジェネレーター
- 45Image Colour Palette Extractor画像からカラーパレット抽出