Garmin Connect shows this message for almost every import failure, whatever the cause. Most of the time nothing is wrong with your file and the same upload goes through on the second or third attempt. When it doesn't, it is one of six specific things. Both cases are covered below.
Garmin Connect's importer returns one generic message for two completely different situations: a transient failure on Garmin's side, and a real problem in your file. It does not tell you which one you've hit. The transient failure is far more common, and it costs nothing to rule out, so rule it out first.
Retrying cannot duplicate your data. Garmin gives precedence to data already recorded for a date, so a repeat upload only lands on days that are still empty. A file that partly succeeded and then errored will not double-count anything on the next attempt.
If one file fails three times, skip it and move on. Import the next year, then come back to the stubborn file later. Garmin's import queue is noticeably slower at peak times, and the same untouched file often goes straight through an hour later.
Still failing after that? It is a file problem. Work down the list below, which is ordered by how often each cause is actually the culprit.
Garmin's importer aborts an entire file on a single invalid row rather than skipping it, which is why a file either imports completely or fails completely. One bad cell is enough to take down a whole year.
This is the single most common real cause. Excel reformats date columns automatically on open, and again on save, usually without any warning. Once it has done that, the dates in the file no longer match the date format you selected in Garmin's import dialog, and the upload is rejected.
The fix: download a fresh copy of the file from the converter and upload it without opening it first. If you need to look inside a file, open it in Notepad on Windows or TextEdit in plain text mode on Mac. Neither will touch the contents.
How to tell: if the file has ever been opened and saved in Excel, Numbers, or Google Sheets, assume this is your problem, even if the dates look correct on screen.
Dragging a CSV from inside a still-compressed archive onto Garmin's import page hands the browser an empty reference. Garmin accepts the filename, uploads nothing, and errors.
The fix: extract the archive to a real folder on your desktop first, then select the files from there.
How to tell: Garmin's import page lists the file size next to the filename. If it reads 0 bytes, this is the cause.
Before Garmin reads your file it asks for length units, weight units and date format. Its default date format is not the same as the converter's default, so accepting the dialog without changing anything is a common way to fail.
The fix: set Length Units and Weight Units to whatever you chose in Wearable Converter, and set Date Format to match as well. If you left the converter on its default, choose the 2026-12-31 option.
How to tell: this one also has a silent failure mode. If a file imports successfully but every entry lands on the wrong day, the date format was mismatched rather than invalid.
Garmin rejects a body composition row containing an empty cell, and it rejects a file where an optional column such as BMI or Fat is filled entirely with zeros. A row with a weight of 0 will also take the file down. This is why people report every body_YYYY.csv failing while every activities_YYYY.csv imports fine.
The fix: include only the columns you have real data for. Date and Weight are the only required ones, and Garmin calculates BMI itself, so sending it is redundant anyway. Wearable Converter has built body files this way since v1.6.7, adding BMI and Fat columns only when there are genuine readings behind them.
How to tell: open the file in a plain text editor and look for a row ending in a comma, or a column that is nothing but zeros.
Garmin's importer expects a keyword on the very first line, above the column headings: Body for body composition files and Activities for activity files. A hand-built file that opens straight onto Date,Weight is rejected, and this catches out nearly everyone exporting from a third-party weight tracker or writing the file themselves.
Body Date,Weight 2026-01-15,77.5
The fix: add the section line. The converter writes it automatically, so this only applies to files you built by hand.
Garmin's import page takes Fitbit body or activity data as .csv, .xls or .xlsx, plus Garmin activity files as .tcx, .fit or .gpx. It does not take a Google Takeout ZIP, and it does not take the JSON files inside one. Body and activity data also have to live in separate files: a single CSV containing both is rejected.
The fix: a Takeout ZIP or an Apple Health export.zip has to be converted into Garmin's CSV shape first. Wearable Converter does that in your browser and writes one activity file and one body file per year, already split and already formatted.
This message means the opposite of the one above. Your file was accepted and Garmin is writing the data in the background. Leave it alone and check again in 30 to 60 minutes.
Steps, distance, calories, floors and active minutes appear under Health Stats in the left sidebar. Weight, BMI and body fat appear under Health Stats then Weight.
Minor differences between your old totals and what Garmin shows are normal. Fitbit and Google Health store raw data in UTC, so timezone correction moves a small number of entries to a neighbouring calendar day, and distance and calorie figures round differently. Neither is a conversion error.
Every cause above except Garmin's own retry bug comes down to the file being in the wrong shape. These tools write it in the right one.
Converts a Google Takeout or Apple Health export into Garmin's exact CSV format, split by year and by data type, in your browser. Nothing is uploaded to a server. $19 USD one-time.
Get Access, $19 USDNeed one weigh-in or a few missing days rather than a full migration? Two free generators write a valid Garmin CSV from numbers you type in. No key required.
Free toolsThe wider import process, and the format rules behind the errors above.