JWT 디코더
토큰을 붙여넣으면 안에 무엇이 들었는지 보여줍니다. 서명 검증은 하지 않습니다. 내용을 읽는 용도입니다.
JWT 디코더
토큰 붙여넣기
헤더·페이로드를 해독합니다. 서명은 검증하지 않습니다
JWT의 내용은 암호화되어 있지 않습니다. Base64url 인코딩일 뿐이라 토큰을 가진 사람은 누구나 읽을 수 있습니다. 비밀번호나 주민등록번호를 토큰에 담으면 그대로 노출됩니다.
사용법
- 토큰을 붙여넣으면 헤더와 페이로드가 바로 풀립니다. Bearer 접두어가 붙어 있어도 자동으로 떼어 냅니다.
- 표준 클레임에는 한국어 설명이 붙고, exp·iat 같은 시각은 사람이 읽는 형태로 바뀝니다.
- 위쪽에 만료 여부와 남은 시간이 표시됩니다. 지금 보는 기기의 시계 기준입니다.
- JSON 복사로 원본 구조를 그대로 가져갈 수 있습니다.
JWT를 다룰 때 알아야 할 것
JWT는 점(.)으로 나뉜 세 부분입니다. 헤더는 서명 알고리즘, 페이로드는 담긴 정보, 마지막이 서명입니다. 앞의 두 부분은 Base64url로 인코딩된 JSON이라 누구나 읽을 수 있습니다. 서명은 "이 내용이 발급 후 바뀌지 않았다"는 것만 보장하고, 내용을 감추지는 않습니다.
그래서 민감한 정보를 토큰에 담으면 안 됩니다. 비밀번호는 물론이고 주민등록번호·전화번호 같은 개인정보도 담지 않는 것이 원칙입니다. 사용자 식별자와 권한 범위 정도만 넣고 나머지는 서버에서 조회하세요.
표준 클레임 중 exp(만료), iat(발급 시각), nbf(이 시각 전 무효)는 유닉스 초 단위입니다. 밀리초로 넣으면 5만 년 뒤가 되어 사실상 만료되지 않는 토큰이 됩니다.
헤더의 alg가 none이면 서명이 없다는 뜻입니다. 과거에 서명을 지우고 alg를 none으로 바꿔 검증을 우회하는 공격이 있었으므로, 검증하는 쪽은 허용할 알고리즘을 미리 정해 두고 토큰이 주장하는 alg를 그대로 믿으면 안 됩니다.
자주 묻는 질문
- 서명이 올바른지도 확인해 주나요?
- 하지 않습니다. 서명을 검증하려면 발급자의 비밀키나 공개키가 필요한데, 그 키를 웹 도구에 붙여넣는 것 자체가 위험합니다. 이 도구는 토큰에 무엇이 담겼는지 읽어 보는 용도입니다. 검증은 서버나 라이브러리에서 하세요.
- JWT에 비밀번호를 넣어도 되나요?
- 절대 안 됩니다. JWT의 페이로드는 암호화가 아니라 Base64url 인코딩일 뿐이라 누구나 되돌려 읽습니다. 이 도구도 키 없이 내용을 그대로 보여 줍니다. 서명은 "내용이 바뀌지 않았음"을 보장할 뿐 "내용이 감춰짐"을 보장하지 않습니다. 민감한 정보는 토큰에 담지 말고 서버에 두세요.
- exp가 지났는데 왜 아직 되나요?
- 만료 판정은 검증하는 쪽이 합니다. 서버가 exp를 확인하지 않으면 지난 토큰도 통과합니다. 반대로 서버와 클라이언트의 시계가 어긋나면 아직 유효한 토큰이 만료로 처리되기도 합니다. 이 도구의 판정은 지금 보는 기기의 시계 기준입니다.
- alg가 none이면 무슨 뜻인가요?
- 서명이 없다는 뜻입니다. 과거에 이를 악용해 서명을 지우고 alg를 none으로 바꿔 검증을 우회하는 공격이 있었습니다. 검증하는 쪽에서 허용할 알고리즘을 미리 정해 두고 토큰이 말하는 alg를 그대로 믿지 않아야 합니다.
- 토큰이 서버로 전송되나요?
- 전송되지 않습니다. 브라우저 안에서만 해독하며 페이지를 새로 고치면 사라집니다. 다만 실제로 쓰이고 있는 토큰이라면 화면이 노출되는 환경에서 다루지 마세요.
이 도구는 브라우저 안에서만 계산하며 입력값을 서버로 보내지 않습니다. 분류: 개발 · 마지막 수정 2026-09-08