QRTOOL-DECODE(1)

πŸ“¦
version 0.13.2 Β· 2 versions
, in arch rolling, nixos 26.05, nixpkgs unstable

πŸ’… qrtool-decode β€” the manual, but make it make sense

okay so real quick before we dive in: you're reading the qrtool-decode page, and it lives in section 1 of the General Commands Manual. That's it, that's the housekeeping, let's go 🫢


✨ NAME ✨

qrtool-decode β€” bestie, it detects and decodes a QR code for you. literally that's the whole job πŸ’–


🌸 SYNOPSIS 🌸

qrtool decode [OPTION]... [IMAGE]

πŸ¦‹ DESCRIPTION πŸ¦‹

Look at her go β€” this command detects and decodes a QR code (like, the ones from <https://www.qrcode.com>) out of a raster or vector image. And by default? The result just pops right out onto standard output. no extra steps, no drama ✨

πŸŽ€ Supported image file formats

okay and here's the trick, iykyk: use the -t option to tell it the image format. Don't specify it? Then the format gets figured out from the extension or the magic number. she's smart like that πŸ’…

⚠️ Caution, and I mean it: this command only supports decoding a normal QR code (<https://www.qrcode.com/codes/model12.html>). It does NOT support decoding a Micro QR code (<https://www.qrcode.com/codes/microqr.html>) and it does NOT support a rMQR code (<https://www.qrcode.com/codes/rmqr.html>). do not come for her about the tiny ones, she simply will not πŸ™ˆ

🌈 POSITIONAL ARGUMENTS 🌈

πŸ“ IMAGE

Your input image file, bestie. And here's the cute part β€” if IMAGE is not specified, or if you pass "-", the image gets read from standard input 🫢

Supported raster image formats are based on the formats supported by the image crate (<https://crates.io/crates/image>). The format of IMAGE gets determined based on the extension or the magic number if possible. Can't figure it out? That's a --type moment. And ngl, one more thing: an SVG image gets rasterized before scanning. icon behavior ✨


πŸ‘‘ OPTIONS πŸ‘‘

  • -t, --type FORMAT β€” tells it the format of the input. If FORMAT is not specified, the format is determined based on the extension or the magic number.

The possible values are, and yes she's listing all of them, because we don't skip:

  • bmp β€” Windows Bitmap. This value is available if the decode-from-bmp feature is enabled at compile time.
  • dds β€” DirectDraw Surface. This value is available if the decode-from-dds feature is enabled at compile time.
  • farbfeld β€” Farbfeld. This value is available if the decode-from-ff feature is enabled at compile time. (yes, farbfeld the value, decode-from-ff the feature, that's not a typo, that's just how she is πŸ’€)
  • gif β€” Graphics Interchange Format. This value is available if the decode-from-gif feature is enabled at compile time.
  • hdr β€” Radiance RGBE. This value is available if the decode-from-hdr feature is enabled at compile time.
  • ico β€” ICO file format. This value also includes the CUR file format. This value is available if the decode-from-ico feature is enabled at compile time.
  • jpeg β€” JPEG. This value is available if the decode-from-jpeg feature is enabled at compile time.
  • openexr β€” OpenEXR. This value is available if the decode-from-exr feature is enabled at compile time.
  • png β€” Portable Network Graphics. (no feature gate on this one, she's always invited πŸ’–)
  • pnm β€” Portable Anymap Format. This value is available if the decode-from-pnm feature is enabled at compile time.
  • qoi β€” Quite OK Image Format. This value is available if the decode-from-qoi feature is enabled at compile time.
  • svg β€” Scalable Vector Graphics. This value also includes the gzip-compressed SVG image. This value is available if the decode-from-svg feature is enabled at compile time.
  • tga β€” Truevision TGA. This value is available if the decode-from-tga feature is enabled at compile time.
  • tiff β€” Tag Image File Format. This value is available if the decode-from-tiff feature is enabled at compile time.
  • webp β€” WebP. This value is available if the decode-from-webp feature is enabled at compile time.
  • xbm β€” X BitMap. This value is available if the decode-from-xbm feature is enabled at compile time.
  • --verbose β€” also prints the metadata. It goes out to stderr. Heads up though: this option conflicts with --metadata β€” you can't have both, pick a lane πŸŽ€
  • --metadata β€” prints only the metadata. It goes out to stderr. And yep, this option conflicts with --verbose. same energy, opposite corners πŸ”₯
  • -h, --help β€” prints the help message. The short flag (-h) gives you the condensed help message, while the long flag (--help) gives you the detailed one. two moods, both valid πŸ’…
  • -V, --version β€” prints the version number.

⭐ EXIT STATUS ⭐

  • 0 β€” successful program execution. slay πŸŽ‰
  • 1 β€” an error occurred. 😭
  • 2 β€” an error occurred while parsing command-line arguments. (the flags fought back πŸ’€)

Exit statuses other than these are defined by sysexits.h (<https://man.openbsd.org/sysexits>).


🧚 NOTES 🧚

Source repository: <https://github.com/sorairolake/qrtool>


πŸ”₯ EXAMPLES πŸ”₯

Detect and decode a QR code from the given image:

$ qrtool decode input.png

Decode a QR code from the given WebP image:

$ qrtool decode -t webp input.webp

Also print the metadata when decoding a QR code:

$ qrtool decode --verbose input.qoi

πŸ™ˆ REPORTING BUGS πŸ™ˆ

Found a bug? Report bugs to: <https://github.com/sorairolake/qrtool/issues>

be nice about it, she's trying her best 🫢


Copyright Β© 2022 Shun Sakai and contributors

  1. This program is distributed under the terms of either the Apache License 2.0 or the MIT License.
  2. This manual page is distributed under the terms of the Creative Commons Attribution 4.0 International Public License.

This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. (no cap, that's the actual legal vibe 😭)


🌟 SEE ALSO 🌟

qrtool(1), qrtool-completion(1), qrtool-encode(1), zbarimg(1)


and that's the whole page, bestie!! mwah πŸ’‹ this was qrtool 0.13.2, dated 2025-11-28 β€” go decode something iconic πŸ’–βœ¨πŸŽ€

πŸ“¦ where this page comes from