Tracking Number Validation

A modern TypeScript library for validating tracking numbers from 11+ shipping carriers

TypeScript First Zero Dependencies 11+ Carriers Full Test Coverage

Quick Start

Installation

# Using pnpm (recommended)
pnpm add tracking-number-validation

# Using npm
npm install tracking-number-validation

# Using yarn
yarn add tracking-number-validation

Basic Usage

import { getCourier, isValid, getTrackingUrl } from 'tracking-number-validation';

// Identify courier
const courier = getCourier('1Z9999W99999999999');
console.log(courier); // ['ups']

// Validate tracking number
const valid = isValid('1Z9999W99999999999');
console.log(valid); // true

// Get tracking URL
const url = getTrackingUrl('1Z9999W99999999999');
console.log(url); // UPS tracking URL

Interactive Demo

Test Tracking Numbers

Try these sample tracking numbers:

Results

Enter a tracking number to see validation results...

Feature Showcase

Generate Tracking Numbers

Generate valid tracking numbers for testing purposes.

Bulk Validation

Validate multiple tracking numbers at once.

Pattern Injection

Add custom patterns to existing couriers.

Supported Carriers

📦

UPS

United Parcel Service

1Z tracking numbers

🚚

FedEx

Federal Express

12-22 digit formats

📮

USPS

United States Postal Service

Various formats including 95xx

✈️

DHL

DHL Express

Express & eCommerce

📱

Amazon

Amazon Logistics

TBA, TBC, TBM, TBD formats

🚛

OnTrac

OnTrac Shipping

C/D prefixes, LaserShip merged

🇨🇦

Canada Post

Canada Post Corporation

13-16 digit formats

🇨🇳

China Post

China Post Corporation

CN suffix formats

🇦🇺

Australia Post

Australia Post Corporation

AU suffix & TM formats

🇬🇧

Royal Mail

Royal Mail Group

GB suffix formats

🔧

Extensible

Add Custom Patterns

Inject your own regex patterns

Code Examples

TypeScript/ES Modules

import { 
  getCourier, 
  isValid, 
  getTrackingUrl,
  generateTrackingNumber,
  getDetailedCourierInfo 
} from 'tracking-number-validation';

// Basic validation
const trackingNumber = '1Z9999W99999999999';
const couriers = getCourier(trackingNumber);
console.log(couriers); // ['ups']

// Check validity
const isValidNumber = isValid(trackingNumber);
console.log(isValidNumber); // true

// Get tracking URL
const url = getTrackingUrl(trackingNumber);
console.log(url); // UPS tracking URL

// Generate test tracking number
const generated = generateTrackingNumber('ups');
console.log(generated); // Valid UPS tracking number

// Get detailed information
const details = getDetailedCourierInfo(trackingNumber);
console.log(details); 
// [{ courier: 'ups', valid: true, tracking_url: '...' }]

CommonJS

const { 
  getCourier, 
  isValid, 
  getTrackingUrl,
  generateTrackingNumber 
} = require('tracking-number-validation');

// Validate tracking number
const trackingNumber = '9400100000000000000000';
const courier = getCourier(trackingNumber);
console.log(courier); // ['usps']

// Check if specific courier
const isUSPS = require('tracking-number-validation')
  .isCourier(trackingNumber, 'usps');
console.log(isUSPS); // true

// Generate multiple numbers
const multiple = require('tracking-number-validation')
  .generateMultipleTrackingNumbers('fedex', 3);
console.log(multiple); // Array of FedEx tracking numbers

// Inject custom pattern
const success = require('tracking-number-validation')
  .injectPatterns('ups', /CUSTOM\\d{10}/);
console.log(success); // true