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.

5000 is the usual road figure and 6000 the usual air one, in centimetres. Your contract states yours.

Label size

Download as HTML

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

  1. Put in the delivery address, one line a line, recipient first.
  2. 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.
  3. Add the order reference. It is printed large and encoded in the QR so a phone can read it off the box.
  4. 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.

Frequently asked questions

Can I print several labels at once?
Not from here; it makes one label at a time. For a batch, a shipping plugin or your carrier’s bulk tool is the right answer, because they also allocate tracking numbers.
Will the courier accept this?
They will accept the parcel and put their own label on it. They will not carry a parcel on the strength of this label alone.
What size label stock should I buy?
4 × 6 inch thermal rolls if you have a label printer, which is most of the market. A6 on plain paper and a glue stick is the office version, and four fit on a sheet of A4.
Why is my label printing small?
The print dialogue is scaling it. Turn off “fit to page”, set scaling to 100 percent, and check the paper size matches the stock.
Does it store the addresses?
No. There is no storage and no request: what you type exists in the page until you close it.
Weekly drops

New tools, when there are new tools

One email when something worth using ships. No schedule to fill, so no filler.

Your address goes nowhere else, and one click unsubscribes.