Shipping Label Generator
Prints a dispatch label at 4×6 or A6 with a QR of your order reference, checks the address for what makes parcels come back, and is not postage.
This tool needs JavaScript. The addresses stay in this tab: no request is made and nothing is stored.
One line a line, recipient first. For an international parcel the country goes last, on its own line.
A parcel that cannot be delivered and has no sender is destroyed rather than returned.
Printed large and encoded in the QR, so a phone can read it off the parcel.
0
5000 is the usual road figure and 6000 the usual air one, in centimetres. Your contract states yours.
This prints a dispatch label: who the parcel is going to, what is in it, what it weighs, and a reference with a QR of the same reference. It is not postage. A carrier’s label carries their barcode, their service code and their account number, and it comes from their system or their API; printing something that looks like one does not buy carriage and will not be collected.
What it is for is the label a warehouse puts on a parcel for its own sake, the one a courier applies their own label on top of, an internal transfer between sites, or a hand-delivered order.
How to use
- Put in the delivery address, one line a line, recipient first.
- Put in a return address. A parcel that cannot be delivered and has no sender is destroyed rather than returned, which is the expensive failure.
- Add the order reference. It is printed large and encoded in the QR so a phone can read it off the box.
- Add the weight and the box dimensions, then print.
Nothing is uploaded. The addresses stay in the tab.
Example
A 4 × 6 label, 30 × 22 × 18 cm, 1.4 kg actual:
4 × 6 in, 101.6 × 152.4mm · charged at 2.38kg on the volumetric weight
The parcel weighs 1.4 kg and will be charged as 2.38 kg, because 30 × 22 × 18 divided by 5000 is what the carrier will invoice. That is the number worth knowing before the quote arrives, and the reason a half-empty box costs money.
Pitfalls
This is not a postage label and cannot become one. Carriers generate their own labels with their own barcodes. If you need one, use their portal or their API, or the shipping plugin you already run.
No return address is the expensive mistake. Undeliverable parcels with no sender are disposed of. With one, they come back and can be resent.
Volumetric weight is how a large light parcel is priced. Length by width by height in centimetres, divided by the carrier’s divisor: 5000 for most road services, 6000 for air. Whichever is greater, actual or volumetric, is what you pay for. Your contract states your divisor, which is why it is a field here.
Put the country on its own line, last, for anything going abroad. Sorting reads from the bottom up, and a country line with a postcode on it is a parcel that goes to the wrong country’s hub first.
An international parcel also needs a customs declaration. CN22 or CN23 with contents, value and country of origin, on the carrier’s form. That is not something this can produce, and a parcel without one is held.
Uppercase is not shouting, it is postal guidance. Automated sorting reads uppercase more reliably, which is why most postal services ask for the last two lines in capitals at minimum.
Thermal printers usually want the page size to match the stock. The downloaded file sets @page to
the label size, which is what stops a 4 × 6 label printing in the middle of a sheet of A4. In the print
dialogue, set scaling to 100 percent rather than “fit to page”.
The QR holds your reference, nothing else. It is not a tracking number and no carrier will scan it. It is there so your own warehouse can scan a box back to an order.
Compatibility
Runs entirely in the browser. No address is sent anywhere, nothing is stored, and closing the tab discards everything.
The label is laid out in millimetres rather than pixels, all the way through: the stock sizes are in
millimetres, the type sizes are in millimetres, and the print stylesheet sets @page to the stock. A
label laid out in pixels prints at whatever the browser’s scaling decides, and a 4 × 6 label that comes
out at 92 percent does not fit the stock.
The QR uses the same encoder as the QR code tool, which is tested against the specification’s own test vectors, at error correction level M so a scuffed label still reads.
The checks are the part worth having: too few address lines, no digit anywhere in the address (so probably no postcode or house number), no return address, no weight, no reference, and for international parcels a last line that is not a country plus the customs reminder. Each one is a thing that looks fine on screen and costs money at the depot, and they are all tested.
Printing goes through a hidden frame carrying the same stylesheet, so the preview, the print and the saved HTML file are the same document.