tanita-synchro
Copy your Tanita scale measurements from MyTanita to Garmin Connect: weight and full body composition, with the original date and time, as if they came from a Garmin Index scale.
2026-10-08 10:00:02 MyTanita: 12 measurements (2026-09-08 .. 2026-10-08), already in Garmin: 11, to upload: 1
[1/1] 2026-10-08 07:41 70.40 kg ok
Why I built this
My Tanita RD-953 talks only to the My TANITA app. Garmin Connect, where the rest of my training and health data lives, cannot read weight from it, and it does not read weight from Apple Health either. Typing weigh-ins in by hand loses everything except the weight and is easy to forget.
tanita-synchro signs in to your MyTanita account, downloads the measurement
export and uploads every measurement Garmin does not have yet. Run it once to
bring over your whole history, then let it run on a schedule.
Features
- Full body composition — weight, BMI, body fat, body water, muscle mass, bone mass, BMR, metabolic age, physique rating and visceral fat rating.
- Original timestamps — each weigh-in keeps the date and time it was taken.
- Safe to repeat — measurements already in Garmin are skipped, so you can run it as often as you like; nothing is stored locally.
- History backfill —
--alluploads everything in your MyTanita account. - Dry run —
--dry-runshows what would be uploaded. - Scheduling on macOS — a launchd agent runs the sync twice a day.
- Your MyTanita password stays in the macOS Keychain (or in environment variables); the Garmin session is cached so MFA is needed only once.
Disclaimer
This is an unofficial tool, not affiliated with or endorsed by Tanita or
Garmin. Neither MyTanita nor Garmin Connect offers a public API for this, so
tanita-synchro uses the MyTanita website's CSV export and the upload endpoint
of Garmin Connect, signing in with your own credentials. Use it only with
your own accounts and your own data, at your own risk. Either service can
change without notice and break the tool.
Quick start
Requires Python 3.12+. The easiest way is pipx:
pipx install tanita-synchro
tanita-synchro --all --dry-run # see what would be uploaded
tanita-synchro --all # upload your whole history
On the first run you are asked for your MyTanita email and password (a dialog on macOS, saved to the Keychain), then for your Garmin email, password and — if your account uses two-step verification — the code Garmin emails you.
Common commands
tanita-synchro # the last 30 days (default)
tanita-synchro --since 2026-09-01
tanita-synchro --all # the whole MyTanita history
tanita-synchro --dry-run # show, do not upload
tanita-synchro --timezone Europe/Warsaw
Running on a schedule (macOS)
From a git checkout with its .venv set up (see
Contributing):
launchd/install.sh # runs at 10:00 and 20:00; missed runs happen after wake
tail -f ~/Library/Logs/tanita-synchro.log
launchd/uninstall.sh
Documentation
- Usage — options, credentials, scheduling, exit codes
- How it works — MyTanita export, field mapping, Garmin upload
- Troubleshooting
- Contributing
- Changelog
License
Metadata
Release files for tanita-synchro 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| tanita_synchro-0.1.0.tar.gz | 18.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| tanita_synchro-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 28.3 kB
Release files / tanita_synchro-0.1.0.tar.gz
| Download URL | tanita_synchro-0.1.0.tar.gz |
|---|---|
| Size | 18.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9fea35b35324f8e57a97573476025147344573af28ed0c1bda2d6e1343d449ce
|
|
BLAKE2b-256 checksum How to use checksums |
2e8169544c05e5ad9e8486772eb95404844d50ebced9815b47ca1cd8694a67db
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 8, 2026.
Transparency logRelease files / tanita_synchro-0.1.0-py3-none-any.whl
| Download URL | tanita_synchro-0.1.0-py3-none-any.whl |
|---|---|
| Size | 10.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8d6970d33e9729c14f6f95b2c84fc6e7c7fd744c0347b719ff5f9e993852100f
|
|
BLAKE2b-256 checksum How to use checksums |
7a6880f28f680b1fa5b3ef232f45778c16097ed0d420ce3d4930f7df08f2f91f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 8, 2026.
Transparency log