FIT 파일 완전 정복: 러너를 위한 워치 데이터 가이드
Garmin, COROS, Wahoo 기기로 기록하는 모든 달리기는 FIT 파일 안에 저장됩니다 — 플랫폼이 보여주는 것보다 훨씬 많은 정보를 담고 있는 컴팩트한 바이너리 포맷입니다. 이 가이드에서는 FIT 파일에 실제로 무엇이 들어 있는지, GPX·TCX와 어떻게 다른지, 어떻게 열고 변환하는지, 그리고 원시 데이터를 활용해 훈련 기록을 점검하고 복구하며 진정으로 소유하는 방법을 설명합니다.
- FIT은 Flexible and Interoperable Data Transfer의 약자입니다. ANT+ 무선 프로토콜을 만든 앨버타의 회사이자 2006년부터 Garmin 자회사인 Dynastream Innovations가 개발했으며, 현재 Garmin, COROS, Wahoo, Zwift를 비롯한 대부분의 본격적인 트레이닝 플랫폼에서 사실상의 표준 기록 포맷입니다.
- FIT은 텍스트가 아닌 바이너리입니다. 1시간 러닝이 FIT으로는 약 100~300 KB인 반면 GPX나 TCX로는 1~3 MB인데, 모든 값이 장황한 XML 태그 대신 컴팩트한 타입 지정 바이트로 저장되기 때문입니다. 그 대가로 디코딩 없이는 텍스트 에디터나 Excel에서 열 수 없습니다.
- FIT은 시계가 아는 모든 것을 기록합니다: 초당 GPS, 심박수, 케이던스, 파워, 온도, 러닝 다이내믹스, 랩, 기기 정보, R-R 간격, 그리고 Stryd 파워 같은 서드파티 개발자 필드까지. GPX는 위치, 시간, 몇 가지 확장만 유지하고, TCX는 랩과 HR을 추가하지만 여전히 대부분의 센서 데이터를 버립니다.
- FIT을 GPX로 변환하면 데이터가 손실됩니다. 심박수, 케이던스, 온도는 GPX 확장에 살아남을 수 있지만 랩, 파워, 러닝 다이내믹스, R-R 간격, 기기 메타데이터는 사라집니다. 경로 공유 목적일 때만 GPX로 변환하고, 실제 수치를 분석하고 싶다면 CSV로 변환하세요.
- 원본 FIT 파일은 언제든 다시 받을 수 있습니다: Garmin Connect('원본 내보내기'), COROS 및 Suunto 앱(FIT 내보내기/다운로드), Strava('원본 내보내기'), 그리고 Apple Watch는 FIT을 직접 기록하지 않으므로 HealthFit이나 RunGap 같은 앱을 통해 가능합니다.
- FIT 파일에는 러너가 생각하는 것보다 많은 개인 정보가 들어 있습니다: 출발 좌표, 기기 시리얼 번호, 때로는 사용자 프로필의 신체 지표까지. 원시 파일을 공개적으로 공유하기 전에 이러한 필드를 제거하거나 트리밍하세요 — 지도 스크린샷이 드러내는 정보는 그 뒤의 파일보다 훨씬 적습니다.
목차
FIT 파일이란?
FIT은 Flexible and Interoperable Data Transfer의 약자입니다. 스포츠 및 피트니스 기기의 데이터 — 시계가 기록하는 모든 달리기, 라이딩, 랩, 센서 측정값 — 를 저장하고 공유하기 위해 특별히 설계된 바이너리 파일 포맷입니다. 이 포맷은 심박 스트랩과 풋 파드에 사용되는 ANT+ 무선 프로토콜도 발명한 캐나다 앨버타주 코크런의 회사 Dynastream Innovations가 만들었습니다. Garmin이 2006년 Dynastream을 인수하면서 FIT은 Garmin 생태계 전체의 기록 포맷이 되었습니다. Garmin이 developer.garmin.com에서 무료 공개 FIT SDK를 배포하기 때문에 이 포맷은 한 브랜드를 훨씬 넘어 확산되었습니다: COROS, Wahoo, Zwift, Stryd, Hammerhead를 비롯한 대부분의 최신 트레이닝 기기가 이제 FIT을 기본으로 기록하며, 모든 본격적인 분석 플랫폼 — Strava, TrainingPeaks, Runalyze, GoldenCheetah, Hashiri.AI — 이 이를 읽습니다.
FIT이 존재하는 이유는 그 이전의 포맷들이 잘못된 용도로 만들어졌기 때문입니다. GPX는 2002년 지도 프로그램 간 GPS 궤적 교환을 위해 설계되었습니다 — 위치와 타임스탬프만 있고 생리학적 데이터는 전혀 없습니다. Garmin의 이전 XML 포맷인 TCX는 랩과 심박수를 덧붙였지만 XML의 근본적인 문제를 물려받았습니다: 텍스트는 너무 큽니다. 3시간 마라톤 동안 매초 10개의 데이터 필드를 기록하는 시계는 수 메가바이트의 XML 파일을 만들게 되는데, 몇 메가바이트의 메모리만 있던 2008년식 기기에 저장하기 버겁고 ANT나 초기 블루투스로 전송하기에도 느렸습니다. FIT은 컴팩트한 바이너리 인코딩으로 이를 해결했습니다: 각 값은 원시 타입 지정 바이트로 저장되고(심박수는 1바이트, GPS 좌표는 4바이트), 자기 기술적(self-describing) 메시지 정의 덕분에 어떤 디코더든 어떤 기기의 파일이든 파싱할 수 있습니다.
그 결과는 작고, 확장 가능하며, 무손실인 포맷 — 지구력 스포츠에서 'RAW 파일'에 가장 가까운 존재입니다. Strava, Garmin Connect, TrainingPeaks가 같은 달리기에 대해 서로 다른 숫자를 보여줄 때, FIT 파일은 그들 모두가 출발한 원본 진실(ground truth)입니다. 이것이 이 가이드가 FIT 파일을 블랙박스가 아니라 이해할 가치가 있는 것으로 다루는 이유입니다: FIT 파일은 여러분 훈련의 원본 기록이고, 시계 브랜드를 바꿀 때 플랫폼 간에 이동하며, 적절한 (무료) 도구만 있으면 직접 열고, 변환하고, 복구하고, 분석할 수 있습니다. 플랫폼이 계산하는 모든 것 — 페이스 차트, 훈련 부하, VO2 Max 추정치 — 은 다음 섹션에서 설명하는 바이트에서 파생됩니다.
FIT 파일의 내부: 포맷 작동 원리
모든 FIT 파일은 헤더, 레코드 스트림, 마지막 체크섬의 세 부분으로 구성됩니다. 헤더는 12바이트 또는 14바이트이며 프로토콜 버전, 프로필 버전, 뒤따르는 데이터의 크기, 그리고 8~11바이트 위치의 ASCII 문자 '.FIT' — 도구들이 포맷을 인식하는 데 사용하는 시그니처 — 을 담고 있습니다. 파일은 디코더가 손상을 감지할 수 있게 하는 2바이트 CRC로 끝납니다. 그 사이에 실제 데이터가 있으며, 두 종류의 레코드로 구성됩니다: 정의 메시지(definition message)와 데이터 메시지(data message)입니다. 정의 메시지는 '로컬 타입 N의 뒤따르는 데이터 메시지에는 이러한 필드가 이 순서대로 이 바이트 크기로 들어 있다'고 선언합니다. 뒤따르는 데이터 메시지는 레이블 없는 순수한 값들입니다 — FIT이 그토록 컴팩트한 이유이자 텍스트 에디터에서 알아볼 수 없는 문자만 보이는 이유가 바로 이것입니다. 디코더는 각 데이터 메시지를 해당 정의와 짝지어 의미를 재구성합니다.
메시지 자체는 Garmin의 FIT Profile에 정의된 전역 메시지 번호(global message number)로 타입이 결정됩니다. 일반적인 활동 파일은 file_id 메시지(기기 제조사, 제품, 시리얼 번호, 생성 시각)로 시작한 뒤, 수천 개의 record 메시지 — 대부분의 최신 시계에서는 초당 하나 — 를 스트리밍하며, 각 메시지는 그 순간의 GPS 위치, 고도, 거리, 속도, 심박수, 케이던스, 파워, 온도를 담습니다. lap 메시지는 각 랩 스플릿을 요약하고, event 메시지는 타이머 시작/정지를 표시하며, 마지막의 session 메시지 하나가 시계 요약 화면에 표시되는 합계를 담습니다. 처음 읽는 사람이 흔히 걸려 넘어지는 두 가지가 있습니다: FIT 타임스탬프는 Unix 에포크가 아니라 1989년 12월 31일 UTC부터의 초를 세며, GPS 좌표는 '세미서클(semicircles)'로 저장됩니다 — 180/2³¹을 곱하면 도(degree)가 됩니다.
FIT 프로토콜 2.0은 개발자 필드(developer fields)를 추가했으며, 이름에서 느껴지는 것보다 러너에게 훨씬 중요합니다. Connect IQ 앱이나 페어링된 서드파티 센서가 자체 필드를 정의해 같은 record 스트림에 기록할 수 있습니다: Stryd는 러닝 파워, 다리 스프링 강성, 에어 파워를 개발자 필드로 저장하고, 근육 산소 센서와 심부 체온 센서도 마찬가지입니다. 파일에는 각 커스텀 필드를 설명하는 field_description 메시지가 포함되어 있어, 규격을 따르는 디코더라면 사전 지식 없이도 읽을 수 있습니다. 이것이 단 하나의 FIT 파일이 어떤 플랫폼보다도 오래 살아남을 수 있는 이유입니다: 특정 날에 시계와 센서가 측정한 모든 것 — 기본이든 서드파티든 — 이 하나의 자기 기술적 컨테이너에 보존됩니다.
활동 파일의 주요 FIT 메시지 타입
| 메시지 타입 | 등장 빈도 | 포함 내용 |
|---|---|---|
| file_id | 시작 시 1회 | 파일 타입, 제조사, 제품, 기기 시리얼 번호, 생성 타임스탬프 |
| record | 매초 (또는 '스마트' 간격) | GPS 위치, 고도, 거리, 속도, 심박수, 케이던스, 파워, 온도, 러닝 다이내믹스 |
| lap | 랩/스플릿당 1회 | 랩 시간, 거리, 평균/최대 페이스, HR, 케이던스, 칼로리, 트리거(수동 또는 자동) |
| session | 활동당 1회 | 스포츠 타입, 합계: 시간, 거리, 칼로리, 평균/최대값, 트레이닝 이펙트 |
| event | 이벤트마다 | 타이머 시작/정지/일시정지, 랩 버튼 누름, 알림, 배터리 경고 |
| device_info | 연결된 기기당 | 시계 및 센서 모델, 펌웨어 버전, 배터리 상태, ANT+/BLE ID |
| hrv | 심박마다 (활성화 시) | HRV 및 호흡 분석에 사용되는 박동 간 R-R 간격 |
| field_description | 개발자 필드당 | 커스텀 필드의 이름, 단위, 타입 (예: Stryd 파워, Connect IQ 지표) |
FIT vs GPX vs TCX: 각 포맷이 담는 것
세 포맷은 서로 다른 질문에 답합니다. GPX(GPS Exchange Format)는 '이 궤적은 어디로 갔는가?'에 답하기 위해 만들어진 2002년의 공개 XML 표준입니다 — 위도, 경도, 고도, 시간을 가진 트랙포인트의 목록입니다. 심박수, 케이던스, 온도는 선택적 확장 태그(Garmin의 TrackPointExtension이 일반적) 안에서만 함께 실릴 수 있으며, 이러한 확장에 대한 지원은 도구마다 다릅니다. TCX(Training Center XML)는 Garmin의 더 오래된 트레이닝 포맷으로 '운동이 어땠는가?'에 답합니다 — 랩, 포인트별 심박수와 케이던스, 칼로리, 스포츠 타입을 추가하지만 여전히 장황한 XML이며 러닝 파워, 다이내믹스, 개발자 필드보다 먼저 만들어졌습니다. FIT은 '기기가 무엇을 기록했는가?'에 답합니다 — 센서 메타데이터, R-R 간격, 커스텀 필드까지 모든 것을 훨씬 작은 크기로 담습니다.
인코딩 방식 때문에 크기 차이는 극적입니다. FIT에서 러닝 데이터 1초는 약 25~35바이트인 반면, GPX나 TCX에서 같은 트랙포인트는 꺾쇠괄호와 십진수 문자열로 수백 바이트를 차지합니다. 매초 기록한 1시간 러닝의 경우 FIT 파일은 약 100~300 KB, GPX는 약 1~2 MB, TCX는 그보다 더 큰 경우가 많습니다 — 대략 5~10배 차이이며 센서가 추가될 때마다 더 벌어집니다. 크기는 2008년 시계 시절보다 현대 휴대폰에서는 덜 중요하지만 실제로 여전히 체감됩니다: 이메일 첨부 용량 제한, 100마일 울트라 파일의 업로드 속도, 그리고 FIT으로는 10년 치 훈련 기록이 들어갈 공간에 TCX로는 한 시즌밖에 안 들어간다는 단순한 사실까지.
실용적인 원칙은 이렇습니다: FIT을 보관용 포맷으로 유지하고, GPX와 TCX는 특정 작업을 위한 내보내기 대상으로만 취급하세요. GPX만 읽는 앱을 쓰는 친구에게 경로를 공유해야 한다면? GPX로 내보내세요. TCX를 원하는 오래된 도구에 넣어야 한다면? TCX로 내보내세요. 하지만 GPX를 활동의 유일한 사본으로 만들지는 마세요. 변환은 단방향 손실이기 때문입니다 — 랩, 파워, 기기 데이터가 한번 제거되면 어떤 변환기도 되돌릴 수 없습니다. 의미 있는 모든 플랫폼이 FIT 업로드를 직접 받으므로 가져오기 전에 변환할 이유는 거의 없습니다 — 먼저 변환하면 대상 플랫폼이 잘 읽었을 필드를 잃을 위험만 생깁니다. 아래 비교 표가 트레이드오프를 한눈에 정리합니다.
FIT vs GPX vs TCX 한눈에 보기
| 포맷 | 타입 | 1시간 러닝 기준 크기 | 기록 데이터 | 최적 용도 |
|---|---|---|---|---|
| FIT | 바이너리 | ~100–300 KB | 모든 것: GPS, HR, 케이던스, 파워, 랩, R-R 간격, 기기 정보, 개발자 필드 | 활동 보관, 플랫폼 간 이동, 심층 분석 |
| TCX | XML (텍스트) | ~1–3 MB | GPS, 시간, HR, 케이던스, 랩, 칼로리; 파워는 확장으로만 | FIT 지원 이전의 레거시 트레이닝 소프트웨어 |
| GPX | XML (텍스트) | ~1–2 MB | 위치, 고도, 시간; HR/케이던스/온도는 선택적 확장으로만; 랩 없음 | 경로 공유, 지도 앱에 코스 가져오기 |
FIT 파일 여는 방법
FIT 파일을 여는 가장 빠른 방법은 온라인 뷰어입니다. Hashiri.AI의 무료 FIT Viewer는 전부 브라우저에서 실행됩니다: 파일을 드롭하면 경로 지도, 페이스/심박수/고도 차트, 전체 랩 테이블이 렌더링됩니다 — 계정도, 서버 업로드도, 설치도 필요 없습니다. 그래서 단순히 파일 하나와 궁금증이 있는 흔한 상황에 딱 맞는 도구입니다: 친구가 레이스 파일을 보내줬거나, 고장 난 시계에서 활동을 복구했거나, 어딘가에 업로드하기 전에 파일에 무엇이 들었는지 확인하고 싶을 때 말입니다. 브라우저 기반 뷰어는 위에서 설명한 것과 동일한 바이너리 구조를 디코딩하므로, 플랫폼이 다시 계산한 값이 아니라 파일이 실제로 저장한 것을 보게 됩니다.
단순히 보는 것을 넘어 훈련 기록에 활동을 남기고 싶다면 플랫폼에 가져오세요. Garmin Connect는 웹에서 가져오기 버튼(클라우드 아이콘)으로 FIT 파일을 받고, Strava는 strava.com/upload에서 받으며, TrainingPeaks, Runalyze, intervals.icu 모두 드래그 앤 드롭 FIT 가져오기를 지원합니다. Hashiri.AI도 마찬가지입니다 — 업로드된 FIT 파일은 지도, 랩, AI 코치 분석을 갖춘 완전한 활동이 됩니다. 데스크톱에서는 GoldenCheetah가 파워 툴입니다: FIT을 기본으로 읽고 개발자 필드를 포함한 모든 필드를 차트와 내보내기용으로 노출하는 무료 오픈소스 분석 도구입니다. GPXSee는 FIT, GPX, TCX 파일의 궤적과 고도 프로필을 빠르게 그려주는 가벼운 오픈소스 뷰어입니다.
안 되는 것은 Excel, Numbers, 텍스트 에디터에서 파일을 직접 여는 것입니다. FIT은 바이너리입니다: 구분자로 나뉜 텍스트를 기대하는 Excel은 깨진 문자만 잔뜩 표시하는데, 의미 있는 구조는 정의 메시지를 디코딩하고 FIT Profile의 필드 타입과 스케일링 계수(mm/s로 저장된 속도, 세미서클로 저장된 좌표, 1989년 기준 에포크의 타임스탬프)를 적용한 후에야 드러나기 때문입니다. FIT 데이터를 스프레드시트에 넣으려면 먼저 CSV로 변환해야 합니다 — 다음 섹션에서 다룹니다. 프로그래머는 변환기를 건너뛸 수 있습니다: Garmin의 공식 FIT SDK는 JavaScript, Python(PyPI의 garmin-fit-sdk), Java, C, C#용 디코더를 제공하며, 커뮤니티의 fitparse와 fitdecode 라이브러리도 성숙한 대안입니다.
FIT 파일 변환하기: CSV로, GPX로, 그리고 역방향으로
FIT CSV 변환은 숫자를 직접 보고 싶은 사람을 위한 것입니다. 좋은 변환기는 모든 record 메시지를 읽어 타임스탬프, 위도, 경도, 거리, 속도(또는 페이스), 심박수, 케이던스, 고도, 파워, 온도 같은 열로 초당 한 행씩 기록하며 — Stryd 파워 같은 개발자 필드 열도 있으면 함께 출력합니다. Hashiri.AI의 무료 FIT Converter가 정확히 이 작업을 브라우저에서 수행합니다: FIT 파일을 드롭하면 깔끔한 CSV를 받을 수 있고 계정도 필요 없습니다. 그다음부터 스프레드시트는 어떤 활동 페이지도 답하지 못하는 질문에 답할 수 있습니다: 직접 고른 구간의 평균 심박수, 특정 케이던스 임계값 위에서 보낸 시간, 한 번의 장거리 러닝에서 페이스 대 심박수 산점도 같은 것 말입니다. CSV는 코치와 연구자를 위한 정직한 교환 포맷이기도 합니다. 플랫폼의 스무딩 뒤에 숨겨진 것이 없기 때문입니다.
FIT을 GPX로 변환하는 것은 달린 경로를 공유하기 위한 것이며, 변환 과정에서 무엇이 살아남는지 이해하는 것이 중요합니다. 위치, 고도, 타임스탬프는 깔끔하게 변환됩니다. 심박수, 케이던스, 온도는 변환기가 Garmin TrackPointExtension 태그를 기록하면 보존될 수 있습니다 — 많은 단순 변환기는 그렇지 않습니다. 항상 잃는 것: 랩과 스플릿(GPX에는 랩 개념이 없음), 러닝 파워, 러닝 다이내믹스, R-R 간격, 칼로리, 트레이닝 이펙트, 기기 메타데이터. 대상이 지도·내비게이션 앱이거나, 레이스 경로 공유이거나, FIT을 읽지 못하는 오래된 플랫폼일 때만 GPX로 변환하세요. GPX를 훈련 데이터의 백업 포맷으로 사용하지 마세요 — 파일의 대부분을 조용히 버리는 것입니다.
GPX를 FIT으로 변환하는 것은 반대 방향이며, 러너에게 필요한 주된 이유는 코스입니다: Garmin과 COROS 시계는 FIT 코스 파일로 내비게이션하므로, 지도 도구에서 그렸거나 레이스 웹사이트에서 GPX로 다운로드한 경로는 시계가 안내하려면 먼저 FIT이 되어야 합니다(Garmin Connect의 코스 가져오기는 이 변환을 암묵적으로 수행하고, Hashiri.AI의 GPX to FIT 도구 같은 독립 변환기는 명시적으로 수행합니다). GPX는 FIT보다 적은 정보를 담고 있으므로 이 방향은 무손실입니다 — 잃을 것이 애초에 없습니다. 한 가지 구분이 중요합니다: 코스 FIT과 활동 FIT은 서로 다른 파일 타입이므로, 완료한 달리기를 GPX로 변환했다가 다시 되돌려도 도구가 명시적으로 코스를 만들어주지 않는 한 내비게이션 가능한 코스가 되지 않습니다. 아래 결정 표가 흔한 목표를 올바른 변환에 연결해 줍니다.
어떤 변환이 필요한가요?
| 하고 싶은 것 | 변환 방향 | 주의할 점 |
|---|---|---|
| Excel / Google Sheets에서 달리기 분석하기 | FIT → CSV | 파워와 개발자 필드를 포함한 모든 필드를 내보내는 변환기를 선택하세요 |
| 다른 앱을 쓰는 사람과 경로 공유하기 | FIT → GPX | 랩, 파워, 다이내믹스는 삭제됩니다; HR은 확장으로만 살아남습니다 |
| 계획한 경로를 Garmin/COROS에 올려 내비게이션하기 | GPX → FIT (코스) | 코스 변환기를 사용하세요; 활동 FIT은 내비게이션에 작동하지 않습니다 |
| 기록을 새 플랫폼으로 옮기기 | 변환 불필요 — FIT 업로드 | 모든 주요 플랫폼이 FIT을 읽습니다; 먼저 변환하면 데이터만 잃습니다 |
| FIT 이전의 오래된 트레이닝 프로그램에 넣기 | FIT → TCX | 파워와 러닝 다이내믹스는 살아남지 못할 수 있습니다; 가져온 후 확인하세요 |
| 어디든 업로드하기 전에 파일 확인하기 | 변환 불필요 — FIT 뷰어 사용 | 브라우저 기반 뷰어는 파일을 기기에만 보관합니다 |
원시 데이터로 러너가 실제로 할 수 있는 것
원시 FIT 데이터는 플랫폼 차트가 해결하지 못하는 논쟁을 끝냅니다. GPS 정확도가 고전적인 사례입니다: 시계는 10.21 km라고 하고 레이스는 10 km라고 할 때, 초당 좌표를 보면 궤적이 정확히 어디서 벗어났는지 — 출발 배너 주변 건물 아래에서, 터널을 지날 때, 스위치백에서 — 추측이 아니라 직접 확인할 수 있습니다. 플랫폼끼리 서로 다른 수치를 보여주는 것도 각자 같은 파일에 자체 스무딩, 고도 보정, 정지 시간 처리를 적용하기 때문입니다; 원시 record 스트림을 두 버전과 비교하면 어느 플랫폼이 무엇을 바꿨는지 알 수 있습니다. 그리고 플랫폼이 가져오기를 망쳤을 때(거리 오류, 랩 누락, 파워 반토막) 원본 FIT 파일은 문제가 여러분의 데이터인지 그들의 파서인지 증명해 주며 — 다시 업로드할 깨끗한 사본도 제공합니다.
원시 스트림은 대부분의 플랫폼이 여전히 숨기거나 유료화하는 분석도 가능하게 합니다. 심박 드리프트 — 유산소 디커플링 — 가 가장 좋은 예입니다: 일정한 페이스의 장거리 러닝을 반으로 나눠 각 절반의 페이스 대 심박수 비율을 계산하면, 그 변화율이 유산소 시스템의 지속력을 알려줍니다(일반적으로 일정한 노력에서 ~5% 미만의 드리프트는 탄탄한 유산소 지구력을 시사하고, 그 이상이면 페이스가 체력, 더위, 또는 보급을 앞질렀음을 시사합니다). 초당 데이터가 스프레드시트에 있으면 10분이면 끝나는 작업입니다. 페이스 스무딩도 직접 살펴볼 수 있습니다: 순간 GPS 속도는 잡음이 많아서, 원시 지터를 보면 시계의 '현재 페이스'가 왜 출렁이는지, 플랫폼들이 왜 이동 평균을 표시하는지 이해할 수 있습니다. 스트랩이 R-R 간격 데이터를 기록한다면 시계가 보여주는 것을 훨씬 넘어서는 HRV 분석도 가능합니다.
이 풍부함의 이면은 프라이버시입니다. FIT 파일은 단순한 경로가 아닙니다: file_id 메시지는 기기 시리얼 번호를 담고 있고, 첫 record 메시지들은 정확한 출발 위치 — 종종 여러분의 현관문 — 를 특정하며, 파일에는 시계가 칼로리 계산에 사용하는 체중, 나이, 성별 같은 사용자 프로필 데이터가 포함될 수 있습니다. 원시 FIT 파일을 포럼에 올리거나, 낯선 사람에게 보내거나, 버그 리포트에 첨부하기 전에 궤적의 시작/끝을 트리밍하거나 식별 메시지를 제거하는 도구를 사용하고, 어떤 프로필 필드가 들어 있는지 확인하세요. 플랫폼에는 지도에서 집을 숨기는 프라이버시 존이 있지만, 공유된 파일은 그 모든 것을 우회합니다. 스크린샷은 자유롭게 공유하되, 파일은 신중하게 공유하세요.
기기에서 FIT 파일 추출하기: 플랫폼별 가이드
Garmin은 세 가지 경로를 제공합니다. 활동별: 웹의 Garmin Connect에서 활동을 열고 톱니바퀴 아이콘을 클릭한 뒤 '원본 내보내기(Export Original)'를 선택하면 시계가 기록한 그대로의 원본 FIT 파일이 담긴 ZIP을 받습니다. 일괄: Garmin의 계정 데이터 내보내기(계정 관리 페이지의 GDPR 방식 'Export Your Data' 요청)는 원본 FIT 파일을 포함한 전체 기록을 며칠 안에 전달합니다. 직접: 대부분의 Garmin 시계는 여전히 USB 저장소로 마운트되며, 활동이 GARMIN/Activity 폴더에 FIT 파일로 들어 있습니다 — 클라우드를 거치지 않는 옵션입니다. COROS는 앱에서 운동별로 내보냅니다: 운동을 열고 공유/설정 아이콘을 탭한 뒤 '데이터 내보내기(Export Data)'를 선택하고 .FIT 포맷을 고르면 됩니다; COROS 웹 대시보드에서도 같은 활동별 내보내기가 가능합니다.
Suunto 앱도 활동별로 FIT을 내보냅니다: 운동을 열고 점 세 개 메뉴를 탭한 뒤 'FIT 파일 다운로드(Download FIT file)'를 선택하세요. Polar는 예외입니다 — Polar Flow의 세션별 내보내기는 FIT이 아닌 TCX, GPX, CSV를 제공하고 전체 계정 내보내기는 JSON으로 도착하므로, FIT이 필요한 Polar 러너는 변환해야 합니다(TCX가 가장 많이 보존합니다). Apple Watch는 FIT을 전혀 사용하지 않습니다: 운동은 HealthKit 데이터베이스에 저장됩니다. 확립된 다리는 서드파티 앱입니다 — HealthFit과 RunGap이 가장 많이 쓰이는 둘로 — HealthKit 운동을 읽어 표준을 준수하는 FIT 파일로 내보내거나(또는 Strava, TrainingPeaks 등의 플랫폼에 바로 동기화) GPS 궤적, 심박수, 러닝 파워까지 포함합니다.
Strava는 특별히 언급할 가치가 있습니다. 종종 러너의 우연한 아카이브가 되기 때문입니다. 기기에서 업로드한 단일 활동이라면 점 세 개 메뉴의 '원본 내보내기(Export Original)'가 Strava가 받은 그대로의 파일을 돌려줍니다 — Garmin/COROS/Wahoo 동기화로 들어온 파일이라면 FIT입니다. 계정 수준 일괄 내보내기(설정 → 내 계정 → 계정 다운로드 또는 삭제 → 다운로드 요청)는 원본 파일과 함께 전체 기록을 패키징합니다. 두 가지 주의 사항: Strava 휴대폰 앱으로 기록한 활동은 FIT 원본이 없고(GPX를 받게 됩니다), FIT 기반 활동의 'GPX 내보내기'는 원본이 아닌 손실 변환본입니다. 플랫폼 조합이 어떻든 오래가는 습관은 같습니다: 원본 FIT 파일 폴더를 유지하세요; 플랫폼은 오고 가지만 포맷은 그렇지 않습니다.
흔한 FIT 파일 문제 해결
손상된 파일은 가장 스트레스가 큰 장애로, 보통 활동 중 시계 충돌이나 배터리 방전 후에 발생합니다: 파일은 존재하지만 플랫폼이 거부합니다. 원인은 거의 항상 잘림(truncation)입니다 — 마지막 session 메시지와 최종 CRC가 기록되기 전에 기록이 멈춰 엄격한 파서가 파일을 거부하는 것입니다. FIT 데이터 레코드는 자기 완결적이므로 복구 가능성이 매우 높습니다: 복구 도구가 온전한 레코드를 다시 읽고 누락된 요약 메시지를 합성하여 유효한 파일을 작성합니다. FIT File Tools의 무료 웹 유틸리티에는 손상 복구 도구와 함께 시간 조정기, 활동 결합기, 구간 제거기가 있고, GoldenCheetah는 다른 플랫폼이 거부하는 손상 파일도 종종 가져오며, Garmin 자체 SDK에는 파일을 CSV로 변환했다가 되돌리며 유효한 구조를 재생성하는 FitCSVTool이 포함되어 있습니다.
그 외의 일상적인 문제 두 가지도 데이터 수준의 원인이 있습니다. 달리기 시작 부분의 GPS 누락이나 폭주는 시계가 위성 신호를 잡기 전에 시작 버튼을 눌렀을 때 발생합니다 — 첫 record 메시지에 위치 필드가 아예 없거나 수신기가 수렴하는 동안 수백 미터의 산란이 포함됩니다; 해결책은 행동 교정(신호 확정 표시를 기다리기)이지만 구간 제거 도구로 기존 파일에서 불량 구간을 잘라낼 수 있습니다. 두 활동 병합 — 시계가 꺼져 휴대폰으로 마무리했는데 하나의 달리기로 합치고 싶을 때 — 은 결합기 도구가 하는 일입니다: record 스트림을 이어 붙이고 단일 session을 재구성합니다. 타임스탬프 오류는 보통 포맷 자체에서 비롯됩니다: FIT은 모든 타임스탬프를 UTC로 저장하고 표시하는 플랫폼이 현지화하도록 하므로, 정확히 몇 시간 단위로 어긋나 보이는 활동은 시간대 해석 버그(또는 시간 동기화를 잃은 시계)이며, 다시 기록할 필요 없이 시간 조정 도구로 고칠 수 있습니다.
마지막으로 영원한 질문: 같은 파일인데 왜 플랫폼마다 상승 고도가 다를까요? 고도에는 세 가지 진실의 원천이 있기 때문입니다. 기압 고도계가 있는 시계(중급 이상 대부분의 Garmin과 COROS 모델)는 기압에서 도출된 고도를 FIT 파일에 기록합니다 — 부드럽고 비교적 신뢰할 수 있지만 기상 전선과 막히지 않은 센서 포트가 왜곡할 수 있습니다. GPS 전용 기기는 위성 기반 고도를 기록하는데, 그 오르내림을 합산하면 상승 고도가 심하게 부풀려질 만큼 잡음이 많습니다. 그래서 Strava 같은 플랫폼은 비기압 기기에 대해(때로는 모든 기기에 선택적으로) DEM 보정 — 기록된 고도를 궤적을 따라 지형 고도 데이터베이스에서 조회한 값으로 대체 — 을 적용합니다. 같은 FIT 파일, 세 가지 모두 변호 가능한 답입니다. 달리기를 비교할 때는 하나의 플랫폼과 하나의 방법 안에서 비교하고, 한 번의 달리기를 검증할 때는 FIT 파일의 원시 고도 열을 보면 누군가 보정하기 전에 실제로 무엇이 기록되었는지 알 수 있습니다.
자주 묻는 질문
FIT 파일이란 무엇인가요?
FIT(Flexible and Interoperable Data Transfer) 파일은 스포츠 기기가 활동을 기록하는 데 사용하는 바이너리 포맷입니다. Garmin 자회사인 Dynastream Innovations가 개발했으며, 시계가 측정하는 모든 것 — 초당 GPS, 심박수, 케이던스, 파워, 랩, 기기 정보, 커스텀 센서 필드 — 을 컴팩트한 자기 기술적 컨테이너에 저장합니다. Garmin, COROS, Wahoo, Zwift의 사실상 표준이며, 모든 주요 트레이닝 플랫폼이 읽을 수 있습니다.
Garmin Connect 없이 FIT 파일을 여는 방법은?
브라우저 기반 뷰어를 사용하세요: Hashiri.AI의 무료 FIT Viewer는 계정이나 설치 없이 지도, 페이스/HR/고도 차트, 랩 테이블을 렌더링합니다. 또는 파일을 Strava, TrainingPeaks, intervals.icu에 업로드하거나 데스크톱에서 GoldenCheetah(전체 분석)나 GPXSee(빠른 궤적 보기)로 열 수 있습니다. 이 모든 도구는 동일한 바이너리 레코드를 디코딩합니다 — 빠르게 보고 싶은지 영구적으로 가져오고 싶은지에 따라 선택하세요.
FIT 파일을 CSV로 변환하는 방법은?
FIT CSV 변환기를 사용하세요 — Hashiri.AI의 무료 FIT Converter는 브라우저에서 실행됩니다: 파일을 드롭하면 초당 한 행에 타임스탬프, 위치, 거리, 페이스, 심박수, 케이던스, 고도, 파워, 온도 열을 가진 CSV를 다운로드할 수 있습니다. 프로그래머는 Garmin의 공식 FIT SDK(JavaScript, Python, Java, C#)나 Python의 fitparse/fitdecode 라이브러리로 같은 변환을 몇 줄의 코드로 스크립트화할 수 있습니다.
Excel에서 FIT 파일을 직접 열 수 있나요?
아니요. FIT은 바이너리 포맷입니다: 값들이 정의 메시지와 FIT Profile로부터 의미를 얻는 원시 타입 지정 바이트로 저장되므로, 구분자로 나뉜 텍스트를 기대하는 Excel은 읽을 수 없는 문자를 표시합니다. 먼저 FIT 변환기로 파일을 CSV로 변환한 뒤 Excel이나 Google Sheets에서 CSV를 여세요. 변환 후에는 다른 데이터셋처럼 필터링, 차트 작성, 계산이 가능한 깔끔한 초당 열을 얻게 됩니다.
FIT, GPX, TCX의 차이는 무엇인가요?
GPX는 GPS 궤적을 위한 공개 XML 포맷입니다: 위치, 고도, 시간을 담고, 심박수나 케이던스는 선택적 확장으로만 가능하며 랩 개념이 없습니다. TCX는 랩, HR, 케이던스, 칼로리를 추가한 Garmin의 더 오래된 XML 트레이닝 포맷입니다. FIT은 모든 것 — 모든 센서 데이터, 랩, R-R 간격, 기기 메타데이터, 개발자 필드 — 을 약 5~10배 작은 파일 크기로 저장하는 바이너리 포맷입니다. FIT이 가장 풍부하고 컴팩트하며, GPX는 경로 공유에 가장 보편적으로 읽히는 포맷입니다.
FIT을 GPX로 변환하면 데이터를 잃나요?
네, 항상 일부를 잃습니다. 위치, 고도, 타임스탬프는 깔끔하게 변환되고, 심박수, 케이던스, 온도는 변환기가 Garmin TrackPointExtension 태그를 기록하면 살아남을 수 있습니다. 하지만 랩과 스플릿, 러닝 파워, 러닝 다이내믹스, R-R 간격, 칼로리, 기기 정보는 GPX에 담을 자리가 없어 영구적으로 삭제됩니다. GPX는 경로 공유용으로 사용하고, 실제 훈련 데이터의 보관용 사본으로는 FIT 파일을 유지하세요.
Strava에서 원본 FIT 파일을 받는 방법은?
활동을 열고 점 세 개 메뉴를 클릭한 뒤 '원본 내보내기(Export Original)'를 선택하세요 — Strava가 수신한 그대로의 파일을 받게 되며, Garmin, COROS, Wahoo 기기에서 동기화된 활동이라면 FIT입니다. 전체 기록은 설정 → 내 계정에서 계정 일괄 내보내기를 요청하세요. Strava 휴대폰 앱으로 기록한 활동은 FIT 원본이 없고(GPX를 받습니다), 별도의 'GPX 내보내기' 옵션은 원본 파일이 아닌 손실 변환본이라는 점에 유의하세요.
Apple Watch에서 FIT 파일을 얻는 방법은?
Apple Watch는 FIT을 직접 기록하지 않습니다 — 운동은 HealthKit에 저장됩니다. 서드파티 앱이 그 간극을 메웁니다: HealthFit과 RunGap은 HealthKit 운동을 읽어 GPS, 심박수, 러닝 파워를 포함한 표준 FIT 파일로 내보내거나 Strava, TrainingPeaks 등의 플랫폼에 직접 동기화합니다. FIT 기반 트레이닝 도구나 개인 아카이브에 데이터를 보관하고 싶은 Apple Watch 러너의 표준 경로입니다.
손상된 FIT 파일을 복구하는 방법은?
손상은 보통 잘림을 의미합니다 — 마지막 session 메시지와 CRC를 기록하기 전에 시계가 멈춘 것입니다. 각 데이터 레코드가 자기 완결적이므로 복구 도구가 파일을 재구성할 수 있습니다: FIT File Tools의 무료 유틸리티는 손상 파일 복구, 타임스탬프 조정, 분리된 활동 결합, 불량 구간 제거를 지원합니다. GoldenCheetah는 다른 플랫폼이 거부하는 파일도 종종 가져오며, Garmin의 FitCSVTool(FIT SDK 포함)은 파일을 CSV로 왕복 변환하여 유효한 구조를 재생성할 수 있습니다.
같은 FIT 파일인데 Strava와 Garmin의 고도가 다른 이유는?
서로 다른 고도 소스를 사용하기 때문입니다. 기압식 시계는 기압에서 도출된 고도를 파일에 기록하고, GPS 전용 기기는 잡음 많은 위성 고도를 기록하며, Strava 같은 플랫폼은 비기압 기기에 대해 DEM 보정 — 기록된 값을 궤적을 따라 지형 데이터베이스 조회값으로 대체 — 을 적용합니다. 각 방법이 작은 오르내림을 다르게 합산하므로 총 상승 고도가 갈라집니다. 고도는 하나의 플랫폼 안에서만 비교하고, 실제로 무엇이 기록되었는지는 FIT 파일의 원시 고도 열을 확인하세요.
FIT 파일을 몇 초 만에 변환하세요
무료 FIT Converter는 어떤 FIT 파일이든 브라우저에서 바로 깔끔한 CSV로 변환합니다 — 초당 타임스탬프, GPS, 페이스, 심박수, 케이던스, 고도, 파워, 온도가 Excel이나 Google Sheets에서 바로 쓸 수 있게 준비됩니다. 계정도, 서버 업로드도, 제한도 없습니다.
FIT Converter 열기