TTFB(Time to First Byte, 첫 바이트 시간)는 브라우저가 페이지 요청을 시작한 시점부터 서버 응답의 첫 바이트가 도착하기 시작한 시점까지 걸린 시간으로, 서버 응답 속도와 연결 설정 시간을 함께 나타내는 웹 성능 지표다.
구글 web.dev는 TTFB를 “페이지 탐색을 시작한 시점과 응답의 첫 바이트가 도착하기 시작한 시점 사이의 시간을 재는 지표”로 정의한다 (web.dev, Time to First Byte (TTFB)). MDN은 같은 구간을 responseStart - navigationStart라는 식으로 적는다 (MDN, Time to first byte).
코어 웹 바이탈 세 지표에는 들어가지 않지만, LCP와 FCP보다 앞에 오는 기초 지표라서 TTFB가 느리면 뒤의 모든 렌더링 지표가 같이 밀린다.
TTFB는 서버 처리 시간만이 아니라 리디렉션, DNS 조회, 연결과 TLS 협상까지 요청 앞단의 모든 대기를 합친 값이다. web.dev는 포함 구간을 다섯으로 나눈다 (web.dev, Time to First Byte (TTFB)).
| 단계 | 내용 | 주로 늘리는 원인 |
|---|---|---|
| 리디렉션 시간 | 301, 302로 다른 URL로 넘어가는 시간 | http에서 https로 가는 리디렉션, 슬래시 유무 리디렉션 체인 |
| 서비스 워커 시작 | 서비스 워커가 등록된 사이트에서만 발생 | 무거운 서비스 워커 초기화 |
| DNS 조회 | 도메인을 IP 주소로 바꾸는 시간 | 느린 DNS 제공자, 낮은 TTL |
| 연결과 TLS 협상 | TCP 연결과 HTTPS 암호화 설정 | 먼 서버, HTTP/1.1, 긴 인증서 체인 |
| 요청에서 첫 바이트까지 | 서버가 HTML을 만들어 보내기 시작할 때까지 | 느린 DB 쿼리, 캐시 미사용, 부족한 서버 자원 |
그래서 서버 코드가 빨라도 사용자가 다른 대륙에 있거나 리디렉션이 두 번 걸리면 TTFB는 나쁘게 나온다. 어느 단계가 문제인지는 뒤의 측정 절에서 나오는 브라우저 개발자 도구의 타이밍 분해로 확인한다.
구글 기준으로 0.8초(800ms) 이하가 양호, 1.8초 초과가 나쁨이고, 그 사이는 개선 필요다. 이 기준은 사이트 방문의 75번째 백분위수에 적용한다 (web.dev, Time to First Byte (TTFB)).
| 판정 | TTFB | 비고 |
|---|---|---|
| 양호 | 0.8초 이하 | 방문의 75%가 이 안에 들어야 함 |
| 개선 필요 | 0.8초 초과 1.8초 이하 | |
| 나쁨 | 1.8초 초과 |
실험실 도구는 더 엄격하다. Lighthouse의 “초기 서버 응답 시간 단축” 감사는 메인 문서 요청에 대한 서버 응답 대기가 600ms를 넘으면 실패로 표시한다 (Chrome for Developers, Reduce server response times).
이 기준을 넘는 사이트는 절반이 안 된다. HTTP Archive의 2024년 조사에서 모바일 웹사이트의 42%만 양호 TTFB였고 40%는 개선 필요, 19%는 나쁨이었으며, 양호 비율은 2021년 41%에서 거의 움직이지 않았다 (HTTP Archive, Web Almanac 2024 Performance).
web.dev는 TTFB가 코어 웹 바이탈이 아니므로 모든 사이트가 반드시 양호 기준을 맞춰야 하는 것은 아니라고 덧붙인다. 다만 아래 이유 때문에 실무에서는 LCP를 관리하는 사이트라면 TTFB를 먼저 본다.
TTFB는 LCP를 구성하는 하위 구간 가운데 가장 큰 몫을 차지하고, 구글 크롤러가 사이트를 얼마나 크롤링할지에도 영향을 준다.
먼저 LCP다. HTTP Archive는 LCP가 나쁜 사이트가 TTFB에만 2.27초를 쓴다고 밝혔는데, 이 값 하나가 양호 LCP 기준인 2.5초에 거의 맞먹는다 (HTTP Archive, Web Almanac 2024 Performance). 첫 바이트가 2초 넘게 안 오면 이미지 최적화를 아무리 해도 LCP를 2.5초 안에 넣을 수 없다.
다음은 크롤링이다. 구글은 사이트 속도가 느려지거나 응답 시간이 늘면 크롤링 용량 한도를 내려 크롤링을 줄인다고 밝히고, 크롤링 효율을 높이는 방법으로 “서버 응답 시간과 리소스를 최적화하여 페이지 로드 속도를 높입니다”를 적는다 (Google 검색 센터, 대규모 사이트의 크롤링 예산 관리). 페이지가 수만 개인 사이트에서 TTFB는 색인 속도 문제이기도 하다.
마지막은 AI 크롤러다. ChatGPT나 퍼플렉시티의 크롤러도 HTML 첫 바이트를 받은 뒤에야 본문을 읽으므로, 응답이 느린 서버는 AI 크롤러의 수집 빈도에서도 불리하다.
실사용자 데이터는 CrUX와 PageSpeed Insights에서, 실험실 값은 브라우저 개발자 도구와 WebPageTest에서 본다. web.dev가 나열한 측정 경로는 다음과 같다 (web.dev, Time to First Byte (TTFB)).
import {onTTFB} from 'web-vitals';
onTTFB(console.log);
터미널에서 curl로 재는 방법도 있다. curl -o /dev/null -w "%{time_starttransfer}\n" https://example.com/이 첫 바이트까지의 초 단위 시간을 찍는다.
2026년 10월 1일 서울의 맥미니에서 이 위키 페이지 하나(/wiki/lcp/)를 curl로 5회 잰 자체 실측값은 다음과 같다. 브라우저 렌더링이 없는 단일 지점 측정이라 CrUX 값과 직접 비교할 수는 없고, 단계별 분해가 어떻게 나오는지 보여 주는 예시다.
| 회차 | DNS | 연결 | TLS 완료 | TTFB |
|---|---|---|---|---|
| 1회(첫 연결) | 0.019초 | 0.060초 | 0.110초 | 0.365초 |
| 2회 | 0.003초 | 0.043초 | 0.092초 | 0.152초 |
| 3회 | 0.003초 | 0.044초 | 0.095초 | 0.156초 |
| 4회 | 0.004초 | 0.043초 | 0.091초 | 0.151초 |
| 5회 | 0.003초 | 0.043초 | 0.096초 | 0.161초 |
첫 회차는 DNS 캐시가 비어 있고 CDN 엣지 캐시도 식은 상태라 0.365초가 나왔고, 캐시가 채워진 뒤로는 0.15초 안팎으로 떨어졌다. TTFB 0.15초 가운데 0.09초가 연결과 TLS 설정이라 정적 페이지에서는 서버 처리보다 연결 단계가 더 큰 몫이라는 점이 보인다.
호스팅 용량 확보, CDN, 캐시, 리디렉션 제거가 기본이고, 그다음이 스트리밍 렌더링과 103 Early Hints 같은 프로토콜 수준 기법이다. web.dev의 최적화 가이드가 제시한 순서대로 정리했다 (web.dev, Optimize Time to First Byte).
Cache-Control로 엣지와 브라우저 캐시를 지정하고, 배포 때 캐시를 무효화하며, URL 파라미터가 캐시를 우회하지 않게 정리한다.Strict-Transport-Security 헤더와 HSTS 프리로드로 막는다.원인을 모르면 서버가 Server-Timing 응답 헤더로 DB 시간, 렌더 시간 같은 백엔드 단계를 내려보내게 하고, 필드 데이터에서 어느 단계가 긴지 확인한 뒤 손댄다. web.dev는 실험실 TTFB와 필드 TTFB가 다를 수 있으니 필드 값을 기준으로 디버깅하라고 권한다.
포함되지 않는다. 코어 웹 바이탈은 LCP, INP, CLS 세 가지이고, TTFB는 구글이 “기초 지표”로 분류하는 진단용 지표다 (web.dev, Time to First Byte (TTFB)). 다만 LCP의 가장 큰 하위 구간이라 LCP를 고치려면 결국 TTFB부터 본다.
크롬 네트워크 패널 타이밍 탭에서 요청을 보낸 뒤 서버의 첫 응답 바이트를 기다린 구간이다. 이 값은 DNS와 연결 시간을 뺀 서버 처리 시간에 가까우므로, web.dev가 정의하는 TTFB(탐색 시작 기준)보다 작게 나온다.
먼저 PageSpeed Insights에서 필드 TTFB가 0.8초를 넘는지 확인하고, 넘으면 리디렉션 체인과 CDN 캐시 적중 여부부터 본다. 둘 다 정상인데 느리면 Server-Timing 헤더로 백엔드 단계를 분해해 DB 쿼리나 렌더링 시간을 줄인다.
Time to First Byte의 약자로, 첫 바이트까지의 시간이다. 사용자가 페이지로 이동을 시작한 순간부터 서버 응답의 첫 번째 바이트가 브라우저에 도착하기 시작한 순간까지를 잰다.
서치폴라리스가 AI 검색 가시성을 진단하고 GEO 실행까지 대행합니다.