ADIF Editor

Available

A native macOS editor for ADIF log files, built around POTA activations.

Platforms
macOS 14+Apple SiliconIntel
Built with
Swift 6SwiftUINo third-party dependencies
License
GPL-3.0-or-later

Latest release

Universal build for Apple Silicon and Intel, macOS 14 or later. Ad-hoc signed and not notarized, so the first launch needs one extra step — the release notes walk through it.

What it does

One button for park references

Add MY_SIG_INFO to every row of an activation log, for one park or ten. N-fers split into separate files automatically, always written as new files so the log that came off the radio is never touched.

Byte-identical round-trip

A file opened and saved without edits comes back out identical — field name casing, zero-length fields, line endings and header bytes included. Vendor extensions the app has never heard of survive untouched.

Real grid editing

Every field of every QSO in a sortable spreadsheet with full undo. Cut, copy and paste move whole QSOs as ADIF text. Find across all columns with ⌘F.

Duplicate finder

QSOs that repeat are all shown before any one of them is removed, so trimming a multi-session log is a decision rather than a guess.

Fill from QRZ

Name, location and zone fields for callsigns you would otherwise type by hand. Empty cells only — it never overwrites something you entered.

It does not phone home

Not a logger, and it never uploads your log anywhere. The only network call it can make is a QRZ callsign lookup you explicitly invoke. No telemetry, no update check, no analytics.

What it’s for

POTA activators log with contest and digital-mode software — WSJT-X, MSHV, N1MM — none of which know anything about POTA. The .adi files they produce are valid ADIF but lack the MY_SIG_INFO field carrying the park reference, which POTA’s uploader needs.

Every activation therefore requires the same manual edit: add a column, fill it with the park reference on every row, save under a specific filename. Activations from multiple parks at once — “n-fers” — require that once per park, into separate files.

ADIF Editor makes that one command. One park or ten, always writing new files, never touching the log that came off the radio.

The round-trip guarantee

Underneath the editing sits the property the parser was built around: a file opened and saved without edits is byte-identical to the one that came in. Not merely field-preserving — identical, down to field-name casing, zero-length fields, line endings and header bytes. Nothing the app does not understand is ever rewritten.

There is exactly one exception. A field whose declared length is wrong gets written back correct, and the app tells you it did. Reproducing that faithfully would be preserving corruption rather than preserving data.

Privacy

It is not a logger, and it never uploads your log anywhere — you upload to POTA yourself.

It makes exactly one kind of network connection: a QRZ callsign lookup, to fill in station details you would otherwise type by hand. It happens only when you invoke it, only if you have entered QRZ credentials, and it sends one callsign — never your log, never a file. With no credentials stored, the app never opens a connection at all. There is no telemetry, no update check, and no analytics.

On signing

Builds are ad-hoc signed and not notarized — notarization requires a paid Apple Developer account this project does not have. macOS blocks the first launch and calls the app out in System Settings › Privacy & Security, where an Open Anyway button gets you past it once; the release notes carry the full steps.

If you would rather not run a binary you did not build yourself, that is a reasonable position. The source is public and Scripts/bundle.sh assembles and ad-hoc signs the app bundle, so building it yourself is a supported path.

Want to know when this ships? I'm at QRZ — or watch github.com/ww8l.