meowping 2.0.7

A flexible ping utility Tool written in Rust, that is focused on being size efficient and fast.
meowping-2.0.7 is not a library.

MeowPing

Mirror (Read-only): A read-only mirror of this repository is available at codeberg.org/enty/meowping.

MeowPing is a command-line utility for testing network connectivity using ICMP echo requests or TCP connections. It provides similar functionality to traditional ping utilities but with a touch of whimsy and color. MeowPing supports both domain names and IP addresses, allowing users to check the availability and responsiveness of network hosts. Don't forget to leave a ⭐ :D

Features

  • ICMP echo request-based network testing.
  • TCP connection-based network testing.
  • UDP port probing (response = open, Port Unreachable = closed, silence = open|filtered).
  • Multi-port probing of several ports (and ranges) in one run, across single hosts, multiple hosts, and subnets.
  • HTTP(S) request-based network testing.
  • Colorful and visually appealing output, now for the response time as well.
  • Display of connection statistics including success rate, minimum, maximum, and average connection times.
  • Works with IPv4, IPv6 and Domains.

Third-Party Services

Disclaimer: For TCP and UDP connections, MeowPing retrieves ASN/organization data from https://ipinfo.io. Use -a/--no-asn to disable these API calls and use static data instead.

Usage

MeowPing offers a simple command-line interface with various options:

meowping <destination> [OPTIONS]

ARGS:
    <destination>           Specify the destination(s) to ping (can be an IP address, domain name, or a comma-separated list or [list,of,hosts])

OPTIONS:
    -h, --help              Prints the Help Menu
    -p, --port <port(s)>    Port to probe (default: ICMP). Accepts a single port, a comma list (53,80,443), or a range (20-25)
    -s, --http              Check if the destination URL is online via HTTP/S
    -u, --udp               Probe a UDP port instead of using TCP (requires -p)
    -t, --timeout <ms>      Set the timeout for each connection attempt in milliseconds (default: 1000ms)
    -c, --count <count>     Set the number of connection attempts (default: 65535)
    -m, --minimal           Changes the Prints to be more Minimal
    -a, --no-asn            Disable ASN/organization lookups (use static data)
    -C, --config [path]     Load settings from a config file (default: meowping.conf next to the executable)

Example Usage

# Single host
./meowping 8.8.8.8 -p 53

# Multiple hosts (comma-separated)
./meowping 1.1.1.1,8.8.8.8,example.com -p 53

# Multiple hosts (bracketed)
./meowping [1.1.1.1,8.8.8.8,example.com] -p 53

# Subnet scan
./meowping 94.249.228.0/24 -p 22
# UDP port probe (DNS / NTP get protocol-aware payloads; other ports send a 1-byte datagram)
./meowping 1.1.1.1 -p 53 -u
./meowping time.google.com -p 123 -u -c 3
./meowping 94.249.228.0/24 -p 53 -u
# Multi-port probe: comma list and/or ranges, across a host, multiple hosts, or a subnet
./meowping 1.1.1.1 -p 53,80,443
./meowping example.com -p 22,80,443,8080
./meowping 192.168.1.1 -p 20-25
./meowping 1.1.1.1,8.8.8.8 -p 53,443
./meowping 192.168.1.0/28 -p 80,443
./meowping 1.1.1.1 -p 53,80,443 -u

-p/--port accepts a single port, a comma-separated list, and start-end ranges (e.g. 20-25); it expands and dedups them, then probes the host × port matrix concurrently (32 at a time). Each port is reported on its own line and an aggregate Ports responsive: X/Y summary follows. Subnet × port matrices are capped at 4096 probes to keep large ranges from running away.

UDP is connectionless, so the probe resolves into three states: a response means open, an ICMP Port Unreachable means closed, and silence within the timeout is reported as open|filtered (the service may be up but ignoring an unknown payload, the port may be filtered, or the datagram may simply be lost). MeowPing uses a connected socket so the kernel surfaces that ICMP error as a definitive "closed" without needing raw sockets or privileges.

Disable ASN lookups for privacy:

./meowping 8.8.8.8 -p 53 -a

Config File

Place a meowping.conf next to the executable (or pass --config /path/to/file.conf) to set persistent defaults and custom HTTP headers.

# meowping.conf

[settings]
minimal = true
no_asn  = false

[headers]
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.9
  • Both sections are optional.
  • [settings] supports minimal and no_asn — CLI flags always take precedence.
  • [headers] replaces the built-in defaults for -s/--http checks entirely. Host and Connection: close are always added automatically.
  • Blank lines and lines starting with # are ignored.

For Linux users to get ICMP working.

sudo setcap cap_net_raw+ep ./meowping

For macOS Users Installation

brew tap Entytaiment25/meowping

brew install meowping

Run meowping with elevated privileges using sudo to enable ICMP functionality

sudo ./meowping

Preview

Preview

License

This project is MIT licensed. You're free to use, modify, and distribute it, but please provide attribution to the original author if you incorporate this code into your project. This supports open-source and recognizes contributors' work.