Skip to main content
Online Tool

PDF417 Generator

Encode up to 1850 characters as a PDF417 2D stacked barcode. Adjustable error correction, columns and row height. Download as PNG or SVG — fully client-side.

94 / 1850 characters. PDF417 supports ASCII text, digits and Latin-1 binary.

3 modules
2x

Drops the right row indicators — saves width but needs a modern scanner.

Encoded payload
PDF417 is a 2D stacked barcode used on driver's licences, boarding passes and shipping labels.

Files are generated on your device — nothing is uploaded.

About the PDF417 generator

PDF417 is a stacked linear 2D symbology that packs up to ~1850 alphanumeric characters (or about 1100 bytes of binary data) into a row-and-column grid. Unlike QR or Data Matrix, PDF417 stays readable when individual rows are missing — it has been the workhorse for US and Canadian driver's licences (AAMVA standard), airline boarding passes (IATA BCBP), and a long tail of shipping, manifesting and government ID applications.

This generator renders PDF417 directly in your browser with the open-source bwip-js library. Tune the error-correction level, column count and row height for your label size and printer; switch to PDF417 Compact when you need to squeeze the symbol into a narrower space and your reader software supports it.

When to use it

  • Encoding driver's licence or government-issued ID data fields (AAMVA).
  • Producing IATA BCBP boarding passes for pilots / agents.
  • Shipping and manifesting labels where Data Matrix isn't acceptable.
  • Storing structured records (CSV / JSON) up to ~1.8 KB on a single label.
  • Marking high-value parts where partial damage shouldn't kill the read.
  • Embedding cross-reference data on the back of a printed certificate or pass.

How it works

  1. Paste your data

    ASCII text, digits or Latin-1 — up to 1850 characters.

  2. Pick an EC level

    Level 5 is the broad recommendation. Bump to 6+ for harsh surfaces, drop to 2–3 only for clean, high-DPI prints.

  3. Set columns / row height

    Auto picks a balanced shape. Force a column count to hit a fixed label width.

  4. Tune module scale

    Bigger = scans further at the cost of label real estate.

  5. Download PNG or SVG

    SVG for print, PNG for screen mock-ups and slide decks.

What to avoid

  • Don't drop EC below 3 for plastic / laminated cards — even small smudges can break the symbol.
  • Don't force a tiny column count for a long payload — the row count balloons and scanning gets unreliable.
  • Don't use Compact PDF417 unless you control the scanner — many legacy readers fail on it.
  • Don't print smaller than ~4 mil module width on thermal printers — bar-edge growth eats the row indicators.
  • Don't shove binary data through without telling downstream code what encoding to expect.

Tips & tricks

  • Export as SVG and rasterise to PNG only for the final asset — vector means you can scale to any printer.
  • Round-trip-test by scanning the generated label with the device that will read it in production.
  • For boarding passes follow the IATA BCBP field layout exactly; readers reject anything off-spec.
  • If you can choose, AAMVA-style ID payloads should use EC level 5 or 6 to survive laminated card wear.
  • Compact PDF417 only saves width — if you're vertically constrained, raise the column count instead.

Private by default

PDF417 barcodes are rendered locally with bwip-js. The text you encode never touches our servers.

Frequently asked questions

What is PDF417?
PDF417 is a 2D stacked linear barcode developed by Symbol Technologies in 1991. It encodes up to ~1850 characters of text (or ~1100 bytes of binary) in a rectangle of stacked rows, and is the symbology behind US/CA driver's licences (AAMVA), airline boarding passes (IATA BCBP) and many shipping labels.
What error correction level should I pick?
PDF417 has 9 levels, 0–8. Each level doubles the number of error-correction codewords (2, 4, 8, … 512). Levels 2–3 are fine for clean, high-resolution prints. Levels 4–5 are the broad recommendation for general use. Levels 6+ are for harsh environments (laminated cards, dirty surfaces). Higher ECL means a bigger symbol for the same data.
What does 'columns' control?
PDF417 lays codewords out in a grid of rows × columns. More columns = wider, fewer rows = shorter. Auto lets bwip-js pick a sensible ratio. Force a specific column count when you have to fit a fixed label width.
When should I use PDF417 Compact?
Compact PDF417 omits the right row indicators, saving 2 codewords of width per row. Use it when reader software supports it (most modern industrial scanners do) and you need to squeeze the symbol into a narrower label. It is not compatible with all legacy readers.
What's the largest payload I can encode?
Practical maximum is around 1850 alphanumeric characters or 2710 digits with EC level 0. Higher EC levels reduce that. If your data is too long, drop the EC level, raise the column count, or split into multiple symbols using PDF417 macro mode (not exposed in this tool).
Is my data uploaded anywhere?
No. The barcode is rendered locally with the open-source bwip-js library. The text you encode and the files you download never leave your browser.

Related tools