Loading...

Free QR code generator

URL
Text
WiFi
vCard
Email
    Skip to content
    L2QLink2QR
    GeneratorGuidesBlogAPI
    1. Home
    2. QR code style scan test

    We Scan-Tested All 25 Link2QR Styles With 3 Decoders

    Link2QR Team · 2026-09-29

    All 6 Classic dot styles passed all 9 of our scan checks, but only 3 of the 19 Art Styles did. The worst, Stitch and Rings, passed none. We generated every style on the live generator, then tried to read each one with three independent open-source decoders under three conditions.

    This page publishes the whole result table, the method, the raw images, and what we changed in Link2QR because of it. Some of what we found contradicted advice we had written ourselves, and we corrected that too.

    We ran this test because a style gallery only shows how a code looks. It does not show whether a scanner can read it. We wanted a number for each style, produced the same way for all of them, that a reader could check against the images we published.

    How we tested

    • Date and content. 2026-09-29, on the live link2qr.com generator. Every code encoded https://link2qr.com. We used the generator defaults: error correction M, black on white, and each style's default colors.
    • Styles. All 19 Art Styles in the generator's Art Style tab, plus the 6 dot styles of the Classic generator, for 25 in total. Image QR was excluded because it needs an uploaded photo.
    • Export. Each style was exported from the real generator and saved as a 340px PNG on white with a margin.
    • Decoders. jsQR 1.4, a JavaScript decoder that many web scanners use and the one the Link2QR reliability audit uses. ZXing C++ (zxing-cpp 3.1.1); the ZXing family powers many Android scanner apps. OpenCV 4.13, using both QRCodeDetector and QRCodeDetectorAruco.
    • Conditions. Full size (340px), shrunk to 30% (102px, like a small print or a far scan), and Gaussian blur radius 2px (like camera shake). Three decoders times three conditions gives 9 checks per style.
    • Two extra tests. jsQR again on the same image resized to 200, 340, 500, 680, 1000px. And every Art Style again with error correction set to H, on a local build that includes the fix described below.

    Results for all 25 styles

    Rows are sorted from best to worst. The decoder column shows checks passed out of 3 for each decoder (full size, small, blur). The H column shows the score out of 9 when the same Art Style was regenerated with error correction H. Classic styles were not re-measured at H.

    A score of 9/9 means every decoder read the code in every condition. A score of 6/9 can mean very different things. It might mean one decoder read the code every time and another never did, or that several decoders each failed once. That is why the by-decoder column matters more than the total when you are choosing a style. A pass here is a software result on a clean image. It is not a promise about any particular phone.

    Scan test results for every Link2QR style
    SampleGroupStylePassedBy decoderAt H
    Dots (art) QR code style sampleArt StyleDots (art)9/9jsQR 3/3, ZXing 3/3, OpenCV 3/39/9
    Liquid QR code style sampleArt StyleLiquid9/9jsQR 3/3, ZXing 3/3, OpenCV 3/39/9
    QArt QR code style sampleArt StyleQArt9/9jsQR 3/3, ZXing 3/3, OpenCV 3/39/9
    Classy QR code style sampleClassicClassy9/9jsQR 3/3, ZXing 3/3, OpenCV 3/3not tested
    Classy rounded QR code style sampleClassicClassy rounded9/9jsQR 3/3, ZXing 3/3, OpenCV 3/3not tested
    Dots (classic) QR code style sampleClassicDots (classic)9/9jsQR 3/3, ZXing 3/3, OpenCV 3/3not tested
    Extra rounded QR code style sampleClassicExtra rounded9/9jsQR 3/3, ZXing 3/3, OpenCV 3/3not tested
    Rounded QR code style sampleClassicRounded9/9jsQR 3/3, ZXing 3/3, OpenCV 3/3not tested
    Square QR code style sampleClassicSquare9/9jsQR 3/3, ZXing 3/3, OpenCV 3/3not tested
    Confetti QR code style sampleArt StyleConfetti8/9jsQR 3/3, ZXing 3/3, OpenCV 2/39/9
    Snake QR code style sampleArt StyleSnake8/9jsQR 3/3, ZXing 2/3, OpenCV 3/38/9
    Waves QR code style sampleArt StyleWaves7/9jsQR 3/3, ZXing 3/3, OpenCV 1/37/9
    Bubbles QR code style sampleArt StyleBubbles6/9jsQR 3/3, ZXing 3/3, OpenCV 0/33/9
    Soft QR code style sampleArt StyleSoft6/9jsQR 3/3, ZXing 3/3, OpenCV 0/36/9
    Stripes QR code style sampleArt StyleStripes6/9jsQR 2/3, ZXing 3/3, OpenCV 1/33/9
    Grid QR code style sampleArt StyleGrid5/9jsQR 1/3, ZXing 3/3, OpenCV 1/35/9
    Spiral QR code style sampleArt StyleSpiral5/9jsQR 1/3, ZXing 3/3, OpenCV 1/34/9
    Lines QR code style sampleArt StyleLines4/9jsQR 1/3, ZXing 2/3, OpenCV 1/33/9
    Diagonal QR code style sampleArt StyleDiagonal3/9jsQR 1/3, ZXing 2/3, OpenCV 0/32/9
    Mosaic QR code style sampleArt StyleMosaic3/9jsQR 0/3, ZXing 0/3, OpenCV 3/38/9
    Scatter QR code style sampleArt StyleScatter3/9jsQR 2/3, ZXing 1/3, OpenCV 0/32/9
    3D QR code style sampleArt Style3D2/9jsQR 1/3, ZXing 1/3, OpenCV 0/32/9
    Planet QR code style sampleArt StylePlanet1/9jsQR 1/3, ZXing 0/3, OpenCV 0/30/9
    Rings QR code style sampleArt StyleRings0/9jsQR 0/3, ZXing 0/3, OpenCV 0/30/9
    Stitch QR code style sampleArt StyleStitch0/9jsQR 0/3, ZXing 0/3, OpenCV 0/30/9

    Download the test images: the exact 340px PNGs we decoded are at /blog/qr-code-style-scan-test/<id>.png, for example /blog/qr-code-style-scan-test/art-dots.png.

    Advertisements

    What the results show

    Classic is the safe baseline

    All 6 Classic dot styles (Classy, Classy rounded, Dots (classic), Extra rounded, Rounded, Square) passed 9 of 9. If a code is going on packaging, a menu, or a sign, this is the group with no measured downside.

    Only three Art Styles were clean

    Dots (art), Liquid, QArt passed 9 of 9. Confetti and Snake scored 8, and Waves scored 7. At the bottom, Stitch and Rings scored 0, Planet scored 1, and 3D scored 2. 3D draws the code in an isometric projection, so a decoder sees a skewed grid instead of the square one it expects.

    The decoders disagree a lot

    Soft passed every jsQR and ZXing check but none of the three OpenCV checks. Mosaic went the other way: only OpenCV read it. So a style that works in one scanner app is not proof that it works in another. This is the main reason we recommend testing with more than one. It also means a single quick check with your own phone tells you less than it feels like it does: your phone is one scanner, and your customers will use many.

    Bigger images sometimes decode worse

    We expected a larger image to be easier to read. For jsQR, several decorative styles did the opposite. Grid, Lines, Spiral, Stripes, Mosaic and Diagonal decoded at 200px and failed at 500px and above. Large, sharp shapes that are not squares confuse the decoder. Phones downsample camera frames, which partly explains why some decorative codes scan on a phone but fail in an upload tool. The table lists every Art Style where jsQR gave mixed results across sizes.

    jsQR result by image size for Art Styles with mixed results
    Style200px340px500px680px1000px
    Confettireadreadfailedfailedfailed
    Snakereadreadreadfailedfailed
    Wavesreadreadfailedfailedfailed
    Stripesreadfailedfailedfailedfailed
    Gridreadfailedfailedfailedfailed
    Spiralreadfailedfailedfailedfailed
    Linesreadfailedfailedfailedfailed
    Diagonalreadfailedfailedfailedfailed
    Mosaicreadfailedfailedfailedfailed
    Scatterreadreadreadreadfailed
    3Dreadreadreadfailedfailed
    Planetreadfailedfailedreadfailed

    Error correction H is not a fix

    The common advice is to raise error correction to H for anything decorative. We measured it. Across the 19 Art Styles, 2 scored higher at H, 10 scored the same, and 7 scored lower. Bubbles went from 6 to 3, Stripes from 6 to 3, and Planet from 1 to 0. Mosaic improved from 3 to 8, and Confetti from 8 to 9. The table lists every style whose score changed.

    Art Styles whose score changed at error correction H
    StyleAt MAt H
    Confetti8/99/9
    Bubbles6/93/9
    Stripes6/93/9
    Spiral5/94/9
    Lines4/93/9
    Diagonal3/92/9
    Mosaic3/98/9
    Scatter3/92/9
    Planet1/90/9

    The reason is size. H adds data modules. For this URL the grid goes from 25x25 (version 2) to 29x29 (version 3), so each decorative shape gets smaller at the same print size. Error correction helps a code survive damage or a logo. It does not help the decoder find modules that are not square. Two styles did improve, Mosaic and Confetti, so H is not harmful everywhere. But the pattern across the group is clear enough that we no longer recommend it as a general fix for decorative styles.

    What we changed because of this test

    • Error correction now applies to every style. 15 Art Styles ignored the error correction picker and always used M. They now follow it.
    • The reliability audit is fairer. The /qr-reliability audit now retries a failed decode at smaller sizes (320px, then 200px), the way a phone downsamples a camera frame, so large uploads are no longer failed unfairly.
    • Style advice uses measurements. The /qr-art page had labeled Rings and Planet as lowest risk and said no style was unscannable by design. Both statements were wrong by these results. The page now groups styles by what they scored here.

    Recommendations

    • For anything printed, pick a style that passed 9 of 9.
    • For any other style, test at least two different scanner apps on a real print at its final size. The print size calculator shows the minimum size for your viewing distance.
    • Keep dark modules on a light background, and keep a clear margin around the code.
    • For anything under about 2 cm, use Classic.
    • Do not count on H to rescue a decorative style. If a code will not scan, our guide on why a QR code is not scanning covers the other causes, and the reliability audit checks your own image.

    Ready to make one? Use the generator on the homepage, or browse the Art Styles.

    Limitations

    We did not test phone camera apps such as the iPhone Camera or Google Lens. We did not test printed samples, and we did not vary lighting or angle. Software decoders are a proxy for real scanners, not a replacement. We tested one URL at one data length, and results can differ with other content, other colors, and other sizes.

    © 2026 Link2QR
    AboutContactGuidesSEPA QRLink to QRBlogPrivacyTermsEspañol中文