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

@minescope/mineping

v2.0.1

Published

Ping both Minecraft Bedrock and Java servers.

Readme

mineping

npm version

A simple and efficient JavaScript library for pinging Minecraft servers. It supports both Java and Bedrock editions through a async/await-friendly API.

@minescope/mineping automatically resolves SRV records for Java servers and parses rich status data, including MOTD, player counts, version info, and server icons. Comes with full TypeScript support.

Mirror on my Git

Features

  • Dual Protocol Support: Ping both Java and Bedrock servers with a consistent API.
  • SRV Record Resolution: Automatically resolves SRV records for Java Edition servers, so you don't have to worry about custom ports.
  • Rich Data: Parses the full response from servers, including player samples, favicons, gamemodes, and more.
  • Lightweight: Has only one runtime dependency — debug (used for tracing).

Requirements

Node.js 14 or newer is required

Install

To install mineping, simply run the following command:

npm i @minescope/mineping

API & Usage Examples

The library exports two main functions: pingJava and pingBedrock. Both are asynchronous and return a Promise.

1. Basic Server Ping

Java:

import { pingJava } from "@minescope/mineping";

const data = await pingJava("0.0.0.0");
console.log(data)
{
  version: { name: '1.21.5', protocol: 770 },
  enforcesSecureChat: true,
  description: '§1Welcome to §2My Minecraft Server!',
  players: { max: 20, online: 0 }
}

Bedrock:

import { pingBedrock } from "@minescope/mineping";

const data = await pingBedrock("0.0.0.0");
console.log(data)
{
  edition: 'MCPE',
  name: 'Dedicated Server',
  levelName: 'Bedrock level',
  gamemode: 'Survival',
  version: { protocol: 800, minecraft: '1.21.84' },
  players: { online: 0, max: 10 },
  port: { v4: 19132, v6: 19133 },
  guid: 12143264093420916401n,
  isNintendoLimited: false,
  isEditorModeEnabled: false
}

Loading and configuration the module

CommonJS

mineping is an ESM-only module — you are not able to import it with require(). If you cannot switch to ESM, you can use the async import() function from CommonJS to load mineping asynchronously:

const pingJava = (...args) =>
	import("@minescope/mineping").then((module) => module.pingJava(...args));
const pingBedrock = (...args) =>
	import("@minescope/mineping").then((module) => module.pingBedrock(...args));

Debugging

mineping uses the debug library to provide detailed tracing information, which can be useful for diagnosing connection issues or understanding the library's internal workings.

To enable debug logs, set the DEBUG environment variable when running your script. The library uses two namespaces:

  • mineping:java for the Java Edition pinger.
  • mineping:bedrock for the Bedrock Edition pinger.

Examples

Enable all mineping debug logs:

You can use a wildcard (*) to enable all logs from this library.

DEBUG=mineping:* node your-script.js
DEBUG="mineping:*" node examples/01-basic-ping.js 
  mineping:java pinging Java server hypixel.net with options: {} +0ms
  mineping:java attempting SRV lookup for _minecraft._tcp.hypixel.net with 5000ms timeout +2ms
  mineping:java SRV lookup successful, new target: mc.hypixel.net:25565 +2ms
  mineping:java creating TCP connection to mc.hypixel.net:25565 +0ms
  mineping:java socket connected to mc.hypixel.net:25565, sending packets... +182ms
  mineping:java received 1440 bytes of data, total buffer size is now 1440 bytes +130ms
  mineping:java packet incomplete, waiting for more data +0ms
  mineping:java received 12960 bytes of data, total buffer size is now 14400 bytes +1ms
  mineping:java packet incomplete, waiting for more data +0ms
  mineping:java received 1601 bytes of data, total buffer size is now 16001 bytes +129ms
  mineping:java received raw JSON response +0ms
  mineping:java successfully parsed full response +0ms
  mineping:java cleaning up resources for mc.hypixel.net:25565 +0ms
--- Java Server ---
{
  version: { name: 'Requires MC 1.8 / 1.21', protocol: 47 },
  players: { max: 200000, online: 28654, sample: [] },
  description: '                §aHypixel Network §c[1.8-1.21]\n' +
    '       §6§lSB 0.23 §2§lFORAGING §8§l- §e§lSUMMER EVENT',
  favicon: 'data:image/png;base64,iVBORw0K'... 5738 more characters
}

====================

  mineping:bedrock pinging Bedrock server geo.hivebedrock.network:19132 with 5000ms timeout +0ms
  mineping:bedrock sending Unconnected Ping packet to geo.hivebedrock.network:19132 +1ms
  mineping:bedrock packet: <Buffer 01 c0 01 00 00 00 00 00 00 00 ff ff 00 fe fe fe fe fd fd fd fd 12 34 56 78 19 20 9f 00 e6 ed ef 96> +0ms
  mineping:bedrock received 124 bytes from geo.hivebedrock.network:19132 +104ms
  mineping:bedrock received raw MOTD string: MCPE;BEDWARS + BUILD BATTLE;121;1.0;13074;100001;-4669279440237021648;Hive Games;Survival +0ms
  mineping:bedrock cleaning up resources for geo.hivebedrock.network:19132 +0ms
--- Bedrock Server ---
{
  edition: 'MCPE',
  name: 'BEDWARS + BUILD BATTLE',
  levelName: 'Hive Games',
  gamemode: 'Survival',
  version: { protocol: 121, minecraft: '1.0' },
  players: { online: 13074, max: 100001 },
  port: { v4: undefined, v6: undefined },
  guid: -4669279440237021648n,
  isNintendoLimited: undefined,
  isEditorModeEnabled: undefined
}

PowerShell uses different syntax to set environment variables:

$env:DEBUG="mineping:*";node your-script.js

Acknowledgements

Special thanks to the following projects for inspiration and protocol details:

  • mcping crate for Rust
  • mcping-js library for querying Minecraft Java Edition servers
  • The amazing community at minecraft.wiki for documenting the protocols.