ADIF Import & Export

QAS-log supports ADIF (Amateur Data Interchange Format) version 3.1.4 for moving QSO data between logging programs and QRZ.


Importing from QRZ

Pull your existing QSOs from QRZ Logbook directly into QAS-log.

How to Open

Open the QRZ Import panel using Shift+?, or from the import button in the interface. You'll need a QRZ Logbook API key configured in settings — if one isn't set, you'll see a warning toast.

Choosing a Time Range

The import panel offers three time ranges:

Option Description
Last 24 Hours QSOs from the past day
Last 7 Days QSOs from the past week
Last 30 Days QSOs from the past month

Select a range and click Fetch QSOs. The app fetches your QSO data through the /api/logger proxy (your API key never leaves the server round-trip) and imports the results into your local storage.

Duplicate Detection

Imported QSOs are checked against your existing log. A QSO is considered a duplicate if all four of these match an existing record:

  • Callsign
  • Date
  • Time on
  • Band

Duplicates are silently skipped — you'll see a count of how many were imported vs. skipped.

Field Normalization

QRZ returns raw lowercase ADIF field names. On import, these are automatically normalized to QAS-log's internal property names. For example:

  • my_sig + my_sig_info with value POTAmy_pota_ref
  • my_sig + my_sig_info with value WWFFmy_wwff_ref
  • sig + sig_info with value POTApota_ref
  • sig + sig_info with value WWFFwwff_ref

This normalization ensures that POTA, SOTA, and WWFF references imported from QRZ are correctly recognized throughout the app — in the logbook display, search, map plotting, and re-export.


Importing from ADIF Files

You can also import QSOs from any .adi file exported by another logging program.

How to Import

Click the Import ADIF button and select a .adi file. The app parses the file, shows a confirmation dialog with the QSO count and filename, and imports the records.

What Gets Parsed

The parser reads standard ADIF field-length encoding (<FIELD_NAME:LENGTH>VALUE) and handles:

  • Values containing literal < characters (uses substring extraction, not regex-based capture)
  • UTF-8 encoded values with multi-byte characters
  • Records separated by <EOR> tags, with an optional <EOH> header

Only records with at least a callsign are imported. Each imported QSO gets a unique ID and is marked with source: "imported" so you can distinguish manual logs from imports.

Duplicate Detection

Same logic as QRZ import — duplicates are matched on callsign + date + time on + band and skipped automatically. You'll see a summary like "Imported 47 QSOs, skipped 3 duplicates."


Exporting ADIF Files

Export your entire log as a downloadable .adi file.

How to Export

Click the Save ADIF button in the logbook interface. The file downloads as qsos_YYYY-MM-DD.adi with the current date.

Export Format

The exported file uses ADIF version 3.1.4 with one field per line for readability:

// ADIF Export from QAS-log
<ADIF_VER:5>3.1.4
<PROGRAMID:7>QAS-log
<EOH>

<CALL:4>W1AW
<QSO_DATE:8>20260327
<TIME_ON:6>143022
<TIME_OFF:6>143522
<FREQ:7>14.0740
<BAND:3>20m
<MODE:3>FT8
...
<EOR>

Field lengths use UTF-8 byte length rather than JavaScript string length, so names with accented characters (e.g., "Jose" with accent) are encoded correctly.

Fields Included in Export

Every non-empty field on the QSO is exported. The full set:

Contact fields: CALL, QSO_DATE, TIME_ON, TIME_OFF, FREQ, BAND, MODE, RST_SENT, RST_RCVD, NAME, STATE, GRIDSQUARE

Other station's program references: SIG, SIG_INFO, POTA_REF, SOTA_REF, WWFF_REF

Your station info: STATION_CALLSIGN, MY_NAME, MY_GRIDSQUARE, MY_STATE, MY_CITY, MY_COUNTRY, MY_RIG, MY_ANTENNA, TX_PWR, MY_ITU_ZONE, MY_CQ_ZONE, MY_DXCC, MY_POTA_REF, MY_SOTA_REF, MY_WWFF_REF, MY_SIG, MY_SIG_INFO

Entity data: COUNTRY, DXCC, CQ_ZONE, ITU_ZONE

Numeric fields like DXCC, CQ_ZONE, and ITU_ZONE use a null-check instead of truthiness, so entity 0 is correctly exported rather than silently dropped.


SIG / MY_SIG Handling

ADIF uses SIG/SIG_INFO as generic fields for "special interest group" activity. QAS-log translates between these generic fields and the dedicated program reference fields.

On Export (Other Station)

The SIG/SIG_INFO pair represents the other station's program activity:

Scenario SIG SIG_INFO Also Emitted
POTA ref only POTA The park reference
WWFF ref only WWFF The WWFF reference
Both POTA and WWFF POTA The park reference WWFF_REF as a separate field

POTA takes priority for SIG. When both are present, WWFF is preserved as the dedicated WWFF_REF field so no data is lost.

SOTA always uses dedicated SOTA_REF / MY_SOTA_REF fields (never SIG).

On Export (Your Station)

If you have an activation reference set in Station Settings:

  • Only My POTA Ref setMY_SIG=POTA, MY_SIG_INFO=<your ref>
  • Only My WWFF Ref setMY_SIG=WWFF, MY_SIG_INFO=<your ref>
  • Both set → A modal dialog asks you to choose which program to use for MY_SIG

In all cases, the dedicated fields (MY_POTA_REF, MY_WWFF_REF) are also emitted alongside MY_SIG, so importing programs that understand either convention will pick up the data.

On Import

The reverse mapping is applied:

Incoming Fields Mapped To
MY_SIG=POTA + MY_SIG_INFO=US-0001 my_pota_ref: "US-0001"
MY_SIG=WWFF + MY_SIG_INFO=KFF-0001 my_wwff_ref: "KFF-0001"
SIG=POTA + SIG_INFO=US-0001 pota_ref: "US-0001"
SIG=WWFF + SIG_INFO=KFF-0001 wwff_ref: "KFF-0001"

If a dedicated field (e.g., POTA_REF) is already present on the record, it takes precedence over the SIG mapping. The raw my_sig, my_sig_info, sig, and sig_info fields are removed after mapping — the app only stores the resolved program-specific fields.


QRZ Upload Field Parity

When you push a QSO to QRZ (either automatically on save or via bulk upload), the ADIF record includes the same station information fields as a file export: STATION_CALLSIGN, MY_GRIDSQUARE, MY_RIG, TX_PWR, MY_CITY, MY_STATE, MY_COUNTRY, and all other "MY_" fields. This means your QRZ logbook entries have the same fidelity as your exported files.

The one difference: QRZ uploads do not include SIG/SIG_INFO transform — they emit POTA_REF, WWFF_REF, etc. as dedicated fields, since QRZ understands these natively.


Complete Field Map Reference

How ADIF field names translate to QAS-log internal property names:

ADIF Field App Property Notes
CALL call
QSO_DATE qso_date Format: YYYYMMDD
TIME_ON time_on Captured when callsign is entered (start of QSO)
TIME_OFF time_off Captured at save time (end of QSO)
FREQ freq In MHz
BAND band Lowercase: 20m, 40m, 70cm, etc.
MODE mode
RST_SENT rst_sent
RST_RCVD rst_rcvd
NAME name
STATE state
GRIDSQUARE gridsquare
POTA_REF pota_ref Other station's park reference
MY_POTA_REF my_pota_ref Your park reference
SOTA_REF sota_ref Other station's summit
MY_SOTA_REF my_sota_ref Your summit
WWFF_REF wwff_ref Other station's WWFF reference
MY_WWFF_REF my_wwff_ref Your WWFF reference
STATION_CALLSIGN my_call
MY_NAME my_name
MY_GRIDSQUARE my_gridsquare
MY_STATE my_state
MY_CITY my_city
MY_COUNTRY my_country
MY_RIG my_rig
MY_ANTENNA my_antenna
TX_PWR tx_pwr
MY_ITU_ZONE my_itu_zone
MY_CQ_ZONE my_cq_zone
MY_DXCC my_dxcc
COUNTRY country
DXCC dxcc Numeric — entity 0 is preserved
CQ_ZONE cqzone Numeric
ITU_ZONE ituzone Numeric
MY_SIG (mapped, then removed) See SIG handling above
MY_SIG_INFO (mapped, then removed) See SIG handling above
SIG (mapped, then removed) See SIG handling above
SIG_INFO (mapped, then removed) See SIG handling above

Related