A tiny IPv4 UDP NAT type tester for macOS and Windows.
Identify the current network's NAT behavior and see what it means for direct connections.
Download the latest release · 简体中文
The latest GitHub Release provides:
NAT-Moe-macOS-Universal-v0.1.14.zip— one app for Apple Silicon and Intel Macs.NAT-Moe-Windows-x64-Portable-v0.1.14.exe— one portable Windows executable.SHA256SUMS.txt— SHA-256 checksums for both downloads.
The macOS build is ad-hoc signed and not notarized. The Windows executable is unsigned. macOS Gatekeeper or Windows SmartScreen may warn on first launch. Download only from this repository's Releases page and verify the files with SHA256SUMS.txt.
On macOS, right-click the app and choose Open. If it is still blocked, use System Settings → Privacy & Security → Open Anyway. On Windows, choose More info → Run anyway only after the checksum matches.
- Reports
Open / Public IP,Public IP / Filtered UDP,Full Cone,Restricted Cone,Port Restricted Cone, orSymmetric. - Explains the detected mapping and filtering behavior in plain language.
- Shows optional details including endpoints, STUN server, interface, and elapsed time.
- Supports automatic server selection, built-in public servers, and a custom
host:port. - Supports automatic or explicit IPv4 interface selection.
- Includes Chinese and English interfaces.
- Stores preferences only; public addresses and test history are not saved.
NAT Moe sends IPv4 UDP STUN probes and uses RFC 5780 behavior discovery when the selected server supports it. Mapping and filtering are tested from the same local UDP endpoint. If the device already has the public address but unsolicited UDP is filtered, NAT Moe reports that separately instead of calling it a cone NAT. A server that only returns a mapped address cannot distinguish every category, so NAT Moe reports that limitation instead of guessing.
Public STUN servers are operated by third parties. Availability and behavior-discovery support may change across networks and regions. Automatic mode tries compatible candidates within an overall timeout of approximately 10 seconds.
- Leave the STUN server and network interface on Auto, or select explicit values.
- Click Start test.
- Read the result and its explanation. Open Details for the technical fields.
A custom server must use hostname:port or IPv4:port, for example stun.example.com:3478. Custom servers receive behavior-discovery probes, so enter only a server you trust.
- macOS 12 or later, Apple Silicon and Intel.
- Windows 10 or 11, x64.
NAT Moe tests IPv4 UDP NAT behavior only. It is not a bandwidth test, port scanner, TCP NAT test, or IPv6 connectivity test.
Install Rust 1.97.0 or later, then run:
cargo test --locked --all-targetsInstall Xcode Command Line Tools and both Rust targets:
rustup target add aarch64-apple-darwin x86_64-apple-darwin
./Scripts/build-macos-universal.shOutput: dist/NAT Moe.app
Run on x64 Windows with the MSVC Rust toolchain:
rustup target add x86_64-pc-windows-msvc
./Scripts/build-windows-portable.ps1Output: dist/NAT Moe.exe
Windows normally uses the Acrylic backdrop. If remote desktop or a display driver produces a blank window, launch the same EXE in opaque safe mode:
& ".\NAT Moe.exe" --safe-mode
# Short alias:
& ".\NAT Moe.exe" -sGitHub Actions tests the project and builds the Universal macOS app and portable Windows x64 executable. No DMG, installer, or MSI is generated.
NAT Moe has no account system, telemetry, analytics, or test-history database. Probes are sent only to the selected STUN server candidates. A third-party STUN server can see the source public IP address, port, and request time. The chosen server, interface, and UI language are stored locally.
NAT Moe source code is available under the MIT License. Notices for bundled dependencies are in THIRD-PARTY-LICENSES.txt and are included in release artifacts.
Regenerate the notices with ./Scripts/generate-third-party-licenses.sh after dependency changes.

0 comments
log in to comment.