Render a barcode image
A static barcode as SVG (default), PNG, JPG, WebP, AVIF, PDF or EPS, with no key.
No key or token needed, and it doesn't use your daily quota: put the URL straight into an <img> tag. The same query always returns the same bytes, so responses are cached for a year. Limit: 300 requests a minute per IP address, like GET /qr.
Formats. EAN-13, EAN-8, UPC-A, UPC-E, ITF-14 and GS1-128 (GTIN and SSCC fields) take the number with or without its check digit: one digit short and it's added, the full length and it's checked. A wrong check digit, a wrong length or a character the format can't hold is a 400 that says what's wrong. Code 128 takes printable ASCII, Code 39 capitals, digits and - . $ / + %, and Data Matrix, PDF417 and Aztec any text up to 1,000 characters.
Sizes. Raster images are scale pixels per module (a linear bar or a 2D cell's half). SVG, PDF and EPS are vectors at one point per module (0.353 mm, about 107% of an EAN-13's nominal size), with bars height millimetres tall.
Values that shouldn't sit in a URL can go in a POST body instead.
format*stringThe symbology: ean13 (EAN-13), ean8 (EAN-8), upca (UPC-A), upce (UPC-E), code128 (Code 128), code39 (Code 39), itf14 (ITF-14), gs1-128 (GS1-128), datamatrix (Data Matrix), pdf417 (PDF417), aztec (Aztec)
"ean13""ean8""upca""upce""code128""code39""itf14""gs1-128""datamatrix""pdf417""aztec"data*stringThe number or text to encode. Retail numbers (EAN, UPC, ITF-14, GS1 GTINs and SSCCs) can leave the check digit off and it's added; a wrong one is an error.
1 <= length <= 1000type?stringFile type: svg (default), png, jpg, webp, avif, pdf or eps. Raster images are scale pixels per module; SVG, PDF and EPS are vectors at one point per module (0.353 mm).
"svg""png""jpg""webp""avif""svg""pdf""eps"fg?stringBar and text color (default 000000) as hex, such as 000000 (in URLs leave out the # or encode it as %23)
length <= 7bg?stringBackground color (default ffffff) as hex, such as 000000 (in URLs leave out the # or encode it as %23)
length <= 7scale?integerPixels per module in raster images (1-10, default 4)
1 <= value <= 10height?numberBar height of linear barcodes in millimetres at the vector size (5-60; default depends on the format, 23 for EAN-13)
5 <= value <= 60quietZone?integerBlank margin in modules: left and right of linear barcodes (0-20), all round 2D codes (0-10). Defaults to the format's minimum (11 for EAN-13, 10 for Code 128).
0 <= value <= 20text?stringPrint the digits or text under linear barcodes (default true)
"0""1""true""false"rotate?stringClockwise rotation in degrees: 0 (default), 90, 180 or 270
"0""90""180""270"The image or file. Cache-Control: public, max-age=31536000, immutable; CORS is open to every origin. EPS comes as an attachment.
response?stringcurl -X GET 'https://api.qrdx.dev/v1/barcode?format=ean13&data=590123412345&type=svg'"<svg width=\"129.333mm\" height=\"55.333mm\" shape-rendering=\"crispEdges\" viewBox=\"0 0 388 166\" xmlns=\"http://www.w3.org/2000/svg\">…</svg>"Last updated on
Delete a code DELETE
Permanently deletes a code and its scan history.
Render a barcode image from a JSON body POST
The same image as GET /barcode, with the same fields as JSON, so the value never appears in a URL or a log of one. Not cached (Cache-Control: no-store). No key needed; it shares the 300 requests a minute per IP address with GET.