{"adoption": {"forks": 88, "observed_at": "2026-08-28T04:04:29.499380+00:00", "stars": 1357}, "canonical_url": "https://ross.abutalabs.com/products/is-online", "card": {"archived": false, "artifact_type": "library", "description": "Check if the internet connection is up", "domain": ["networking", "web-development", "developer-tools"], "enriched": true, "function": ["http-client", "networking", "developer-tools"], "health_score": 67, "homepage": null, "language": "JavaScript", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["sindresorhus/is-online"], "name": "sindresorhus/is-online", "platform": ["browser", "cross-platform"], "pushed_at": "2025-11-15T09:12:15+00:00", "repo": "sindresorhus/is-online", "stars": 1357, "tags": ["connectivity-check", "internet-detection", "online-status", "ping-alternative", "captive-portal", "nodejs"], "topics": ["internet", "internet-connection", "nodejs", "javascript", "browser", "connectivity", "detect", "network", "online", "ping", "reachability"], "urls": [], "use_cases": ["check if the internet connection is up", "detect real internet connectivity in nodejs", "verify online status before making api calls", "check ipv6 connectivity", "detect captive portal internet access", "show online/offline indicator in a web app", "wait for network reconnection after going offline"], "what_it_is": "A JavaScript library that checks whether the internet connection is actually up, unlike navigator.onLine which only reports local network status. It runs parallel connectivity checks (HTTPS endpoints, DNS queries, captive portal test) in Node.js and the browser and resolves to a boolean.", "when_to_avoid": ["you only need local network interface status (navigator.onLine suffices)", "you need continuous connection monitoring rather than on-demand checks", "you cannot tolerate outbound requests to third-party endpoints", "you need low-level socket or ping-based diagnostics"], "when_to_choose": ["you need to know if the internet is truly reachable, not just the local network", "you want a maintained, promise-based connectivity check with timeout and abort support", "you need the same check to work in both Node.js and bundled browser code", "you need to assert IPv4 or IPv6 connectivity specifically"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/is-online", "repo": "sindresorhus/is-online", "role": "main", "score": 59}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:29.499380+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:41:52.172362+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "feb93dd722547b5834e942f6432c1d1eee6f84e78fa59058e45df5d640bdedee", "fetched_at": "2026-08-28T04:04:29.499380+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sindresorhus/is-online"}, {"content_hash": "a43a322e50974aed47a56af090dc0502c07cc9070bd81bc4f6f37610306e9da4", "fetched_at": "2026-08-29T12:00:23.772081+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/is-online"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:29.499380+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:41:52.172362+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "feb93dd722547b5834e942f6432c1d1eee6f84e78fa59058e45df5d640bdedee", "fetched_at": "2026-08-28T04:04:29.499380+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sindresorhus/is-online"}, {"content_hash": "a43a322e50974aed47a56af090dc0502c07cc9070bd81bc4f6f37610306e9da4", "fetched_at": "2026-08-29T12:00:23.772081+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/is-online"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:41:52.172362+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "feb93dd722547b5834e942f6432c1d1eee6f84e78fa59058e45df5d640bdedee", "fetched_at": "2026-08-28T04:04:29.499380+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sindresorhus/is-online"}, {"content_hash": "a43a322e50974aed47a56af090dc0502c07cc9070bd81bc4f6f37610306e9da4", "fetched_at": "2026-08-29T12:00:23.772081+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/is-online"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:04:29.499380+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:29.499380+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:29.499380+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:41:52.172362+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "feb93dd722547b5834e942f6432c1d1eee6f84e78fa59058e45df5d640bdedee", "fetched_at": "2026-08-28T04:04:29.499380+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sindresorhus/is-online"}, {"content_hash": "a43a322e50974aed47a56af090dc0502c07cc9070bd81bc4f6f37610306e9da4", "fetched_at": "2026-08-29T12:00:23.772081+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/is-online"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:29.499380+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:29.499380+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:41:52.172362+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "feb93dd722547b5834e942f6432c1d1eee6f84e78fa59058e45df5d640bdedee", "fetched_at": "2026-08-28T04:04:29.499380+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sindresorhus/is-online"}, {"content_hash": "a43a322e50974aed47a56af090dc0502c07cc9070bd81bc4f6f37610306e9da4", "fetched_at": "2026-08-29T12:00:23.772081+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/is-online"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:29.499380+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:29.499380+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:29.499380+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:41:52.172362+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "feb93dd722547b5834e942f6432c1d1eee6f84e78fa59058e45df5d640bdedee", "fetched_at": "2026-08-28T04:04:29.499380+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sindresorhus/is-online"}, {"content_hash": "a43a322e50974aed47a56af090dc0502c07cc9070bd81bc4f6f37610306e9da4", "fetched_at": "2026-08-29T12:00:23.772081+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/is-online"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:29.499380+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:29.499380+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:41:52.172362+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "feb93dd722547b5834e942f6432c1d1eee6f84e78fa59058e45df5d640bdedee", "fetched_at": "2026-08-28T04:04:29.499380+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sindresorhus/is-online"}, {"content_hash": "a43a322e50974aed47a56af090dc0502c07cc9070bd81bc4f6f37610306e9da4", "fetched_at": "2026-08-29T12:00:23.772081+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/is-online"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:41:52.172362+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "feb93dd722547b5834e942f6432c1d1eee6f84e78fa59058e45df5d640bdedee", "fetched_at": "2026-08-28T04:04:29.499380+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sindresorhus/is-online"}, {"content_hash": "a43a322e50974aed47a56af090dc0502c07cc9070bd81bc4f6f37610306e9da4", "fetched_at": "2026-08-29T12:00:23.772081+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/is-online"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:41:52.172362+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "feb93dd722547b5834e942f6432c1d1eee6f84e78fa59058e45df5d640bdedee", "fetched_at": "2026-08-28T04:04:29.499380+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sindresorhus/is-online"}, {"content_hash": "a43a322e50974aed47a56af090dc0502c07cc9070bd81bc4f6f37610306e9da4", "fetched_at": "2026-08-29T12:00:23.772081+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/is-online"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:41:52.172362+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "feb93dd722547b5834e942f6432c1d1eee6f84e78fa59058e45df5d640bdedee", "fetched_at": "2026-08-28T04:04:29.499380+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sindresorhus/is-online"}, {"content_hash": "a43a322e50974aed47a56af090dc0502c07cc9070bd81bc4f6f37610306e9da4", "fetched_at": "2026-08-29T12:00:23.772081+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/is-online"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 52, "longevity": 100, "rhythm": 45}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4366, "days_push": 291, "days_rel": 291, "gap_med": 32.5, "n_releases_24m": 3}, "score": 59, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}