Sooner or later, every APRS user runs into the same five-digit number. You type it into the APRS World mobile app, into a Yaesu FT3DR, into a home-brew iGate config file, or into a website that wants to authenticate you against APRS-IS. It is called the APRS passcode, and almost everyone misunderstands it. This guide explains exactly what it is, what it is not, how the algorithm works, and where to get one safely.
If APRS is new to you, start with our pillar guide: What is APRS?.
An APRS-IS passcode is not a password and not a security token. It is a publicly computable integer derived from your callsign by a published algorithm. Anyone can compute anyone else's passcode. The number does not authenticate you — it merely demonstrates that you have read the algorithm, which is taken as a (very weak) signal that you are a real APRS user and not random Internet noise. Treat the passcode like a return-address sticker, not like a credit-card number.
This matters for two reasons:
The passcode is a 16-bit unsigned integer derived from the base callsign (i.e. with any SSID like -9, -1, etc. stripped). The algorithm itself is a simple ASCII-based rolling XOR checksum. Reference C-language source has been distributed publicly since at least the mid-1990s and is documented in many open-source iGate projects, including aprx and Direwolf 1.
The high-level steps:
W1ABC-9 → W1ABC) and uppercase it.The whole function is roughly 15 lines of C, runs in microseconds, and produces a stable result for any given callsign — your passcode never changes for the same callsign, regardless of which generator you use.
If the passcode is publicly computable, what is the point? Three things:
What the passcode does not do:
In other words, the passcode is the network equivalent of a hat that says "I am an APRS operator". It is not a passport.
-1If you are connecting to APRS-IS purely to read packets — for example, building a website that displays APRS data, or running an analytics dashboard — you do not need a real callsign-derived passcode at all. The well-known passcode -1 marks a connection as read-only. Tier 2 servers will accept it, send you the packet stream you filtered for, and refuse to forward any beacon you try to inject. Most websites, including aprs.world, use exactly this mode for their public live-map data.
This is documented in the original APRS-IS connection protocol 2 and is widely respected across all Tier 2 servers.
Several routes, all of which produce the same number:
aprspass W1ABC and you get the integer.We recommend computing your passcode locally on a device you control rather than fetching it from a stranger's website — not because the number is secret (it is not), but as a general matter of habit. Web-form generators are fine; just remember the result is something a 50-line Python script could equally compute offline.
It will not, because passcodes are stateless — they are recomputed by the server on every connection from your declared callsign. If your client is being rejected, the cause is almost always one of:
ta4ohn-9 and W1ABC-9 may both work, but the passcode must be computed from the upper-case base W1ABC.rotate.aprs2.net rather than a specific Tier 2 hostname.The passcode itself is rarely the cause.
Can I use the same passcode on multiple devices simultaneously? Yes — APRS-IS allows the same callsign to connect from multiple sources, typically one per SSID (W1ABC, W1ABC-9, W1ABC-10...). Use different SSIDs to differentiate them so packets are not duplicated.
Do I need a different passcode per SSID? No. The passcode is computed from the base callsign only (SSID stripped). W1ABC-1 and W1ABC-9 share the same passcode.
My friend says my passcode is wrong. They computed it the same way every other client does. If two implementations disagree, one of them has a bug. Cross-check against a third reference such as Direwolf or aprx.
Is there a passcode for clublog or shortwave or the ISS APRS digipeater? No. The passcode is purely an APRS-IS thing. RF-only operations — beaconing on 144.800 MHz, digipeating, hitting the ISS digipeater on 145.825 MHz — do not require any passcode at all. You only need it the moment you start uploading to or downloading from an APRS-IS Tier 2 server.
What if I do not have a callsign yet? Then you cannot get a passcode — the algorithm requires a valid callsign as input. You can still consume APRS data read-only (passcode -1), and you can read all the public guides on aprs.world, but you cannot beacon or upload until you have your ticket. See the licensing section in our pillar guide for how to get there.
We plan to ship a built-in passcode helper directly on aprs.world — point your browser at the site, type your callsign, get your passcode locally in JavaScript. In the meantime any of the existing online generators or in-app calculators work fine.
WB2OSZ Direwolf, source for aprs_tt.c and related files. https://github.com/wb2osz/direwolf ↩
APRS-IS, "Connecting to APRS-IS". http://www.aprs-is.net/Connecting.aspx ↩