
A colleague forwards a boarding pass as a PNG. The code is sitting right there on your screen, three inches wide, and your phone is charging in another room. Your Mac can read that code. The feature just has no button, no menu item called "scan," and no obvious name, which is why most people assume macOS can't do it at all.
Here are the four methods that work, roughly in the order I would try them.
Your Mac already reads codes, it just doesn't announce it
Since macOS Monterey, the system inspects images you open and picks out things it recognizes: phone numbers, mailing addresses, tracking numbers, and QR codes. Apple's umbrella name for this is Live Text. When the system finds a code inside an image you are viewing, it draws a small indicator over the code. Click that indicator and macOS offers to act on what the code contains, usually by opening the link in your default browser.
Two conditions apply. The code has to exist as an image on your screen, because the built-in FaceTime camera has no scanning mode and pointing a printed code at your laptop lid does nothing. And your Mac needs a version of macOS new enough to include the detection. Running something older? Skip to the browser method further down, which works on any Mac made in the last fifteen years.
Method 1: open the image in Preview or Quick Look
This is the fastest path when the code is already a file, or when it is on a web page you can screenshot.
- If the code is on screen rather than in a file, press Shift-Command-4 and drag a box around it. The capture lands on your desktop.
- Double-click the file to open it in Preview. Selecting it in Finder and tapping the space bar for a Quick Look preview also works.
- Move the pointer over the code and wait a beat. A small indicator appears at one corner of the code once the system has recognized it.
- Click the indicator. macOS shows you what it found.
- Read the destination before you act on it. More on that at the end.
Nothing gets uploaded anywhere in this method. The decoding happens on your machine. If the indicator never shows up, zoom in with Command-plus and try again, because detection gets unreliable on codes that are small or soft-edged. Our notes on a blurry QR code cover why a screenshot of a screen photo is usually the worst-case input.
Method 2: borrow your iPhone's camera
Continuity Camera lets a nearby iPhone act as a camera for your Mac. Both devices need to be signed into the same Apple Account with Bluetooth and Wi-Fi turned on, and the phone has to be close by and locked. Once that is set up, the iPhone appears in the camera list of any app that asks for camera access, including a scanner page running in your browser.
Several Apple apps also expose an import option in their File menu that wakes the iPhone camera and drops the resulting photo straight into the document. That is handy for capturing a printed code on paper without emailing yourself a picture.
Honest caveat: if the phone is already in your hand, just point its own Camera app at the code. That path is shorter and the walkthrough for it lives in our guide on how to scan a QR code. Continuity Camera earns its keep when the code is printed on something bulky, like a poster or a machine panel, and you want the result on the Mac you are working on.
Method 3: right-click the code in Chrome or Edge
When a code appears on a web page as an image, Chromium browsers can hand it to Google Lens. Control-click or right-click the image and choose the Lens search option in the context menu. The exact wording has shifted between browser releases, so look for the entry that mentions Lens or a visual search rather than a specific phrase. Lens recognizes QR codes and returns the link it found, which you can then inspect.
Safari has no equivalent. On Safari, screenshot the code and fall back to method one.
One thing to weigh: this method sends the image to Google's servers. For a code carrying a public marketing link that hardly matters. For a code containing a Wi-Fi password, a personal contact card, or anything you would not paste into a search box, use a decoder that works locally instead.
Method 4: upload the image to a browser scanner
The method with the fewest requirements. Open a QR code scanner in any browser, drop the image file onto the page, and read the decoded text. This works on an ancient Mac running an OS that never heard of Live Text, on a locked-down work machine where you cannot install anything, and on file types that Preview handles awkwardly.
Most browser scanners accept a drag-and-drop, a file picker, and a paste from the clipboard, so a fresh Shift-Command-4 capture can go straight in without ever being saved. Our page on how to scan a QR code from a picture walks through the upload flow and the image quality that gets the best hit rate.
When nothing decodes
A handful of failures account for most of them. Glare across a photographed screen wipes out the contrast the decoder needs. A crop that clips one of the three big corner squares removes a finder pattern, and without all three the code is unreadable. Light modules on a dark background trip up some readers that expect the standard polarity. Codes printed with no clear margin around them blend into surrounding artwork.
Physical damage is different, because the format has an answer for it. Depending on the error-correction level chosen when the code was made, a reader can recover from roughly 7%, 15%, 25%, or 30% of the code being unreadable. Past that ceiling, no app or operating system can reconstruct the missing data. If you are troubleshooting a code you own rather than one you received, QR code not working runs through the causes in order of likelihood.
Read the destination before you click
Every method above shows you the payload before it opens it. Use that. Look at the last part of the hostname before the first slash, since that is the domain that actually owns the page. A string that starts with a familiar brand name proves nothing about where the link ends up, and codes stuck over legitimate ones are a known trick worth knowing about, which we cover in fake QR codes.
Screenshot, open in Preview, hover, read the domain, then decide. That chain covers most situations on a Mac. The other three methods are what you reach for when it breaks.
