JWT 디코더
JWT 토큰 안 뭐 들었는지 열어보기. 헤더·페이로드·서명 분해 + 만료 체크.
쓰는 법
- Authorization 헤더의
Bearer뒤 부분이나 로컬스토리지에 저장된 토큰 전체 복사. - 입력창에 붙여넣기. Enter 눌러도 되고 디코딩 버튼 눌러도 돼요.
- 헤더(알고리즘, 타입), 페이로드(사용자 ID, 역할, 만료), 서명이 각각 분리돼서 표시됩니다.
- 만료 시간(exp)은 자동으로 사람이 읽을 수 있는 날짜로 변환되고, 만료됐으면 빨간색으로 표시.
- 각 섹션 복사 버튼으로 필요한 부분만 가져갈 수 있어요.
JWT는 원래 암호화가 아니라 '서명된 JSON'
JWT(JSON Web Token)는 점으로 구분된 세 덩어리(xxx.yyy.zzz)로 돼 있어요. 앞 두 덩어리는 단순히 Base64URL로 인코딩된 JSON이라서 누구든 열어보면 안에 뭐 들었는지 보여요. 세 번째 덩어리는 서명이고요.
그래서 '이 토큰이 진짜 맞나?' 검증은 서버에서 비밀 키로 하는 거고, '이 토큰 안에 누구 정보가 들었지?'는 여기서 바로 확인할 수 있어요. 디버깅할 때 자주 쓰시게 될 거예요.
여기 편한 점
- 붙여넣자마자 0.5초 안에 디코딩됩니다.
- JSON이 색상 강조돼서 클레임 구조 파악이 빨라요.
- exp(만료), iat(발행 시간) 클레임은 Unix 타임스탬프에서 사람 읽기 좋은 날짜로 자동 변환. '아직 유효함'인지 '30분 전 만료'인지 바로 보여요.
- 토큰은 브라우저 밖으로 안 나가요. 서버 요청, 로깅, 저장 전부 없음.
- 헤더/페이로드/서명 각각 따로 복사 가능.
- 토큰 형식이 잘못됐으면 어디가 이상한지 명확한 에러 메시지로 알려줘요.
- 샘플 JWT 로드 버튼도 있어서 포맷 배우기 좋아요.
다른 JWT 디코더랑 비교
| 항목 | FreeToolbox | jwt.io | token.dev |
|---|---|---|---|
| 동작 위치 | 브라우저 | 브라우저 | 브라우저 |
| 외부 스크립트 | 없음 | 라이브러리 로드 | 라이브러리 로드 |
| 만료 자동 체크 | 있음 | 수동 | 있음 |
| 섹션별 복사 | 있음 | 없음 | 없음 |
| 광고 | 거의 없음 | 있음 | 있음 |
자주 묻는 질문
JWT가 정확히 뭐예요?
점으로 나뉜 세 덩어리(헤더.페이로드.서명)로 된 토큰 형식이에요. 로그인 상태, 사용자 ID, 권한 같은 정보를 서버와 클라이언트 사이에서 주고받을 때 씁니다. 서명 덕분에 변조되면 서버에서 바로 감지할 수 있어요.
서명 검증도 해주나요?
아니요, 여긴 디코딩만 해요. 서명 검증은 비밀 키(HS256) 또는 공개 키(RS256)가 필요한데, 그걸 브라우저 도구에 넣으면 안 되거든요. 검증은 백엔드에서 jsonwebtoken 같은 라이브러리로 돌리세요.
여기 JWT 붙여넣어도 안전한가요?
이 도구 자체는 브라우저에서 돌아가니까 서버 전송, 저장, 로깅 없어요. 다만 JWT 안에는 사용자 ID나 권한 정보가 들었을 수 있으니까 원칙적으로는 토큰 자체 관리에 주의하시는 게 좋아요.
exp 클레임이 뭐예요?
Expiration Time. 이 토큰을 언제까지 받을지 정한 Unix 타임스탬프(1970-01-01 이후 초)예요. 여기서는 자동으로 2026-04-25 14:30:00 같은 사람 읽기 좋은 형식으로 바꿔주고, 지금 시각이랑 비교해서 만료 여부도 표시합니다.
'유효하지 않은 토큰' 뜨는 이유가 뭐예요?
보통 세 가지예요. (1) 점이 2개가 아닌 경우 → JWT가 아닐 수 있어요. (2) 헤더/페이로드가 Base64URL 형식이 아닌 경우. (3) 디코딩해도 JSON이 아닌 경우. 토큰 복사할 때 앞뒤 공백이나 줄바꿈 섞이진 않았는지 먼저 확인하세요.