PackageTrack
Sign in Get early access

chillerlan/php-qrcode

A QR Code generator and reader with a user-friendly API. PHP 8.2+

6.0.1 43M downloads/mo #320 most downloaded on Packagist chillerlan/php-qrcode

What this package is like to depend on

Last release 5 months ago

18 Mar 2026

Ships fairly regularly

a new release about every 8 months

Rarely documented

notes for 10 of 45 stable releases

Nothing withdrawn

no release was ever pulled

9 years old

45 releases · first in 2017

4 releases in the last 12 months

see the full history below

Release timeline

45 releases · Dec 2017 to Mar 2026
2018 2019 2020 2021 2022 2023 2024 2025 2026
Release Pre-release

Releases

latest 45
  1. 6.0.1 18 Mar 2026
    Release notes

    The following methods (property getters) have been deprecated in favor of asymmetric visibility, which is available as of PHP 8.4 and which is the minimum requirement of the next major version (v7) of php-qrcode.
    The QRMatrix class will see an addition of a magic getter that emulates the future behaviour as an upgrade path, the other methods are only used internally and will see no such addition for the time being.

    method replacement
    BitBuffer::getBuffer() BitBuffer::$buffer
    BitBuffer::getLength() BitBuffer::$length
    Detector::getFinderPatterns() Detector::$finderPatterns
    EccLevel::getLevel() EccLevel::$level
    ECICharset::getID() ECICharset::$charsetID
    FinderPattern::getCount() FinderPattern::$count
    GenericGFPoly::getCoefficients() GenericGFPoly::$coefficients
    LuminanceSourceInterface::getHeight() LuminanceSourceInterface::$height
    LuminanceSourceInterface::getWidth() LuminanceSourceInterface::$width
    LuminanceSourceInterface::getLuminances() LuminanceSourceInterface::$luminances
    MaskPattern::getPattern() MaskPattern::$currentPattern
    QRData::getBitBuffer() QRData::$bitBuffer
    QRMatrix::getEccLevel() QRMatrix::$eccLevel
    QRMatrix::getMaskPattern() QRMatrix::$maskPattern
    QRMatrix::getMatrix() QRMatrix::$matrix
    QRMatrix::getSize() QRMatrix::$moduleCount
    QRMatrix::getVersion() QRMatrix::$version
    ResultPoint::getEstimatedModuleSize() ResultPoint::$estimatedModuleSize
    ResultPoint::getX() ResultPoint::$x
    ResultPoint::getY() ResultPoint::$y
    Version::getVersionNumber() Version::$versionNumber

    The following properties as well as the method copyVars() in QROutputAbstract will be removed in v7 without replacement,
    as they only existed to improve performance by circumventing the magic getters in the QROptions class - these are replaced by (set) property hooks where unnecessary overhead is reduced. Some of the built-in output classes may see the re-addition of some of these properties locally, depending on the performance impact.

    QROutputAbstract::$excludeFromConnect
    QROutputAbstract::$keepAsSquare
    QROutputAbstract::$connectPaths
    QROutputAbstract::$eol
    QROutputAbstract::$drawCircularModules
    QROutputAbstract::$drawLightModules
    QROutputAbstract::$circleRadius
    

    These changes are already in dev-main.

    Open source →
    Release notes

    6.0.1 Latest

    Latest

    Compare

    Choose a tag to compare

    Open source →
  2. 6.0.0 14 Mar 2026
    Release notes

    Hi, I've kept you waiting for too long now, so I'm going to release it "as is". Originally I planned to add support for creating Structured Append QR Codes but I'm currently lacking the mental capacity to wrap my head around this concept (a method to calculate the parity already exists in the code, feel free to submit a PR!).

    Once again, a big thank you to everyone who submitted issue reports and opened discussions and helped to improve this library!

    IMPORTANT: v6 will be branched out and the main branch will remain the active development branch towards v7. If you have used the composer version dev-main without a commit hash in the past, please make sure to update the requirement ASAP. You have been warned.

    For feedback and questions please head over to the linked discussion!

    Changelog

    • General
      • The required minimum PHP version is now 8.2.
      • The QRCode constructor now also accepts an iterable as options, which is handed over to a new QROptions instance internally.
      • Extracted QRMatrix::getBooleanMatrix() from QRMatrix::getMatrix() to remove type ambiguity, the optional parameter $boolean has been removed.
      • Added PHPBench to run benchmarks (the results can be found in the benchmark branch).
      • Several bugfixes, cleanup, dependency updates, documentation update and examples.
    • Settings (QROptionsTrait)
      • [breaking] The property QROptions::$outputType and the related constants in QROutputInterface have been removed. The output type is now specified via QROptions::$outputInterface with the default value of QRMarkupSVG::class. (#223).
      • Split QR Code reader options into separate QRCodeReaderOptionsTrait.
      • The magic setter for QROptions::$eccLevel now also accepts the string values L, M, Q, H (case-insensitive) - these will be converted internally to the respective integers. (#160).
      • The property QROptions::$scale (module scaling for several raster image output classes) is now clamped between 1 and 50.
    • Output (QROutputInterface and child classes)
      • [breaking] The parameter $transform of the method QROutputAbstract::collectModules(Closure $transform) has been removed in favor of a method QROutputAbstract::moduleTransform():mixed|null which is called with the same parameters.
      • Added QRInterventionImage (intervention/image) output.
      • Added XML output QRMarkupXML including an XSD schema qrcode.schema.xsd.
      • [possibly breaking] QRStringJSON overhaul, similar to XML output, including a JSON schema qrcode.schema.json.
      • The GD output class now also supports the avif format via QRGdImageAVIF.
      • QRFpdf::dump(): allow using external FPDF instance.
      • Extracted CssColorModuleValueTrait and RGBArrayModuleValueTrait for use in custom output classes.
    Open source →
    Release notes

    6.0.0

    Compare

    Choose a tag to compare

    Open source →
  3. 5.0.5 23 Nov 2025
    Release notes
    • PHP 8.5 support (imagedestroy() deprecation)
    • The parameter $transform of the method QROutputAbstract::collectModules(Closure $transform) has been deprecated in favor of the newly introduced method QROutputAbstract::moduleTransform() with the same parameters as the anonymous closure. The parameter will be removed in v6.
    • Remaining instances of empty() have been replaced with more precise checks.
    • dependency & CI updates
    Open source →
    Release notes

    5.0.5

    Compare

    Choose a tag to compare

    Open source →
  4. 5.0.4 19 Sep 2025
    Release notes
    • hand over finder pattern coordinates to the decoder result (#248)
    • fixed a bug in the AlphaNum string validator and added additional tests (#313)
    • dependency updates
    Open source →
    Release notes

    5.0.4

    Compare

    Choose a tag to compare

    Open source →
  5. 5.0.3 21 Nov 2024
    Release notes
    • PHP 8.4 support (implicit nullable types are deprecated) (#276)
    • ECI decoding now allows for numeric and alphanumeric segments to be preceded by an ECI designator (#289)
    • simplified Number and AlphaNum classes (backport from dev-main. v6)
    • QRFpdf::dump() now accepts an FPDF instance as second optional parameter
    • dependency & CI updates
    • added PHPStorm code style
    Open source →
    Release notes

    5.0.3

    Compare

    Choose a tag to compare

    Open source →
  6. 5.0.2 27 Feb 2024
    Release notes
    • fixed a bug in the QR Code version auto detection when the given data segment was the exact same bit size as the maximum for the guessed provisional version, added a safety margin of 4 bits, which forces the next available version in that case.
    Open source →
    Release notes

    5.0.2

    Compare

    Choose a tag to compare

    Open source →
  7. 5.0.1 07 Jan 2024
    Release notes
    • ReedSolomonDecoder now throws a QRCodeDecoderException instead of the generic QRCodeException
    • added a .gitattributes file (#234)
    • minor performance (QRMatrix) and type safety (MaskPattern) improvements
    • branch adjustments
    • dependency updates
    • test cleanup and improvements
    Open source →
    Release notes

    5.0.1

    Compare

    Choose a tag to compare

    Open source →
  8. 5.0.0 24 Nov 2023
    Release notes

    Hi! It's been a while since the last major version - has it already been over three years and seven million downloads??? Time flies...
    v5 was supposed to be released earlier this year already, but various health issues kept me from working on it and I kept y'all waiting and using dev-main and the v5-beta instead - but hey, the wait is over now!

    The new version comes with countless internal changes, mostly to incooperate the ZXing QR Code reader and open the possibility for other types of barcodes, such as micro QR.
    A lot of things have been deprecated and moved in order to clean up for v6 which is intended to support PHP 8.2+ (or maybe 8.3+ even). See the attached discussion thread for a full list of changes and deprecations.

    IMPORTANT: v5 will be branched out and the main branch will become (or rather remain) the active development branch towards v6. If you have used the composer version dev-main without a commit hash in the past, please make sure to update the requirement ASAP. You have been warned.

    Also, a big thank you to everyone who submitted issue reports and opened discussions and helped to improve this library!

    New Features

    Changes

    • [breaking] The default output has been changed from PNG (GdImage) to SVG. No image processing extension (ext-gd or ext-imagick) required anymore!
    • [breaking] The default output format of the built-in output classes is now a base64 data URI (if applicable) so that it can be directly embedded as src into an <img> tag. This can be disabled by setting QROptions::$outputBase64 to false.
    • [breaking] The default value of QROptions::$imageTransparent has been set to false due to various issues and misconceptions with transparency in GD and ImageMagick, therefore: use at your own risk.
    • [breaking] The values of the QRMatrix::M_* constants and therefore the keys of the QROptions::$moduleValues array have changed. QRMatrix::M_*_DARK constants have been introduced for convenience. The module values are now a proper bitmask, the dark value is now calculated (QRMatrix::M_* | QRMatrix::IS_DARK) instead of (QRMatrix::M_* << 8).
    • [breaking] The output class QRMarkup has been changed to abstract, inheritors are now QRMarkupHTML and QRMarkupSVG (QRMarkupXML anyone?).
    • [possibly breaking] The fill-opacity attribute (and its respective setting QROptions::$svgOpacity) has been removed from QRMarkupSVG::path() as it can be set by CSS.
    • [possibly breaking] The QROptions::$markupDark and QROptions::$markupLight settings have been removed - they can be set via overriding QRMarkup::getDefaultModuleValue().
    • [possibly breaking] The QROptions::$textDark and QROptions::$textLight settings have been removed - they can be set via overriding QRString::getDefaultModuleValue().
    • The module value validation method QROutputInterface::moduleValueIsValid() is now public static, so that input values can be checked before invoking the options, e.g. QRMarkupSVG::moduleValueIsValid('#aabbcc'). Please note that in case of HTML and SVG it will only check for the basic syntax, it will not validate or sanitize the values.
    • The GD output class now also supports BMP and WEBP output.
    • The formerly GD exclusive options QROptions::$jpegQuality and QROptions::$pngCompression have been deprecated in favor of the more generic QROptions::$quality.
    • The setting QROptions::$svgUseFillAttributes has been added to toggle fill attributes on the SVG <path> elements in QRMarkupSVG::path() (this was previously done via setting QROptions::$markupDark and QROptions::$markupLight to an empty value).
    Open source →
    Release notes

    5.0.0

    Compare

    Choose a tag to compare

    Open source →
  9. 4.4.2 15 Nov 2024
    Release notes
    • PHP 8.4 support (implicit nullable types are deprecated)
    • dependency & CI updates
    Open source →
    Release notes

    4.4.2

    Compare

    Choose a tag to compare

    Open source →
  10. 4.4.1 06 Jan 2024
    Release notes
    • added a .gitattributes file (#234)
    • dependency updates
    Open source →
    Release notes

    4.4.1

    Compare

    Choose a tag to compare

    Open source →
  11. 4.4.0 23 Nov 2023

    Nothing published for this version

  12. 4.3.4 25 Jul 2022

    Nothing published for this version

  13. 4.3.3 25 Nov 2021

    Nothing published for this version

  14. 4.3.2 18 Nov 2021

    Nothing published for this version

  15. 4.3.1 05 Jan 2021

    Nothing published for this version

  16. 4.3.0 18 Nov 2020

    Nothing published for this version

  17. 4.2.0 07 Oct 2020

    Nothing published for this version

  18. 4.1.0 04 Jun 2020

    Nothing published for this version

  19. 4.0.1 12 Apr 2020

    Nothing published for this version

  20. 4.0.0 06 Apr 2020

    Nothing published for this version

  21. 3.4.1 03 Sep 2021

    Nothing published for this version

  22. 3.4.0 18 Nov 2020

    Nothing published for this version

  23. 3.3.0 04 Jun 2020

    Nothing published for this version

  24. 3.2.3 12 Apr 2020

    Nothing published for this version

  25. 3.2.2 05 Apr 2020

    Nothing published for this version

  26. 3.2.1 19 Feb 2020

    Nothing published for this version

  27. 3.2.0 04 Dec 2019

    Nothing published for this version

  28. 3.1.1 09 Aug 2019

    Nothing published for this version

  29. 3.1.0 19 Apr 2019

    Nothing published for this version

  30. 3.0.3 20 Dec 2018

    Nothing published for this version

  31. 3.0.2 10 Nov 2018

    Nothing published for this version

  32. 3.0.1 01 Oct 2018

    Nothing published for this version

  33. 3.0.0 19 Sep 2018

    Nothing published for this version

  34. 2.0.8 12 Apr 2020

    Nothing published for this version

  35. 2.0.7 05 Apr 2020

    Nothing published for this version

  36. 2.0.6 28 Mar 2018

    Nothing published for this version

  37. 2.0.5 21 Mar 2018

    Nothing published for this version

  38. 2.0.4 10 Mar 2018

    Nothing published for this version

  39. 2.0.3 23 Jan 2018

    Nothing published for this version

  40. 2.0.2 21 Jan 2018

    Nothing published for this version

  41. 2.0.1 29 Dec 2017

    Nothing published for this version

  42. 2.0.0 24 Dec 2017

    Nothing published for this version

  43. 1.0.9 12 Apr 2020

    Nothing published for this version

  44. 1.0.8 19 Jan 2018

    Nothing published for this version

  45. 5.0-beta 22 Mar 2023

    Nothing published for this version

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive