FT8 Decoder
The FT8 Decoder is under active development and is considered experimental. The audio pipeline, waterfall, and message stream work, but decoding accuracy in noisy environments and on weak signals is still being refined. Treat decoded callsigns as candidates to verify against your radio's own decoder before logging.
The FT8 Decoder listens to FT8 audio through your device's microphone, decodes the 15-second slots, plots a live waterfall spectrogram, and offers a one-tap Log button on eligible direct QSO messages involving your callsign. Place your phone or tablet near your radio's speaker — no audio cable, no WSJT-X, no extra software.
This decoder is a listen-and-log tool: it decodes through your phone's microphone and only ever shows a manual Log button — it never transmits. If you have a radio connected via Radio Control on iOS, FT8 Auto-Hunt on the hunting page is the automatic alternative — it uses the radio's own network audio, transmits to complete QSOs itself, and marks spots for you.
[SCREENSHOT: FT8 Decoder modal with the cycle bar on the left, a top-down waterfall with a frequency ruler above it and a live spectrum trace below it, and a message list with one row showing a "Log" action]
Getting Started
- Open FT8 Decoder from the sidebar tools menu.
- Expand Getting started if you want the in-app walkthrough.
- If you have multiple microphones, select one from the Mic dropdown.
- Tap Start (the round play button in the bottom-right of the modal).
- Grant microphone permission when prompted.
- Hold your device near your radio's speaker — 6 to 12 inches works well.
The FT8 Decoder needs access to your device's microphone, the same way the CW Decoder does. If you accidentally deny permission, re-enable microphone access for Hamtrax in your browser site settings (web), in Settings > Apps > Hamtrax > Permissions (Android), or in Settings > Hamtrax > Microphone (iOS).
The decoder uses your callsign to figure out which decoded messages are your QSOs. Without a callsign on your profile, the Log button never appears. Set your callsign in Settings > Account > Profile before you start a session.
The 15-second Cycle Bar
FT8 transmits in fixed 15-second windows aligned to UTC. The vertical bar on the left side of the spectrogram tracks where you are in the current slot — its only source of truth is your device's system clock, so it stays correct whether or not the decoder is actively running.
- Even slots (seconds 0–14 and 30–44 of every minute) — the bar fills green from the bottom.
- Odd slots (seconds 15–29 and 45–59) — the bar fills blue from the top.
- The number below the bar counts down the seconds remaining in the current slot.
If your device's clock is off by more than a second or two, your decodes will suffer. FT8 is a tightly timed protocol; sync your system clock before a serious session.
Reading the Waterfall
The center panel is a top-down scrolling waterfall spectrogram, covering 200–3000 Hz — the audio range where FT8 signals appear when your radio is tuned to a standard dial frequency like 14.074 MHz. A frequency ruler runs left to right along the top (500, 1000, 1500, 2000, 2500, 3000 Hz); the waterfall itself scrolls top-down, like a classic SDR waterfall — the top row is "now" and the bottom row is 15 seconds ago.
Below the waterfall, a live spectrum trace plots instantaneous amplitude against the same frequency axis, so you can see signal peaks as a line graph in addition to the color-coded history above it.
At the top edge of the waterfall — where the freshest row enters — the decoder labels every signal from the most recent completed 15-second slot with a small marker and its callsign:
- Green markers + green text mark CQ messages.
- Blue markers + blue text mark direct QSO exchanges between two stations.
These markers refresh with each new slot, so you're always seeing the labels for the most recently decoded batch.
The Decoded Messages List
Below the waterfall, decoded messages are grouped by their 15-second cycle. Each group shows a relative time label, then one row per message:
| Column | What it shows |
|---|---|
| Message | The raw decoded FT8 message text. CQ messages are highlighted green. Click the message text to copy it to your clipboard. |
| Log | A one-tap Log action — but only on eligible direct QSO messages involving your callsign. Tap it to log the contact (see the next section). |
The list keeps the most recent 500 messages and auto-scrolls to follow new decodes when you are already near the bottom. The most recent decode batch is briefly tinted so you can spot new arrivals.
A small Cycles and Decodes counter above the waterfall tracks how many 15-second slots have completed and how many messages have been decoded since you pressed Start.
The Log Button — Where Your Contact Lands and Why
This is the most important part of the decoder to understand. The Log button is the bridge between "the decoder heard something" and "this contact is in my logbook."
When does the Log button appear?
The Log button only appears on a row when both of these are true:
- Your callsign is set on your profile. No callsign, no Log button anywhere — there's nothing for the decoder to match against.
- The decoded message is a direct QSO that involves your callsign. The decoder looks at the first two tokens of the message; if one of them matches your callsign and the other is a different valid callsign, the OTHER callsign becomes the "Log" target. CQ messages never get a Log button — a CQ is a call for any station, not a contact yet.
Portable suffixes are handled. If your stored callsign is K1ABC and the message reads K1ABC/P W9XYZ R-05, the decoder strips your /P for matching purposes, so the Log button still appears and is wired up to log W9XYZ. The OTHER callsign keeps its full form — if W9XYZ/M calls you, the Log button pre-fills W9XYZ/M, not W9XYZ.
Where does the contact get logged?
When you click Log, Hamtrax opens the QSO form, pre-fills it, and binds it to a folder based on what you're doing right now in your logbook. Here's the decision tree:
┌───────────────────────────────────┐
│ Click Log on a decoded message │
└─────────────────┬─────────────────┘
│
▼
┌───────────────────────────────────┐
│ Is your callsign set on your │
│ profile? │
└─────────────────┬─────────────────┘
NO │ YES
┌─────────────────┘ └─────────────────┐
▼ ▼
┌──────────────────────┐ ┌─────────────────────────────┐
│ Log button doesn't │ │ How many activations are │
│ render at all. │ │ in progress right now? │
│ Fix: set callsign. │ └──────────────┬──────────────┘
└──────────────────────┘ 0 │ 1 │ 2+
┌──────────────────┘ │ └──────────────────┐
▼ ▼ ▼
┌────────────────────┐ ┌────────────────────┐ ┌────────────────────┐
│ MONTHLY HUNTING │ │ THAT ACTIVATION │ │ MONTHLY HUNTING │
│ FOLDER │ │ FOLDER │ │ FOLDER │
│ │ │ │ │ │
│ Current month's │ │ Park, date, equip- │ │ Decoder won't pick │
│ "Hunted contacts > │ │ ment all inherit │ │ between activations│
│ Month YYYY" folder.│ │ from the folder. │ │ for you. │
└────────────────────┘ └────────────────────┘ └────────────────────┘
The four scenarios in plain English:
1. No callsign set → no Log button at all
No Log action appears. The decoder has no way to know which messages are yours without a callsign to match against. Set your callsign in your profile, refresh, and the button appears on eligible direct QSO messages.
2. No activation in progress → monthly Hunting folder
If you're just rag-chewing or hunting from home, your contact goes into the monthly Hunting folder for the current month — for example, "May 2026". That folder is auto-created the first time you log a non-activation contact in a month, so you never have to set it up by hand. The QSO form opens with:
- Callsign pre-filled to the other station.
- Mode pre-filled to
FT8. - Date defaulting to today.
- Folder defaulting to this month's Hunting folder.
You're free to change any of these before saving.
3. Exactly one activation in progress → that activation folder
This is the magic case. If you're mid-activation — you've pressed Start on a POTA activation but not yet ended it — the Log button binds the contact straight to that activation folder. Because the contact lives in an activation folder, the QSO form locks the fields that define that folder, which means:
- Callsign pre-filled to the other station.
- Mode pre-filled to
FT8. - Park reference (e.g.,
US-2325) is locked to the activation's park and shown in the form's Locked fields section. - Date is locked to the activation's date and shown in the form's Locked fields section.
- Folder is seeded from the activation folder and enforced when the contact is saved.
- Equipment (radio and antenna) inherits from the activation folder's assigned equipment.
This uses the same activation-aware logging policy as tapping Add Contact on the activation folder from the Log tab. The park and date locks are the same ones you'll see when editing any contact in an activation folder.
4. Multiple activations in progress → monthly Hunting folder
If you have two or more activation folders open at the same time (e.g., a two-park rove where you started both before ending either), the decoder deliberately does not pick one for you. The contact goes into the monthly Hunting folder instead.
The reason: Hamtrax never guesses which activation a QSO belongs to. If the decoder auto-bound contacts to the wrong activation, the auto-organization promise — that activation folders only ever contain contacts from that park and that day — would break. Use the Log tab to add the contact to a specific activation by hand when you need to disambiguate.
Why this routing exists
Two principles drive every branch in the tree above:
- The logbook should auto-organize itself. If you're activating, contacts you log from the decoder should land in the activation folder automatically, with the park, date, and equipment already attached — no folder picker, no copy-paste, no later cleanup. That's what scenario 3 does.
- The decoder must never guess in a way that could corrupt the logbook. When the decoder can't be certain (no callsign set; multiple activations open) it falls back to the safest landing zone — the monthly Hunting folder — rather than risk filing a contact into the wrong activation folder. Wrong-park contacts inside an activation folder break the audit trail; a contact in the monthly folder can always be moved later.
The "Auto-Log Contacts" Panel
Above the mic dropdown you'll see a collapsible Auto-Log Contacts panel. It shows the current state (On / Off) on its right edge.
Expand it and you'll find:
- A toggle — "Allow direct logging from decoder?" This is the preference surface for an upcoming behavior that will auto-log QSO messages mentioning your callsign without requiring a Log click on each row. The wiring for the actual auto-log behavior is not yet bound — for now the toggle is the visible commitment that this feature is coming. The Log button (manual click) works either way.
- When the toggle is on, a one-line summary of where contacts will land right now, based on which of the four scenarios above currently applies.
- When the toggle is on, a "Want to log elsewhere?" disclosure that lists every routing rule in priority order, with the rule that's currently in effect highlighted in green and tagged
now. The bottom line reminds you that the Log tab is the override — it lets you pick the destination folder by hand for any contact.
This panel exists to make the decoder's routing behavior visible before automatic logging is wired up. Manual Log clicks work either way.
What Gets Pre-Filled vs. What You Can Edit
| Field | Pre-filled by the decoder | Editable in the QSO form? |
|---|---|---|
| Callsign | The other operator's callsign from the decoded message (with portable suffix preserved). | Yes |
| Mode | FT8. | Yes |
| Date | Today's date when you're not in an activation; the activation's date when you are. | Yes when not in an activation; locked and shown read-only when the contact is going into an activation folder. |
| Folder | Monthly Hunting fallback (no activation or multiple activations) or the activation folder (one activation in progress). | Yes when not in an activation; enforced from the activation when the contact is going into an activation folder. |
| Park reference | The activation's park when you're in an activation. | Read-only in the form's Locked fields section for activation contacts. |
| Equipment (radio / antenna) | Inherits from the bound folder's default equipment. | Yes |
| Time, frequency, RST, comments | Not pre-filled. | Yes — fill these in yourself before saving. |
Tips for Best Results
- Sync your clock. FT8 slots are 15 seconds wide and aligned to UTC. A clock that's a second or two off will measurably hurt decode rates.
- Position the device close to the speaker — 6 to 12 inches, with no fan or rattle between them.
- Tune your radio so FT8 signals fall between roughly 500 and 2500 Hz of audio offset — that puts them squarely in the waterfall's visible range and out of the noisier band edges.
- Don't rely on a single decode. Weak signal modes are noisy. If you see a candidate callsign you don't recognize, wait for a second slot to confirm before logging.
- End your activation when you're done. Leaving multiple activations open at once flips you into scenario 4 — contacts go to the monthly folder rather than your activation folder. Open the Activate tab, find the activation under In Progress, and choose Finish from its ⋯ menu.
Related Pages
- CW Decoder — the sibling tool for Morse decoding via microphone.
- Manual Logging — the QSO form the Log button opens into.
- Folders — how activation folders and monthly Hunting folders are organized.
- Activating — start an activation so the Log button can route contacts straight into the activation folder.