Is npm Down? How to Check npm Registry Status Right Now

npm install failing, ECONNREFUSED errors, or the registry timing out? Here's how to check if npm is down right now, what errors mean, how to install packages offline, and how to set up CI/CD retry logic so a registry blip doesn't break your builds.

By Statusfield Team · Engineering··8 min read

Check current npm status: statusfield.com/services/npm

npm's registry hosts over 2.5 million packages and serves billions of download requests per week. When it degrades, npm install hangs, CI pipelines stall, and deploys fail — often with cryptic network errors that look like your connection or the package itself is broken. Here's how to confirm it's npm and not you, and what to do while you wait.

Is npm Down Right Now?

Check these in order, fastest first:

  1. Statusfield — npm status — real-time monitoring of npm's registry health, with incident history so you can see when the issue started.
  2. npm's official status pagestatus.npmjs.org — lists active incidents across the registry, CDN, and website. npm uses Atlassian Statuspage.
  3. Twitter/X — search npm down or npm registry sorted by Latest. Developers report install failures in real time, often before the status page updates.
  4. Your terminal — run npm ping — if it returns Ping success: {}, the registry is reachable from your machine. If it hangs or throws ECONNREFUSED, the registry or your connection is broken.

If npm ping succeeds but npm install still fails, the problem is usually a specific package, a corrupt lockfile, or a scoped registry configuration — not a global npm outage.

npm Components That Can Fail Independently

npm isn't a single endpoint — the registry, CDN, metadata API, and website are separate services:

ComponentWhat breaks when it fails
Registry APInpm install fails; npm view <pkg> returns errors; npm publish fails
CDN (package tarballs)Metadata resolves but downloading packages times out or returns 503
Website (npmjs.com)Package search and documentation pages unreachable; doesn't affect npm install
npm CLI / update servernpm update checks fail; no impact on installs from a working registry
Scoped registry (private)@company/pkg installs fail if your private registry (JFrog, Verdaccio, GitHub Packages) is down

A CDN failure means metadata fetches work but tarball downloads time out. A registry API failure means both metadata and downloads fail. The status page breaks down which component is affected.

Common npm Error Messages During an Outage

ErrorLikely cause
npm ERR! code ECONNREFUSEDregistry.npmjs.org unreachable — port 443 blocked or registry down
npm ERR! code ETIMEDOUTRegistry reachable but not responding — overloaded CDN or degraded endpoint
npm ERR! code EAI_AGAINDNS resolution failure — either a local DNS issue or npm's DNS is degraded
npm ERR! code E503Registry returned HTTP 503 — service temporarily unavailable
npm ERR! code E429Rate limited — typically from CI jobs hitting the registry too aggressively
npm ERR! network socket hang upCDN dropped the connection mid-download — retry usually fixes it
npm ERR! Unexpected end of JSON inputCorrupt metadata response — can happen during partial registry outages
npm ERR! code CERT_HAS_EXPIREDnpm's certificate expired (rare) or your system clock is wrong
npm WARN registry Using stale package data from the cacheRegistry unreachable, npm falling back to local cache

How to Tell npm Outage From Your Own Network

Before blaming npm, rule out local issues:

# 1. Check if the registry is reachable:
npm ping
# Expected: "Ping success: {}"
 
# 2. Test raw connectivity to the registry:
curl -I https://registry.npmjs.org/react
 
# 3. Check your npm proxy/registry config:
npm config get registry
# Should be: https://registry.npmjs.org/ (unless you've set a custom mirror)
 
# 4. Try a known package to isolate the issue:
npm view lodash version
# Should return a version number like "4.17.21"

If npm ping works but a specific package fails, the issue is that package (unpublished, yanked, or corrupt) — not the registry.

If you're on a corporate network, your company's proxy or firewall may be blocking npm's registry or CDN endpoints. Try from a mobile hotspot to confirm.

Offline Installs: Using Verdaccio as a Local Cache

When npm is down and you need to keep working, a local registry proxy like Verdaccio lets you install from a cached copy of packages you've used before.

Quick setup (1 minute)

# Install Verdaccio globally:
npm install -g verdaccio
 
# Start it (runs on http://localhost:4873):
verdaccio &
 
# Point npm at your local registry for this session:
npm set registry http://localhost:4873
 
# Install packages — Verdaccio proxies to npm and caches locally:
npm install react
 
# When npm recovers, restore your registry:
npm set registry https://registry.npmjs.org/

Once Verdaccio has cached a package, future npm install calls use the cache even if the public registry is down. Particularly useful in CI environments — set Verdaccio as the registry in your pipeline and you get both speed (cache hits) and resilience (outage protection).

Alternative: use npm's built-in cache

npm caches tarballs locally in ~/.npm. If you've installed a package before, you can force install from cache:

# Install using only cached data (no network):
npm install --prefer-offline
 
# Or strictly from cache with no fallback:
npm install --offline

--offline fails if a package isn't cached. --prefer-offline falls back to the network if the cache is stale.

CI/CD Retry Configuration

npm registry blips cause CI failures that have nothing to do with your code. Set up retry logic so transient outages don't break your pipeline.

GitHub Actions

# .github/workflows/ci.yml
- name: Install dependencies
  run: npm ci
  env:
    # Retry npm install up to 3 times on network errors:
    NPM_CONFIG_FETCH_RETRIES: 3
    NPM_CONFIG_FETCH_RETRY_MINTIMEOUT: 5000
    NPM_CONFIG_FETCH_RETRY_MAXTIMEOUT: 60000

Or use the actions/setup-node action with caching — it caches ~/.npm between runs, so most installs skip the registry entirely:

- uses: actions/setup-node@v4
  with:
    node-version: '20'
    cache: 'npm'

.npmrc configuration

Set retry behavior globally via .npmrc (commit this to your repo to apply it in CI):

# .npmrc
fetch-retries=3
fetch-retry-mintimeout=5000
fetch-retry-maxtimeout=60000
fetch-timeout=300000

npm CI with lockfile integrity

In CI, always use npm ci instead of npm install. npm ci requires a package-lock.json and installs exact versions — faster, more deterministic, and safer for production builds:

# In CI: always prefer npm ci
npm ci
 
# Use --prefer-offline to use cache when the registry is slow:
npm ci --prefer-offline

How to Get Instant npm Outage Alerts

npm registry outages hit hardest when you have a deploy queued or a hotfix to ship. Monitoring lets you know immediately — so you can hold the deploy, flip to a mirror, or start troubleshooting before the whole team starts asking what's broken.

Monitor npm on Statusfield — Statusfield watches npm's registry health continuously and alerts you the instant the status changes. Route alerts to:

  • Slack or Discord — drop npm status alerts into your engineering channel so the whole team knows the moment the registry goes down.
  • Email or Telegram — for a personal heads-up when installs start failing in CI.
  • Webhook — pipe status changes into PagerDuty, OpsGenie, or your own alerting pipeline.

If you run a team deploying to production, knowing npm is degraded before you kick off a deploy saves the emergency scramble.

Start monitoring npm on Statusfield → — free, no credit card required.


Frequently Asked Questions

Is npm down right now?

Check statusfield.com/services/npm for real-time npm registry status, or status.npmjs.org for npm's official status page. Run npm ping in your terminal to test registry reachability directly.

Why is npm install failing with ECONNREFUSED?

ECONNREFUSED means npm couldn't connect to the registry at all. Run npm ping to verify — if it also fails, the registry is either down or your network is blocking port 443 to registry.npmjs.org. Check status.npmjs.org and try from a different network to isolate the cause.

Can I install npm packages without internet access?

Yes. If you've previously installed the packages, run npm install --offline or npm install --prefer-offline to use npm's local cache (~/.npm). For team-wide offline caching, set up Verdaccio as a local registry proxy — it caches packages and serves them even when the public registry is unreachable.

How do I stop npm outages from breaking my CI pipeline?

Set fetch-retries=3 in your .npmrc (or via NPM_CONFIG_FETCH_RETRIES=3 env var), cache the npm cache directory between CI runs (GitHub Actions: cache: 'npm' in actions/setup-node), and use npm ci --prefer-offline to hit the cache first. This makes transient registry blips invisible to your pipeline.

Is it npm's registry or my private scoped registry that's down?

Check by running npm view <public-package> version (e.g., npm view lodash version). If that works but npm install @company/package fails, your private or scoped registry is the issue — not npm's public registry. Check the registry config with npm config get registry and npm config list.

Know the moment a tool you depend on goes down

Statusfield watches 7,000+ services your business depends on and alerts you the moment they break.

Free plan · No credit card