Private portable-log conversion

POTA / SOTA CSV-to-ADIF Builder

Turn a handwritten-log spreadsheet into reviewable ADIF. Confirm every detected column, choose explicit UTC date and frequency conventions, validate activation references, inspect every omitted row, and download only when the preview matches your source.

Step 1

Open or paste a contact table

No file selected.

The first row must contain unique column names. Up to 50,000 contacts and 5 million characters are processed in this tab.

Paste a table, choose a file, or load the teaching sample.

Inspect the generated file before uploading it. ToolQuill checks supported syntax and evidence, but POTA and SOTA systems remain authoritative for accepted references, activations, contacts, and awards.

Contact tables, callsigns, locations, references, and generated ADIF stay in this browser tab. Nothing is uploaded.

What the builder does

The parser handles comma, tab, semicolon, and pipe delimiters with quoted fields. It proposes mappings for common spreadsheet headings, but you confirm every mapping before conversion. A row is emitted only when it has a usable station call, worked call, UTC date and time, supported mode, and either a valid ADIF band or a frequency that lands unambiguously inside the supported band table. Input rows are never edited.

POTA and SOTA metadata

POTA activator output includes the modern ADIF MY_POTA_REF field and the current uploader-compatible MY_SIG=POTA plus MY_SIG_INFO fields. Park-to-park rows likewise carry POTA_REF, SIG, and SIG_INFO. SOTA activations and summit-to-summit contacts use MY_SOTA_REF and SOTA_REF. Defaults fill only blank mapped cells, so row-specific references remain explicit.

Deterministic normalization

The selected date order resolves separators without guessing between day-first and month-first formats. The selected frequency unit applies only to bare numbers; explicit MHz or kHz suffixes override it. A supported frequency can supply a uniquely containing band. FT8, FT4, JS8, USB, LSB, and selected PSK submodes are emitted with their documented parent MODE and a SUBMODE. Conflicting bands, future dates, malformed references, and unsupported modes omit the row and identify the cause.

Conversion boundary

A clean file is not proof of a valid activation or QSO. The builder does not query parks, summits, callsigns, locations, or program status; convert time zones; infer a missing contact time or mode; merge multi-park claims; score activations; remove duplicates; upload logs; or guarantee acceptance. ADI output is printable ASCII, so a non-ASCII comment is visibly omitted while the contact remains reviewable.

Frequently asked questions

Why was a row omitted?

The review table and findings list every missing, malformed, conflicting, or workflow-required value. Correct the source or mapping and build again; the input text is unchanged.

Why are both POTA_REF and SIG_INFO present?

ADIF 3.1.7 defines dedicated POTA fields, while current POTA upload guidance documents SIG/SIG_INFO and MY_SIG/MY_SIG_INFO. Emitting both preserves the same explicit reference for modern interchange and uploader compatibility.

Can I use a headerless SOTA CSV V2 file directly?

No. Add explicit column names and expand two-digit years to four digits first. This keeps the mapping visible and prevents the builder from guessing a century.

Authoritative references

The POTA ADIF Technical Reference documents required contact fields and the MY_SIG/MY_SIG_INFO and SIG/SIG_INFO usage. The ADIF 3.1.7 specification defines ADI syntax, band ranges, POTARef, SOTARef, MY_POTA_REF, POTA_REF, MY_SOTA_REF, and SOTA_REF. The Summits on the Air program remains authoritative for valid summits and activation rules.

Validate an existing ADIF log · Check or convert a Cabrillo contest log · Browse ham-radio tools