ADIF Multitool (adifmt) is an open-source command-line utility for turning amateur-radio logs into usable, checked data. It reads and writes ADI, ADX, CSV, TSV, JSON and Cabrillo 3.0, and provides commands for conversion, field editing, filtering, sorting, inference, fixing, counting and validation. It is best suited to repeatable shell workflows—such as preparing a spreadsheet export for a POTA or SOTA upload—not to operators looking for a graphical logbook.
What ADIF Multitool does
ADIF Multitool processes log files as command pipelines. Input can be a named file or standard input; output can go to standard output or a file. That design lets you chain several transformations in one script or combine the program with ordinary shell tools.
The project is written in Go and released under the Apache 2.0 license. Its README describes the command-line interface as version zero, so option names and behavior may change. Script authors should use GNU-style double-dash options and pin or test the version they deploy.
Supported log formats
| Format | Typical use | Important qualification |
|---|---|---|
| ADI | Text representation of ADIF records used by many logging programs and services | Unicode handling in ADI can deviate from the ADIF specification; use the documented ASCII-only option when a destination requires it. |
| ADX | XML representation of ADIF data | Use when your receiving application specifically expects ADX. |
| CSV | Spreadsheet exports and tabular imports | Column names and values still need to map correctly to ADIF fields. |
| TSV | Tab-separated spreadsheet or script data | Useful where commas occur in field values. |
| JSON | Programmatic interchange and inspection | Confirm that the receiving application accepts the generated JSON shape. |
| Cabrillo 3.0 | Contest-log submission files | ADIF-to-Cabrillo mapping is not perfect, and the utility does not calculate contest scores. |
The program can infer a format from a filename extension or data structure. You can also specify input and output formats explicitly, which is safer in automated jobs when a file has an unusual extension.
Windows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallOutdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware match#1 Best Overall
Operations available in the command-line workflow
- Convert: read one supported format and write another.
- Concatenate: combine records from multiple log files.
- Edit: change field values or add fields.
- Filter: keep records matching criteria such as operating mode.
- Fix: correct common formatting problems, including date and time representations.
- Flatten: turn multi-instance fields into a simpler representation.
- Infer: derive fields from information already present in a record.
- Select: retain only the fields required by a destination.
- Sort: order records for review or downstream processing.
- Count: count records or combinations of field values.
- Validate: check records and field syntax before they are uploaded.
- Save: write the resulting stream to a chosen file.
Exact command names and flags should be taken from the README for the build you install, because the project warns that its version-zero CLI can change.
Practical workflows
Convert a CSV export to ADI
- Export your spreadsheet with one contact per row and a header for each field.
- Run
adifmtwith CSV as the input format and ADI as the output format, or use the program’s format inference when the extensions are reliable. - Use the field-edit or inference operation to add values that are absent from the spreadsheet, such as a derived field.
- Apply the fixing operation to normalize date and time formatting.
- Run validation and inspect the resulting ADI before uploading it.
The documentation presents this as a supported workflow; it does not constitute an independent accuracy or compatibility test for every spreadsheet export.
Rank #2
Combine several logs
- Pass the files to the concatenation operation, or feed them through standard input in a shell pipeline.
- Sort the combined records if chronological or callsign order matters to the next system.
- Count records or selected field combinations to catch an unexpected empty file or duplicate-looking group.
- Validate the final output and save it in the format required by the destination.
Prepare a POTA or SOTA upload
- Convert the source log to ADI if it is not already in an ADIF format.
- Select only the fields accepted or needed by the upload service.
- Infer or edit missing fields and filter out records that do not belong to the activation.
- Fix date and time formatting, then validate field syntax.
- Open the generated file as a final human check before submitting it.
Filter and inspect a subset
Filtering by a criterion such as operating mode lets you isolate records for a report or upload. Combine filtering with selection and sorting so the output contains only the required fields in a predictable order.
Validation: what to check before an upload
Validation is a processing step, not a guarantee that a receiving website will accept every record. After validation, review:
Rank #3
- Whether required fields are present and use the expected ADIF names.
- Whether dates, times, frequencies, modes and callsigns use valid syntax for the destination.
- Whether a conversion dropped information that had no direct target field.
- Whether filtering selected the intended station, band, mode or activation.
- Whether record counts before and after processing are plausible.
- Whether text encoding is acceptable, especially for non-ASCII characters in ADI.
Keep the original log untouched and write transformed data to a new file. This makes it possible to compare counts and recover if a later edit is wrong.
Cabrillo conversion needs extra review
Cabrillo 3.0 is supported, but the project explicitly warns that mapping between ADIF data and Cabrillo fields is imperfect. Inspect the generated headers, callsigns, times, exchanges and other contest-specific information against the contest’s submission rules. ADIF Multitool does not calculate contest scores, so score computation and any contest validation remain separate tasks.
Rank #4
ADIF standard and project version
ADIF is an interchange standard intended to let amateur-radio software, services and websites exchange contact data. The ADIF Developers Group specifications site reports version 3.1.7 as the current release (page accessed September 30, 2026). An older ADIF 3.0.4 specification explains the ADI and ADX structure but should not be treated as the current standard.
The ADIF Multitool changelog records version 0.1.22 on March 24, 2026 and notes an update to ADIF 3.1.7. Because the changelog also contains an “Unreleased” section, 0.1.22 should not be assumed to be the newest available build without checking the project’s release information.
Installation and platform expectations
The project documents two installation routes: download a prebuilt release binary or build it with Go. The README does not confirm that a current binary works on every operating system. The README also says the author cannot test on Windows, so Windows users should test their intended release and pipeline with a disposable copy of their logs before relying on it.
For production or club scripts, record the tool version, keep a sample input file, and test the full conversion-and-validation pipeline whenever you upgrade. This is particularly important while the CLI remains in version zero.
Quick Recap
When ADIF Multitool is the right choice
| Need | Fit |
|---|---|
| Repeatable batch conversion or shell pipelines | Strong fit: standard input/output and multiple processing commands are central to the design. |
| CSV, TSV or JSON interchange | Supported, with explicit field mapping and destination checks still required. |
| Field cleanup, filtering, sorting or validation | Strong fit through the documented operations. |
| Graphical logbook management | Not a fit; this is a command-line utility, not a GUI application. |
| Contest scoring | Not a fit; Cabrillo output is available, but score calculation is not. |
| Long-term script stability without maintenance | Use caution because the project labels the CLI version zero and warns it may change. |
Pre-upload checklist
- Preserve the original export.
- Confirm the input and output formats explicitly when automation matters.
- Check that required field names and values survived conversion.
- Use fixing, editing or inference before validation, not after.
- Compare record counts and inspect a sample of converted records.
- Use the ASCII-only option when the target cannot handle the ADI text encoding you need.
- Manually review every Cabrillo file and follow the contest’s own submission rules.
- Document the tested ADIF Multitool version in scripts.
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

