Skip to main content

FT8 Decoder

In Development

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 any decoded message that mentions your callsign. Place your phone or tablet near your radio's speaker — no audio cable, no WSJT-X, no extra software.

[SCREENSHOT: FT8 Decoder modal with the cycle bar on the left, waterfall in the center, and a message list with one row showing a green "Log" button]

Getting Started

  1. Open FT8 Decoder from the sidebar tools menu.
  2. Expand Getting started if you want the in-app walkthrough.
  3. If you have multiple microphones, select one from the Mic dropdown.
  4. Tap Start (the round play button in the bottom-right of the modal).
  5. Grant microphone permission when prompted.
  6. Hold your device near your radio's speaker — 6 to 12 inches works well.
Microphone permission required

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).

Set your callsign first

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 Profile > Edit 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 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. Newer audio is on the right; the waterfall scrolls left as time advances.

Frequency labels (500, 1000, 1500, 2000, 2500 Hz) are drawn on the left edge of the waterfall.

After each 15-second slot completes, the decoder draws small triangular markers along the right edge of the waterfall at the audio frequency of every signal it decoded, with the callsign label printed to the left of the marker:

  • Green triangles + green text mark CQ messages.
  • Blue triangles + blue text mark direct QSO exchanges between two stations.

The markers persist on the waterfall as it scrolls, so you can see a few minutes of decode history at a glance.

The Decoded Messages List

Below the waterfall, every decoded message is added to a scrolling list. Each row has three columns:

ColumnWhat it shows
TimeA relative timestamp ("8s ago", "1m ago") for when the slot containing this message completed.
MessageThe raw decoded FT8 message text. CQ messages are highlighted green. Click the message text to copy it to your clipboard.
LogA one-tap Log button — but only on messages that include 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. 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:

  1. Your callsign is set on your profile. No callsign, no Log button anywhere — there's nothing for the decoder to match against.
  2. 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 │
│ "Hunting > Month │ │ ment all inherit │ │ between activations│
│ YYYY" folder. │ │ from the folder. │ │ for you. │
└────────────────────┘ └────────────────────┘ └────────────────────┘

The four scenarios in plain English:

1. No callsign set → no Log button at all

The Log column is simply empty. 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.

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 a read-only banner above the form.
  • Date is locked to the activation's date and the input is disabled.
  • Folder is implied — the folder picker is hidden because the activation already determines where this contact lives.
  • Equipment (radio and antenna) inherits from the activation folder's assigned equipment.

This is the same behavior as tapping Add Contact on the activation folder from the Log tab — the decoder is just a different entry point into the same activation-aware logging flow. 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, and you'll see a note in the Auto-Log strip explaining what happened.

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:

  1. 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.
  2. 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.
  • A one-line summary of where contacts will land right now, based on which of the four scenarios above currently applies.
  • 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 behavior visible before you click Log, not after — so there are no surprises about where your contact ended up.

What Gets Pre-Filled vs. What You Can Edit

FieldPre-filled by the decoderEditable in the QSO form?
CallsignThe other operator's callsign from the decoded message (with portable suffix preserved).Yes
ModeFT8.Yes
DateToday's date when you're not in an activation; the activation's date when you are.Yes when not in an activation; locked and disabled when the contact is going into an activation folder.
FolderMonthly Hunting (no activation) or the activation folder (one activation in progress).Yes when not in an activation; hidden (implied by the activation) when the contact is going into an activation folder.
Park referenceThe activation's park when you're in an activation.Read-only — shown in a banner above the form for activation contacts.
Equipment (radio / antenna)Inherits from the bound folder's default equipment.Yes
Time, frequency, RST, commentsNot 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 active activation in the Activity tab and press End.
  • 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.
  • POTA — start an activation so the Log button can route contacts straight into the activation folder.