CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/npm-jsbarcode

JavaScript barcode generator library that creates various types of 1D barcodes with extensive customization options for both browsers and Node.js environments.

Pending
Quality

Pending

Does it follow best practices?

Impact

Pending

No eval scenarios have been run

SecuritybySnyk

Pending

The risk profile of this skill

Overview
Eval results
Files

code128.mddocs/

CODE128 Barcodes

CODE128 is a high-density linear barcode format that can encode the full ASCII character set. JsBarcode provides comprehensive CODE128 support with automatic mode switching for optimal encoding density and manual mode selection for specific requirements.

Capabilities

Automatic Mode Selection (CODE128AUTO)

The default CODE128 implementation automatically selects the optimal encoding mode (A, B, or C) based on the input data to minimize barcode length.

/**
 * Generate CODE128 barcode with automatic mode selection
 * @param content - Data to encode (full ASCII support)
 * @returns Optimal CODE128 encoding
 */
JsBarcode(element, content, { format: "CODE128" });
// Also accepts: format: "CODE128AUTO"

Usage Examples:

// Mixed alphanumeric - uses optimal mode switching
JsBarcode("#barcode", "Hello123World", { format: "CODE128" });

// Numeric data - automatically uses CODE128C for efficiency
JsBarcode("#barcode", "1234567890", { format: "CODE128" });

// Control characters - automatically handles with appropriate modes
JsBarcode("#barcode", "Data\x01\x02Test", { format: "CODE128" });

CODE128-A Mode

CODE128-A encodes uppercase letters, digits, punctuation, control characters, and special characters. Suitable for data containing control characters or when uppercase-only encoding is required.

/**
 * Generate CODE128-A barcode (uppercase, digits, control chars)
 * @param content - Data to encode (ASCII 0-95 + control chars)
 */
JsBarcode(element, content, { format: "CODE128A" });

Character Set: ASCII 0-95 (control characters, digits, uppercase letters, punctuation)

Usage Examples:

// Uppercase letters and digits
JsBarcode("#barcode", "PRODUCT123", { format: "CODE128A" });

// With control characters
JsBarcode("#barcode", "DATA\x01\x02", { format: "CODE128A" });

// Punctuation and symbols
JsBarcode("#barcode", "ITEM-#123!", { format: "CODE128A" });

CODE128-B Mode

CODE128-B encodes uppercase and lowercase letters, digits, and punctuation. Most commonly used mode for general alphanumeric data.

/**
 * Generate CODE128-B barcode (mixed case alphanumeric)
 * @param content - Data to encode (ASCII 32-127)
 */
JsBarcode(element, content, { format: "CODE128B" });

Character Set: ASCII 32-127 (printable characters including lowercase)

Usage Examples:

// Mixed case text
JsBarcode("#barcode", "Hello World!", { format: "CODE128B" });

// Alphanumeric with symbols
JsBarcode("#barcode", "Product-123@Company", { format: "CODE128B" });

// URLs or paths
JsBarcode("#barcode", "https://example.com/path", { format: "CODE128B" });

CODE128-C Mode

CODE128-C encodes pairs of digits, making it highly efficient for purely numeric data. Each pair of digits is encoded as a single symbol.

/**
 * Generate CODE128-C barcode (numeric pairs)
 * @param content - Numeric data to encode (even number of digits)
 */
JsBarcode(element, content, { format: "CODE128C" });

Character Set: Numeric digits 0-9 (encoded in pairs)

Requirements: Input must contain even number of digits

Usage Examples:

// Even number of digits
JsBarcode("#barcode", "1234567890", { format: "CODE128C" });

// Product codes
JsBarcode("#barcode", "1234567890123456", { format: "CODE128C" });

// Serial numbers
JsBarcode("#barcode", "202501123456", { format: "CODE128C" });

Advanced Features

Function Codes and Special Characters

CODE128 supports special function codes for advanced applications:

// FNC1 for GS1 applications (Application Identifier)
const gs1Data = String.fromCharCode(207) + "01123456789012345";
JsBarcode("#barcode", gs1Data, { format: "CODE128" });

// FNC2 for message append
const appendData = "DATA" + String.fromCharCode(202) + "MORE";
JsBarcode("#barcode", appendData, { format: "CODE128" });

// FNC3 for initialization
const initData = String.fromCharCode(201) + "INIT_DATA";
JsBarcode("#barcode", initData, { format: "CODE128" });

Mode Switching

The automatic mode (CODE128AUTO) intelligently switches between modes within a single barcode:

// Starts with letters (Mode B), switches to numbers (Mode C)
JsBarcode("#barcode", "ABC1234567890DEF", { format: "CODE128" });

// Complex data with optimal mode switching
JsBarcode("#barcode", "PART123\x01DATA456789", { format: "CODE128" });

Validation and Error Handling

// Valid ASCII characters for CODE128
const validData = "Valid ASCII text 123!@#";
JsBarcode("#barcode", validData, { 
  format: "CODE128",
  valid: function(isValid) {
    console.log("CODE128 validation:", isValid); // true
  }
});

// Invalid characters (outside ASCII range)
const invalidData = "Text with unicode: π ∑ ∆";
JsBarcode("#barcode", invalidData, { 
  format: "CODE128",
  valid: function(isValid) {
    if (!isValid) {
      console.log("Invalid characters for CODE128");
    }
  }
});

Character Set Validation

CODE128A Validation

/**
 * Validates data for CODE128-A encoding
 * @param data - String to validate
 * @returns boolean - True if data contains only ASCII 0-95 + function codes
 */
// Internal validation regex: /^[\x00-\x5F\xC8-\xCF]+$/

CODE128B Validation

/**
 * Validates data for CODE128-B encoding  
 * @param data - String to validate
 * @returns boolean - True if data contains only ASCII 32-127 + function codes
 */
// Internal validation regex: /^[\x20-\x7F\xC8-\xCF]+$/

CODE128C Validation

/**
 * Validates data for CODE128-C encoding
 * @param data - String to validate  
 * @returns boolean - True if data contains even number of digits + FNC1
 */
// Internal validation regex: /^(\xCF*[0-9]{2}\xCF*)+$/

Performance Considerations

  • CODE128C is most efficient for purely numeric data (50% space reduction)
  • Automatic mode provides optimal balance of density and compatibility
  • Caching is available for repeated generation of identical barcodes
  • Manual mode selection may be needed for legacy system compatibility

Example Performance Comparison:

// Less efficient - forces CODE128B for numeric data
JsBarcode("#barcode1", "1234567890", { format: "CODE128B" });

// More efficient - uses CODE128C automatically  
JsBarcode("#barcode2", "1234567890", { format: "CODE128" });

// Most efficient - explicitly uses CODE128C
JsBarcode("#barcode3", "1234567890", { format: "CODE128C" });

docs

cli.md

code128.md

configuration.md

ean-upc.md

index.md

industrial-formats.md

tile.json