Tracking Number Detector

Paste a tracking number and see which courier it most likely belongs to. Everything runs in your browser, nothing is sent anywhere.

Try one: 1Z999AA10123456784 9400 1118 9922 3197 4284 97 RA473124829US RB123456785CN AB123456785GB

A tracking number is a short string of letters and digits, and hidden inside it is usually enough information to tell you which company is carrying the parcel. The tool above reads that structure and gives you its best answer in real time. This page explains how it reaches that answer, why some numbers can be identified with certainty while others can only be narrowed to a shortlist, and how you can apply the same logic yourself. If you just want to see where a package is, you can look it up across 600+ carriers on InstantParcels without knowing the courier in advance.

Why guessing the courier is harder than it sounds

At first glance, identifying a courier from its tracking number feels like it should be a solved problem. In practice it is fiddly, for one main reason: there is no global registry that reserves a particular shape of number for a particular company. Each carrier and each national post invented its own numbering scheme at a different point in history, and those schemes were never coordinated. The result is a landscape where a purely numeric string of a given length might belong to any of several very different companies.

Some numbers are unmistakable. A string that opens with 1Z and runs eighteen characters is a United Parcel Service label and essentially nothing else. A string that finishes with two letters after a run of nine digits is an international postal item, and those final two letters name the country it came from. Other numbers give almost nothing away. Twelve plain digits could be a courier air waybill, a domestic post office barcode, or a private parcel firm's reference. The honest tool, and the honest engineer, treats the first kind as a fact and the second kind as a shortlist.

The detector above reflects that split. When it can prove an identification using a built-in verification digit, it marks the result confirmed. When the shape is distinctive but unverifiable, it says likely. When the shape is generic and shared by several carriers, it lists every candidate and labels each one possible, because pretending to be certain would only mislead you.

What the characters actually encode

It helps to picture a tracking number as three loosely defined zones rather than a single blob. There is often a prefix that signals the product or the issuing company, a body that uniquely identifies the individual parcel, and in many formats a single verification digit that is calculated from the rest so that a mistyped number can be caught before anyone wastes time looking it up.

Not every carrier uses all three zones, and the ones that do place them in different orders. But once you know the zones exist, the patterns start to make sense. A prefix is why UPS numbers announce themselves so clearly and why many e-commerce shipments from the German post begin with the same couple of letters. A verification digit is why a good tool can reject a typo the instant you finish pasting, long before it touches a carrier's servers.

The quickest tell: read the last two letters

If a tracking number ends in two letters, you are almost always holding an international postal item formatted to the worldwide standard that national posts use for registered mail, express items, and tracked cross-border parcels. That standard fixes the layout as two opening letters, nine digits, and a two-letter country code, and the closing letters are the single most useful clue you will find anywhere in parcel tracking.

Those closing letters are an ISO country code that names where the item entered the postal network. A number ending in US was posted through the United States, one ending in DE through Germany, CN through China, GB through the United Kingdom, and so on across roughly two hundred territories. That single fact routes an enormous share of the world's tracked mail, because instead of memorizing a separate pattern for every postal operator on earth, you memorize one pattern and a table of country codes.

Ends inPosted throughTypical operator
USUnited StatesUSPS
GBUnited KingdomRoyal Mail
DEGermanyDeutsche Post
CNChinaChina Post / EMS
CACanadaCanada Post
AUAustraliaAustralia Post
INIndiaIndia Post
JPJapanJapan Post
FRFranceLa Poste

One caution: the country code tells you where an item was posted, not necessarily who will hand it to you at the door. A parcel posted in China and ending in CN may be delivered in your country by your own national carrier once it clears customs. For the origin leg, though, the two letters are as reliable a signal as parcel tracking offers.

Carrier signatures at a glance

For the major private couriers and the busiest posts, a handful of signatures cover most of what you will ever paste in. The table below is written the way you would actually eyeball a number rather than as formal patterns.

Looks likeLengthBest guess
Starts 1Z, mix of letters and digits18UPS
All digits, starts 94 / 93 / 92 / 9522USPS
All digits, no prefix12 or 15FedEx (candidate)
All digits10DHL Express air waybill
Starts GM16 to 20DHL eCommerce
Two letters, nine digits, two letters13International post (read the suffix)
All digits14DPD (candidate)
Starts 3S~13PostNL
All digits16Evri or Canada Post (candidate)

Notice how often the word "candidate" appears next to the all-digit rows. That is the whole story of parcel tracking in one column: letters and prefixes give certainty, bare digits give ambiguity. You can browse a full operator directory, one page per carrier, on the InstantParcels courier list.

When the number alone is not enough

Sometimes the most useful thing a detector can tell you is that it cannot be sure. A sixteen-digit numeric string is a genuine coin toss between a British home-delivery firm and the Canadian post, and no amount of cleverness will resolve it from the digits alone, because neither format carries a verification digit or a distinguishing prefix. In that situation the correct move is not to pick one and hope. It is to carry both possibilities forward and let an actual tracking lookup settle the matter, since the carrier's own system knows instantly whether the number exists in its records.

This is exactly the gap a multi-carrier tracker is built to close. Rather than forcing you to identify the courier first, a service like InstantParcels accepts the number, tries it against the carriers whose formats it could match, and returns whichever one recognizes it. The detection step becomes a way to narrow the search rather than a decision you have to get right on your own.

How verification digits catch typos

The formats that feel almost magical to work with are the ones that carry a verification digit, because they let you reject a mistyped number offline, in a millisecond, with no network call at all. The idea is simple. When the number is created, one of its positions is filled not with fresh information but with a value calculated from all the other digits. A program that knows the recipe can repeat the calculation and check that the answer matches. If someone fat-fingers a single digit, the recipe no longer balances, and the number is flagged as malformed.

The international postal standard uses a weighted calculation over its serial digits, where each digit is multiplied by a fixed weight, the products are added up, and the remainder after dividing by eleven produces the verification digit. UPS uses a related scheme across its eighteen characters, first translating its letters into numbers on a repeating cycle and then summing with alternating weights. The United States Postal Service leans on the same style of alternating-weight calculation that sits behind ordinary retail barcodes. The specific recipes differ, but the payoff is identical: a number that fails its own check was either mistyped or invented, and you learn that before spending a lookup on it.

A verification digit is a strong signal, but it is not proof of delivery. It confirms that a number is well-formed, meaning it was transcribed correctly and follows the rules of its format. It says nothing about whether a real parcel was ever assigned that number. Only the carrier can tell you that, which is why the detector above tops out at "confirmed format" rather than claiming to know a shipment's status.

A practical workflow for support teams and sellers

If you run an online shop or answer customer messages, tracking numbers arrive from every direction, often pasted with stray spaces or in the wrong case, and frequently with no mention of which courier was used. A repeatable workflow saves a surprising amount of time.

Start by cleaning the input. Strip spaces and dashes and force the whole thing to uppercase, because a label that reads ab 1234 5678 5gb and one that reads AB123456785GB are the same number wearing different clothes. Next, look for the two unmistakable signatures: a leading 1Z for UPS, and a trailing pair of letters for international post. Between them they account for a large fraction of everyday numbers, and both can be identified with confidence. If neither applies and you are left with a plain run of digits, resist the urge to guess a single carrier. Treat the length as a shortlist, and move straight to a lookup that can try several carriers at once. Finally, when you hand a customer a tracking link, prefer a multi-carrier page over a single carrier's site, so that if the parcel changes hands between carriers mid-journey the same link keeps working.

For the lookup step itself, the InstantParcels home page takes any of these numbers and finds the right carrier for you, and the US Post tracking guide is a good reference when you are dealing specifically with domestic American mail and its status messages.

Build your own detector in JavaScript

The tool on this page is a few dozen lines of plain JavaScript with no dependencies, and you are welcome to adapt the approach. The shape of a good detector is always the same three steps: normalize the input, test it against an ordered list of patterns from most specific to least specific, and confirm the match with a verification digit wherever the format provides one.

Ordering is the part people get wrong. If you test a generic "twelve digits" rule before you test the structured formats, you will happily misclassify numbers that merely happen to be twelve digits long. Put the unambiguous patterns first.

const PATTERNS = [
  ["UPS",             /^1Z[0-9A-Z]{16}$/],
  ["USPS",            /^(94|93|92|95)\d{20}$/],
  ["Royal Mail",      /^[A-Z]{2}\d{9}GB$/],
  ["China Post",      /^[A-Z]{2}\d{9}CN$/],
  ["DHL eCommerce",   /^GM\d{16,20}$/],
  ["PostNL",          /^3S[A-Z0-9]{9,11}$/],
  ["International",   /^[A-Z]{2}\d{9}[A-Z]{2}$/],
  ["DPD",             /^\d{14}$/],
  ["FedEx",           /^\d{12}$|^\d{15}$/],
  ["DHL Express",     /^\d{10}$/],
];

function candidates(raw){
  const s = raw.toUpperCase().replace(/[\s-]/g, "");
  const hits = PATTERNS.filter(([, re]) => re.test(s)).map(([name]) => name);
  return hits.length ? hits : ["unknown"];
}

To turn a shortlist into a confident answer, add the verification-digit check for the format that matched. The international-standard check is compact and covers the entire postal family in one function:

function s10Valid(tn){
  const m = tn.match(/^[A-Z]{2}(\d{8})(\d)[A-Z]{2}$/);
  if(!m) return false;
  const weights = [8,6,4,2,3,5,9,7];
  let sum = 0;
  for(let i=0;i<8;i++) sum += (+m[1][i]) * weights[i];
  let c = 11 - (sum % 11);
  c = c === 10 ? 0 : c === 11 ? 5 : c;
  return c === (+m[2]);
}
// s10Valid("RA473124829US") === true

That is the entire trick. A short ordered list of patterns tells you what a number could be, and a verification-digit function upgrades a lucky guess into something you can rely on. For a fuller written reference covering more carriers and the arithmetic behind each check, the companion notes describe the formats in more depth, and the live carrier directory shows every operator supported for actual tracking.

Frequently asked questions

Can I always tell the courier from the tracking number alone?

No, and any tool that claims otherwise is bluffing. Numbers with a distinctive prefix or a country-code suffix can be identified with confidence, but plain numeric strings are shared across several carriers and can only be narrowed to a shortlist. When the number is ambiguous, the reliable path is a lookup that tries multiple carriers, such as InstantParcels.

What do the last two letters of an international tracking number mean?

They are the ISO country code of the country where the item was posted. A suffix of US means it entered the mail in the United States, DE in Germany, CN in China, and so on. It identifies the origin, not necessarily the company that delivers the final leg.

Why does the detector sometimes show more than one carrier?

Because the number genuinely matches more than one format. A sixteen-digit numeric string, for example, fits both a major UK home-delivery carrier and the Canadian post. Listing both is more honest than guessing one, and a real tracking query will resolve which is correct.

Is my tracking number sent anywhere when I use this tool?

No. All the detection runs locally in your browser using JavaScript. Nothing you type is transmitted or stored. If you then choose to track the parcel, that step happens on the carrier or aggregator site you click through to.

What does a "confirmed" result mean exactly?

It means the number matches a format that carries a verification digit, and that digit checks out. This proves the number is well-formed and correctly transcribed. It does not prove a parcel exists under that number; only the carrier's own system can confirm an active shipment.

My number has spaces or lowercase letters. Does that matter?

Not to this tool. It removes spaces and dashes and converts everything to uppercase before matching, so ab 1234 5678 5gb and AB123456785GB are treated identically. Carriers often print numbers with spacing for readability.

Where can I actually track the parcel once I know the carrier?

Use the track link on each result, or go straight to InstantParcels, which accepts a tracking number for USPS, UPS, FedEx, DHL and 600+ carriers and postal operators and finds the right one for you.

Resources

Track your parcel on InstantParcels