JavaScript Navigator productSub Property

Beginner
5 min read
Updated: Nov 2026
3 examples
Property

Definition

navigator.productSub is a read-only string that returns either "20030107" or "20100101" (MDN). It looks like a date, but treat it as a fixed compatibility token.

Read the notes below before you rely on this property. Prefer feature detection when support is limited.

Syntax

Use navigator.productSub. Start with this line.

JavaScript
navigator.productSub
CallWhat it does
navigator.productSubPrimary signature.

Built into the browser. Read navigator.productSub on Navigator — no import required.

Library declarations
JavaScript
navigator.productSub

Parameters

This member has no parameters beyond those shown in the signature.

Return Value

Return ValueDescription
*The current value of navigator.productSub.

JavaScript Examples

Example 1 — Read navigator.productSub

Log the value in the current browser (MDN demo style).

JavaScript
console.log("productSub: " + navigator.productSub);
// e.g. "productSub: 20030107"
Try It Yourself

How It Works

  1. Read the property. No arguments — just access navigator.productSub.
  2. Get a string. Typically one of the two MDN tokens.
  3. Looks like a date. Format is YYYYMMDD, but meaning is compatibility.
  4. Read-only. You inspect the value; you do not assign to it.

Example 2 — Classify the Known Tokens

Label the value for learning — without treating it as a browser ID.

JavaScript
const s = navigator.productSub;
let note = "other / unexpected";
if (s === "20030107") note = "Chrome/Safari-style token (MDN)";
if (s === "20100101") note = "Firefox-style token (MDN)";
if (s === undefined) note = "legacy IE-style missing value";

console.log(s);
console.log(note);
console.log("Use for sniffing? false");
Try It Yourself

How It Works

  1. Read once. Store productSub in a variable.
  2. Match MDN notes. Map the two known strings to historical families.
  3. Stay humble. Labels are for learning — not production branching.
  4. Close the loop. Explicitly mark sniffing as a bad idea.

Example 3 — Prefer Feature Detection

Test the capability instead of reading date-like tokens.

JavaScript
// ✗ brittle: if (navigator.productSub === "20100101") { … }

// ✓ reliable: test the API
if ("geolocation" in navigator) {
  console.log("Geolocation API available");
} else {
  console.log("Geolocation API missing");
}

console.log("productSub (info only): " + navigator.productSub);
Try It Yourself

How It Works

  1. Skip sniffing. Tokens can be shared, spoofed, or change.
  2. Test the feature. "geolocation" in navigator answers the real question.
  3. Fallback path. Handle missing APIs without guessing the browser.
  4. Optional log. Keep productSub for learning only.

Browser Support

navigator.productSub is Baseline Widely available (MDN: since July 2015). Modern browsers return one of two fixed tokens; legacy IE returned undefined.

✓ Baseline · Widely available

Navigator.productSub

Read-only compatibility string: "20030107" (Chrome/Safari) or "20100101" (Firefox). Useful for learning — not for brand sniffing or dating the browser build.

98% Modern browser support
Google Chrome Returns "20030107"
Full support
Mozilla Firefox Returns "20100101"
Full support
Apple Safari Returns "20030107"
Full support
Microsoft Edge Chromium-style token
Full support
Opera Chromium-style token
Full support
Internet Explorer Returned undefined (legacy)
Partial
productSub Excellent

Bottom line: Available in modern browsers. Read it for demos; decide features with capability checks, not date-like tokens.

Frequently Asked Questions

MDN: either the string "20030107" or "20100101". Chrome and Safari return "20030107"; Firefox returns "20100101". Internet Explorer returned undefined.
No. MDN marks it Baseline Widely available (since July 2015). It is not Deprecated, Experimental, or Non-standard — but it is a legacy compatibility value, not a useful build date.
Do not. Other browsers may change, spoof, or share similar labels. Prefer feature detection for real capabilities instead of sniffing productSub.
It looks like YYYYMMDD, but treat it as a fixed compatibility token, not a trustworthy product release date.
No. It is a read-only Navigator property. You read it; you do not assign a new value.
product always returns "Gecko" in conforming browsers. productSub returns one of two date-like strings that differ by engine family historically — still not reliable for modern sniffing.

Next: scheduling

Continue with the next Navigator property in the JavaScript guide.

scheduling tutorial →

About the author

Mari Selvan M P
Mari Selvan M P 🔗

Developer, cloud engineer, and technical writer

  • Experience 12 years building web and cloud systems
  • Focus Full Stack Development, AWS, and Developer Education

I write practical tutorials so students and working developers can learn by doing—from databases and APIs to deployment on AWS.

8 people found this page helpful