Skip to content

@qrcodesdk/cli

Open @qrcodesdk/cli on npmx.dev@qrcodesdk/cli version@qrcodesdk/cli install size@qrcodesdk/cli bundled size@qrcodesdk/cli download/mo@qrcodesdk/cli source code
works with
This package works with node
This package works with bun
This package works with deno

@qrcodesdk/cli generates QR codes from a terminal, shell script, or CI job. The qrc command prints compact UTF-8 terminal text or writes SVG and PNG files.

When executed with Node.js, @qrcodesdk/cli requires Node 22.12.0 or newer. Packed consumers are verified in CI on Node 22.12.0 and the latest Node 24.x release. The Deno and Bun commands below use those runtimes’ Node compatibility layers and are not covered by the Node compatibility job.

Install it globally when you want qrc available as a command anywhere:

Terminal window
npm install -g @qrcodesdk/cli

You can also run it from a project dependency.

Terminal window
npm install -D @qrcodesdk/cli
Terminal window
npx qrc "https://qrcodesdk.dev"

Or use it without installing it.

Terminal window
npx @qrcodesdk/cli "https://qrcodesdk.dev"

Without an output file, qrc packs two QR rows into each terminal line and applies ANSI colors:

Terminal window
qrc "https://qrcodesdk.dev"

Use full-height, double-width ██ modules when preferred:

Terminal window
qrc "https://qrcodesdk.dev" --no-small

Disable ANSI styling explicitly for logs, files, and redirected output:

Terminal window
qrc "https://qrcodesdk.dev" --no-ansi-colors

Render modules entirely as ANSI-colored spaces, without UTF-8 block glyphs:

Terminal window
qrc "https://qrcodesdk.dev" --only-ansi-colors

The equivalent explicit boolean forms are --small false and --ansi-colors false. Both options also accept true. Layout and ANSI styling are independent and affect text output only. Compact and full block layouts require UTF-8; ANSI-background-only output contains spaces and escape sequences instead. ANSI remains enabled by default when standard output is redirected; the CLI does not inspect TTY state or NO_COLOR.

--only-ansi-colors ignores the small setting and implies ANSI output. It cannot be combined with --no-ansi-colors or --ansi-colors false.

An .svg output path selects SVG automatically:

Terminal window
qrc "https://qrcodesdk.dev" --output qrcode.svg

You can also set the format explicitly:

Terminal window
qrc "https://qrcodesdk.dev" --format svg --output qrcode.svg

An .png output path selects PNG automatically:

Terminal window
qrc "https://qrcodesdk.dev" --output qrcode.png

Or pass the format explicitly:

Terminal window
qrc "https://qrcodesdk.dev" --format png --output qrcode.png

SVG and PNG output require --output. If the extension is not .svg or .png, pass --format explicitly.

Terminal window
qrc "https://qrcodesdk.dev" \
--output qrcode.svg \
--error-correction H \
--size 2 \
--margin 3 \
--color-dark '#111827' \
--color-light '#ffffff' \
--aria-label 'Scan to open qrcodesdk.dev'

The CLI exposes matrix and visual settings as flags. Leave mode, version, and mask on automatic selection unless you need a compatibility target or deterministic fixture:

Terminal window
qrc "HELLO WORLD" \
--mode alphanumeric \
--version 1 \
--mask 2 \
--output hello.svg

Enable the UTF-8 ECI declaration with a presence flag or an explicit boolean:

Terminal window
qrc "Grüße" --eci
qrc "Grüße" --eci true

Use --eci false to disable it explicitly. For the behavior and tradeoffs behind these flags, see the builder reference. For colors, size, margins, and scan-safety guidance, see Customize output.

Option Description Default
[data] Positional QR code input data. -
--input <value> QR code input data, equivalent to positional [data]. -
-V Print the installed CLI package version. -
--format <text|svg|png> Output format. Inferred from .svg or .png output paths. -
-o, --output <path> Required output path for SVG and PNG. -
--mode <numeric|alphanumeric|octet> QR code data mode. Auto
--error-correction <L|M|Q|H> Error correction level. M
--version <1-40> Pin a QR code version. Auto
--mask <0-7> Pin a QR code mask. Auto
--eci [true|false] Emit UTF-8 ECI assignment 26 for octet segments. false
--size <number> Module size as a positive integer. 1
--margin <number> Margin as a non-negative integer. 2
--small <true|false> Pack two QR rows into each terminal line. true
--no-small Alias for --small false. -
--ansi-colors <true|false> Style terminal text with ANSI colors. true
--no-ansi-colors Alias for --ansi-colors false. -
--only-ansi-colors Use ANSI background cells without UTF-8 block glyphs. false
--color-dark <#rrggbb> Dark module color. #000000
--color-light <#rrggbb> Light module color. #ffffff
--alt <text> Fallback SVG accessible name. undefined
--aria-label <text> SVG aria-label accessible name. undefined
--title <text> SVG child <title> text. undefined

Colors must be six-digit hex values. --size must be positive and --margin must be non-negative. For block-glyph text output, the dark color is the ANSI foreground and the light color is the ANSI background. With --only-ansi-colors, both become module background colors.

In an interactive terminal, qrc prompts only for missing required values such as input, an ambiguous format, or a file output path.

In a non-interactive shell or CI job, missing required values fail with a clear error instead of opening a prompt. Pass every required value explicitly:

Terminal window
qrc \
--input "https://qrcodesdk.dev" \
--format png \
--output artifacts/qrcode.png

Successful file output writes a confirmation to standard error, leaving standard output available for terminal QR code content and pipeline use.