Convert body composition data into a Garmin-compatible .fit file — entirely in your browser, with no server involved.
I have a Xiaomi Body Composition Scale S400 and want to import its measurements into Garmin Connect to keep all my health data in one place.
The problem: most third-party sync tools either require you to disable Garmin Connect's two-factor authentication, or relay your data through their own servers. I didn't want any of that.
So I built this instead. It uses the official Garmin JavaScript FIT SDK to generate a .fit weight-scale file directly in your browser. Yes, you will have to manually type in your measurements, download the file, and manually import it into Garmin Connect website. But you will not give any untrusted code access to both your Garmin account and Xiaomi account.
- Enter your body composition data — weight is required; body fat %, bone mass, muscle mass, body water %, visceral fat rating, and metabolic age are optional.
- Generate & download — the app encodes everything into a standard Garmin FIT weight-scale file using the official SDK, running entirely client-side.
- Import into Garmin Connect — go to connect.garmin.com, navigate to Health Stats → Body Composition, and use the import button to upload the
.fitfile.
- Next.js 16 with Static Export, no server
- React 19
- StyleX (Facebook's AoT atomic CSS-in-JS)
- @garmin/fitsdk — official Garmin JavaScript SDK
- react-hook-form for form handling
- foxact · foxts
Development
pnpm install
pnpm devProduction
pnpm install
pnpm buildYou will find the static files in the out/ directory, which you can serve with any static hosting service.
weight2fit © Sukka, Released under the Apache License 2.0 License. Authored and maintained by Sukka with help from contributors (list).
Personal Website · Blog · GitHub @SukkaW · Telegram Channel @SukkaChannel · Mastodon @sukka@acg.mn · Twitter @isukkaw · BlueSky @skk.moe