JS8Call (JS8): The Best HF Keyboard-to-Keyboard Digital Mode for Weak Signals—and How to Fix Time Sync Issues

If you’ve been exploring HF “keyboard-to-keyboard” digital modes, you’ve probably run into the same debate: JS8Call is powerful, but time sync is “too critical.” The reality is more practical: JS8Call includes built-in tools to compensate for clock drift and time mismatch—and when you learn them, you can reliably decode and message at very low signal levels (even the “can’t-believe-it” negatives people talk about).

This article summarizes MJ Jordan's YouTube video, JS8Call from A-Z Covering the Basics to Advanced Settings In One Video, which is a full walkthrough of JS8Call—from setup basics to advanced time-sync techniques, message relays, inbox messaging, and prepper-friendly operating habits.

JS8Call: Ham Radio Made Simple - MJ Jordan

What Is JS8Call?

JS8Call is an HF digital application built around the weak-signal DNA of FT8-style signaling, but designed for actual message passing and keyboard-to-keyboard conversations. Think of it as:

  • Weak-signal performance you can use in rough conditions
  • Real messaging (not just short exchanges)
  • Features for group communication, store-and-forward behavior, and relay-style routing

It runs on common platforms and is widely used on popular HF calling frequencies, making it one of the busiest keyboard-based HF ecosystems.

How JS8Call’s Screen Layout Works (Quick Orientation)

When you open JS8Call, there are a few key areas you’ll use constantly:

  • Waterfall + Signal Activity: where signals appear and where offset matters
  • Incoming Message Area: decoded traffic (heartbeats, CQs, directed messages)
  • Selected Message / QSO Area: where you reply and manage direct/group QSOs
  • Herd/Call Activity List: the “who’s on” and “who heard who” control center
  • Message Entry Box: where you type and send keyboard messages

Pro tip: JS8Call heavily rewards right-click exploration—many of the most useful functions are hidden behind context menus on callsigns, buttons, and list entries.

The Big Performance Secret: SNR and Time Delta Work Together

JS8Call can decode in very weak conditions—but only if your timing is tight.

Key terms you’ll see on the activity list

  • SNR (Signal-to-Noise Ratio): how strong the signal is compared to noise (negative numbers are common in weak-signal digital)
  • Time Delta: timing difference between you and the other station (critical in JS8Call)

Why time delta matters so much

In normal speed, JS8Call uses a fixed transmission window (bursts must land inside it). If your timing drifts outside that window, you’ll see the signal in the waterfall but won’t decode it.

Rule of thumb from the transcript:

  • Aim to get time delta under ~500 ms (and lower is better)
  • Lower time delta lets you decode worse SNR cleanly and/or run faster speeds

Audio and ALC: The Other Two Decode Killers

When you can see the signal but still can’t decode, the transcript highlights three usual suspects:

  1. Time delta too high
  2. ALC not set correctly (transmit level too hot / splattering)
  3. Audio device misconfigured (wrong input/output device instead of USB audio codec)

Quick setup targets mentioned

  • Receive audio level: keep it roughly in a stable midrange (the presenter suggests staying around a consistent “sweet spot”)
  • Transmit ALC: use Tune and adjust for only slight ALC activity (not overdriving)

Band Filters: Reduce the Chaos for Private QSOs and Preparedness Nets

JS8Call can get busy. If you’re trying to coordinate with a specific group or run calm, disciplined comms (especially in a preparedness context), band filters help by hiding unrelated traffic like constant CQs and heartbeats.

  • Use filters for private/group operations
  • Disable filters if you want open discovery and general QSOs

The Three Places You’ll Configure JS8Call

JS8Call settings show up in multiple places, so don’t assume “I set it once, I’m done.”

  1. File → Settings (main configuration tabs: General, Radio, Frequencies, Notifications, etc.)
  2. Top Tabs (Config/Mode/View/Control) (operating behavior, display columns, controls)
  3. Right-click menus (callsign actions, directed messaging tools, timing tools, speed shortcuts)

Configurations: Save Multiple Radio/Group Setups (Huge Quality-of-Life Win)

One of the most useful workflow features covered is Configurations:

  • Save separate profiles for different radios (ex: one for an IC-7300, one for an FT-891 via FLRig)
  • Save profiles for different groups/nets (different offsets, filters, operating habits)
  • Clone a “known good” profile and adjust only what changes (CAT/audio)

If you run portable or build go-box systems, configurations can save you from constantly redoing settings every time you change equipment.

Time Sync: How to Decode Cleanly Even When Clocks Don’t Match

Understand the “Transmission Window”

At normal speed, your decode depends on the other station’s bursts landing inside the correct window. If timing is off, the burst slides too early/late and decoding fails.

Practical goal

  • Start by keeping time delta within ~500 ms
  • Work toward ~300 ms or better if you want faster speeds and cleaner decodes in weak signal conditions

Time Sources You Can Use

The transcript mentions several ways operators manage time:

  • A dedicated PC time-sync app (set-and-forget)
  • Windows time (works, but can drift more depending on setup)
  • GPS time (great, but may require outdoor satellite lock)
  • HF time signals (like WWV) for reference
  • Rig time tools (where supported)

Time Sync Method 1: “Set Time Drift to Now” (Start or End of Burst)

A demonstrated method is syncing by clicking at the start or end of a received burst:

  • Reset time drift to 0 first
  • Watch the burst in the waterfall
  • Click the “set time drift to now” control at the correct moment (start or end)

If you miss the first burst, you can often catch the second burst in the cycle—just reset and try again.

Time Sync Method 2: Automatic Time Drift (Averaged Decodes)

JS8Call can estimate timing across multiple decodes and average the result. This can provide a solid correction when conditions are decent and the signal is visible enough to decode consistently.

Fine Tuning: The “Jump” Feature

When you’re close but not perfect, you can fine-tune time delta using Jump from a callsign’s right-click menu.

  • Best used when you’re not wildly off
  • Helps dial in timing without a full re-sync ritual

Advanced Rescue: The Manual Formula for Severe Timing Problems

For cases where timing is badly off and quick tweaks aren’t working, the transcript provides a manual method using numbers visible on screen:

New time drift = old time drift − time delta

This is especially helpful when:

  • Signals are extremely weak
  • You can’t reliably “tag” the burst timing
  • You need a deterministic correction using the values shown

Six Ways to Message in JS8Call (Including Relay + Store/Forward Behavior)

JS8Call isn’t just “chat.” It includes multiple message delivery styles:

  • Directed message (callsign + message)
  • Group message (send to a group channel without typing callsigns)
  • Relay message (use an intermediary station to reach someone you can’t hear directly)
  • Post to another station’s inbox (they’re on-frequency but away from the keyboard)
  • Store message locally for later pickup (recipient queries and retrieves by ID)
  • Macro/command-style messaging (quick queries like “SNR?” or “QSL?”)

Relay messaging: “heard by” matters

To pick a good relay station, the technique described is:

  • Hover over a station in the activity list
  • Check who they are heard by / who they can reach
  • Choose a relay that can hear both endpoints

Notifications: Make JS8Call Practical While You Do Other Things

To keep JS8Call running while you’re doing other work in the room, enable notifications for:

  • Directed message received
  • Inbox message received

Then map those to audio alerts so you don’t have to stare at the screen.

Prepper-Friendly JS8Call Operating Habits

The transcript frames JS8Call as especially valuable for preparedness-style comms because you can:

  • Keep your station monitoring without constant interaction
  • Use filters to reduce noise and stay focused
  • Leave inbox/store-and-forward style messages without real-time typing
  • Relay messages through intermediate stations during poor propagation

It’s also highlighted as one of the best “one app to master” choices due to its activity level and weak-signal performance—as long as you learn time delta control.

Quick Start Checklist (From the Demo Flow)

  • Confirm RX/TX enabled (green indicators)
  • Start at Normal speed
  • Set audio input/output to the correct USB device
  • Verify CAT control (COM port, baud, PTT test)
  • Set transmit audio so ALC is modest
  • Watch time delta and correct it early
  • Enable notifications for inbox/directed messages
  • Save profiles using Configurations

SEO Keyword Targets

  • JS8Call setup guide
  • JS8Call time sync / time delta
  • JS8Call weak signal messaging
  • HF digital keyboard to keyboard
  • JS8Call relay message / inbox message
  • JS8Call band filter
  • portable HF digital go box

FAQ (SEO-Friendly)

Is JS8Call better than other keyboard-to-keyboard HF digital apps?

It’s widely favored because it combines weak-signal performance with real messaging features like inbox delivery, relays, and group messaging—provided you manage time delta.

Why does JS8Call care so much about time sync?

Because decoding depends on signals landing inside defined transmission windows. High time delta pushes bursts outside the window, so you may see signals but fail to decode.

What time delta should I aim for in JS8Call?

A practical target is under 500 ms, with ~300 ms or lower giving more flexibility for faster speeds and better decoding in weak signal conditions.

What causes “I can see the signal but can’t decode it”?

Most commonly: time delta too high, transmit ALC/audio misconfigured, or the wrong sound device selected.

Can JS8Call relay a message through another station?

Yes. You can route messages through a station that can hear both endpoints, enabling communication when you can’t reach someone directly.

Download MJ Jordan's YouTube JS8Cal Set-up Instructions