npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

statushttp

v1.0.4

Published

A library for working with HTTP status codes.

Downloads

5

Readme

HTTP Status Codes (statushttp)

A JavaScript library for working with HTTP status codes.

All status codes are taken from the IANA Status Code Registry.

The library works both in the front-end (VanillaJS) and the back-end (NodeJS), supporting a variety of imports. It can also be used as a command-line tool to work with HTTP status codes.

Installation

Install it via NPM.

# Local
npm i statushttp

# Global
npm i -g statushttp

Quick Start

const { sc } = require('statushttp');
// Or import { sc } from 'statushttp'; for modules

// Passing case-insensitive text with spaces
console.log(sc('not found').Code); // 404
console.log(sc(201).Desc); // "Created"

// Identifier
console.log(sc(405).Text); // "METHOD_NOT_ALLOWED"

Importing

  • CommonJS
    const { statusCode, statusText, ... } = require('statushttp');
  • ES6
    import { statusCode, statusText, ... } from 'statushttp';
  • AMD (require.js)
    require(['main.js'], () => {
      // Assuming path for 'statushttp' configured at 'node_modules/statushttp/statushttp' inside main.js
    	require(['statushttp'], ({
    		statusCode,
    		statusText,
    		...
    	}) => {
    		...
    	});
    });
  • HTML + VanillaJS
    <!-- Minified -->
    <script src='node_modules/statushttp/statushttp.min.js'></script>
    
    <!-- Not minified -->
    <script src='node_modules/statushttp/statushttp.js'></script>
    
    <script>
      	// statusText, statusCode, et cetera, are accessible now.
    </script>

List of Identifiers Used

The following identifiers are used in statushttp to identify various HTTP statuses.

| Identifier | Code | | ------------------------------------------ | --- | | CONTINUE | 100 | | SWITCHING_PROTOCOLS | 101 | | PROCESSING | 102 | | EARLY_HINTS | 103 | | OK | 200 | | CREATED | 201 | | ACCEPTED | 202 | | NON_AUTHORITATIVE_INFORMATION | 203 | | NO_CONTENT | 204 | | RESET_CONTENT | 205 | | PARTIAL_CONTENT | 206 | | MULTI_STATUS | 207 | | ALREADY_REPORTED | 208 | | IM_USED | 226 | | MULTIPLE_CHOICES | 300 | | MOVED_PERMANENTLY | 301 | | FOUND | 302 | | SEE_OTHER | 303 | | NOT_MODIFIED | 304 | | USE_PROXY | 305 | | UNUSED | 306 | | TEMPORARY_REDIRECT | 307 | | PERMANENT_REDIRECT | 308 | | BAD_REQUEST | 400 | | UNAUTHORIZED | 401 | | PAYMENT_REQUIRED | 402 | | FORBIDDEN | 403 | | NOT_FOUND | 404 | | METHOD_NOT_ALLOWED | 405 | | NOT_ACCEPTABLE | 406 | | PROXY_AUTHENTICATION_REQUIRED | 407 | | REQUEST_TIMEOUT | 408 | | CONFLICT | 409 | | GONE | 410 | | LENGTH_REQUIRED | 411 | | PRECONDITION_FAILED | 412 | | PAYLOAD_TOO_LARGE | 413 | | URI_TOO_LONG | 414 | | UNSUPPORTED_MEDIA_TYPE | 415 | | RANGE_NOT_SATISFIABLE | 416 | | EXPECTATION_FAILED | 417 | | MISDIRECTED_REQUEST | 421 | | UNPROCESSABLE_ENTITY | 422 | | LOCKED | 423 | | FAILED_DEPENDENCY | 424 | | TOO_EARLY | 425 | | UPGRADE_REQUIRED | 426 | | PRECONDITION_REQUIRED | 428 | | TOO_MANY_REQUESTS | 429 | | REQUEST_HEADER_FIELDS_TOO_LARGE | 431 | | UNAVAILABLE_FOR_LEGAL_REASONS | 451 | | INTERNAL_SERVER_ERROR | 500 | | NOT_IMPLEMENTED | 501 | | BAD_GATEWAY | 502 | | SERVICE_UNAVAILABLE | 503 | | GATEWAY_TIMEOUT | 504 | | HTTP_VERSION_NOT_SUPPORTED | 505 | | VARIANT_ALSO_NEGOTIATES | 506 | | INSUFFICIENT_STORAGE | 507 | | LOOP_DETECTED | 508 | | NOT_EXTENDED | 510 | | NETWORK_AUTHENTICATION_REQUIRED | 511 |

Usage (JavaScript)

The following objects are accessible from statushttp:

  • statusCode : Textual identifiers mapped to numeric codes.
  • statusText : Numeric codes mapped to textual identifiers.
  • statusDesc : User-friendly status messages/descriptions.
  • statusClass : Enumerations for status classes.
  • StatusCode : A class implementation for status codes to provide ease in working with status codes.
  • sc : An alias for the StatusCode class constructor.

Examples:

console.log(statusCode.NOT_FOUND); // 404
console.log(statusText[502]); // BAD_GATEWAY
console.log(statusDesc[301]); // Moved Permanently
console.log(statusClass.SUCCESS); // 2

The StatusCode class

The StatusCode class provides functionality to facilitate working with HTTP status codes.

The class itself is inherited from String, and behaves as a user-friendly message string by default.

Constructor

The constructor receives one parameter, which may be a number representing the status code, or the status text (case-insensitive, with or without the hyphens and parentheses).

Examples:

let   successStatus = new StatusCode(200);
      successStatus = sc(200); // Using the alias
const createdStatus = sc('created');
const continueStatus = sc('ConTinUe');

Object Properties

  • Code : The numerical code for the status.
  • Text : A textual identifier for the status.
  • Desc : A user-friendly status message.
  • Class : The status class enumeration for the status (can be matched from statusClass properties).

Examples:

  • console.log(successStatus.Text); // OK
    
    console.log(createdStatus); // Created
    console.log(createdStatus.Code); // 201
    
    console.log(continueStatus.Desc); // Continue
    console.log(continueStatus.Class); // 1

Usage (Command-Line)

statushttp can directly be used from the command-line if installed globally. Alterntively, in a project-specific installation, it may be executed using npx.

statushttp <value> [options] # Global installation
npx statushttp <value> [options] # Local installation

The value here may be a number representing the status code, or the status text (case-insensitive, with or without the hyphens and parentheses).

Even if value contains spaces, it doesn't need to be sent as one parameter enclosed in quotes.

Options: | Option | Description | | --- | --- | | -l, --list | Show all status codes. | | -?, --help | Show help. | | -v, --version | Displays the version. |

Examples:

> statushttp ok

Status Code: 200
Textual Identifier: OK
Message: OK
Class: SUCCESS

> statushttp 304

Status Code: 304
Textual Identifier: NOT_MODIFIED
Message: Not Modified
Class: REDIRECTIONAL

> statushttp temporary redirect

Status Code: 307
Textual Identifier: TEMPORARY_REDIRECT
Message: Temporary Redirect
Class: REDIRECTIONAL

> statushttp 'not found'

Status Code: 404
Textual Identifier: NOT_FOUND
Message: Not Found
Class: CLIENT_ERROR

> statushttp --list

┌──────┬─────────────────────────────────┐
│ Code │ Message                         │
├──────┼─────────────────────────────────┤
│ 100  │ Continue                        │
├──────┼─────────────────────────────────┤
│ 101  │ Switching Protocols             │
├──────┼─────────────────────────────────┤
│ ...  │ ...                             │
├──────┼─────────────────────────────────┤
│ 510  │ Not Extended                    │
├──────┼─────────────────────────────────┤
│ 511  │ Network Authentication Required │
└──────┴─────────────────────────────────┘

Examples

  • An Express server:
    const express = require('express');
    const cors = require('cors');
    const { statusCode, statusDesc } = require('statushttp');
      
    const app = express();
      
    app.use(cors());
      
    app.route('/*')
    .all((req, res) => {
    	res.status(statusCode.NOT_FOUND).end(statusDesc[statusCode.NOT_FOUND]);
    });
      
    app.listen(5000);
  • A React application:
    import react, { useState } from 'react';
    import axios from 'axios';
    import { sc } from 'statushttp';
      
    const App = () => {
      const [resp, setResp] = useState(null);
      
      if (resp == null) {
        axios.get('http://localhost:5000')
          .then(r => setResp(r))
          .catch(e => setResp(e.response));
      }
      
      return <h1>{sc(resp?.status || 200)}</h1>;
    };
      
    export default App;

Development

  • Clone the Git repository.
    git clone https://github.com/paramsiddharth/statushttp.git
  • Install the dependencies.
    cd statushttp
    npm ci
  • Install the development code as a global module.
    npm i -g .
  • Build the ESM wrapper and the minified form of the development code.
    npm run build
  • Test the library.
    npm test
    Test with your own values.
    cd tests
    node test 'service unavailable'
    Test the minified web version by running tests/Web.html.

Contribution

Contributions are welcome via GitHub.

  • Raise issues via GitHub.
  • Fork the repository.
  • Clone the fork.
  • Setup the development environment as described above.
  • Commit and push changes to the forked repository.
  • Create a pull request.

Made with ❤ by Param.