위에서 파일을 고르면 바로 열립니다.준비됨 — 인터넷을 끊어도 이대로 동작합니다.이 브라우저에서는 쓸 수 없습니다 (나머지는 그대로 동작합니다).오프라인 저장에는 https:// 또는 localhost가 필요합니다.여기서는 저장할 수 없지만, 어느 쪽이든 올라가는 것은 없습니다.파일은 어디로도 가지 않았습니다. 파일 {total}개를 불러왔고 모두 이 사이트의 것입니다. {platform}무언가가 {hosts}에 접속했는데, 이 도구는 절대 그러지 않습니다. 살펴볼 만합니다. {platform}광고와 측정과 후원 버튼을 위한 이 사이트 자신의 스크립트가 호스트 {hosts}곳에서 왔습니다. 그중 어느 쪽도 파일이나 그 1바이트도 받지 않았습니다.광고와 측정과 후원 버튼을 위한 이 사이트 자신의 스크립트가 호스트 {hosts}곳에서 왔습니다. 그중 어느 쪽도 파일이나 그 1바이트도 받지 않았습니다.문제가 생겼습니다: {detail}. 처음부터 다시 하려면 페이지를 새로 고치세요.파일 {count}개를 읽는 중…파일 {count}개를 읽는 중…예시로 해 보기예시를 만드는 중…이 브라우저에서는 예시를 만들지 못했습니다. 대신 파일을 골라 주세요.
파일을 열고 뜯어보는 일은 내 브라우저가 합니다. 블록 구조를 읽는 것도, LZW를 푸는 것도, 이 페이지에 그려지는 모든 프레임도 이 기기에서 일어납니다. 여기 있는 무언가가 보내려 한다 해도, 이 페이지 반대편에는 파일을 받아 줄 서버 자체가 없습니다.
✗ 업로드 없음
✗ 가입 없음
✓ 오프라인 동작
✓ 오픈 소스
✓ 파일은 기기 밖으로 나가지 않음
실시간 확인:확인 중…
오프라인:확인 중…
그냥 믿지 마시고 직접 확인해 보세요. 개발자 도구의 '네트워크' 탭을 켜 놓고 GIF를 분석해 보십시오. 이미지도, 미리보기도, 파일 이름도 실려 나가는 요청이 없습니다. 아니면 인터넷을 끊고 그냥 분석해 보셔도 됩니다.
이 약속을 직접 확인하는 방법
내 GIF는 나갈 곳이 없습니다. Content-Security-Policy에는 이 페이지가 연결할 수 있는 주소가 전부 적혀 있고, 그중 이 사이트 것은 하나도 없습니다. 파일이 모일 수 있는 수신처가 여기엔 없고, 있다 한들 그리로 보낼 코드도 없습니다. 예전에는 이 자리에 예외를 두지 않는 connect-src 'none'이 있었습니다. 광고를 넣으면서 그걸 잃었고, 그 사실을 말하는 것까지가 약속입니다.
판독기는 이 저장소의 파일 네 개입니다. 파일 안에 무엇이 있는지 알아내는 데 브라우저의 GIF 디코더를 쓰지 않습니다. 그 디코더는 어느 바이트가 어디로 갔는지 말해 주지 않으니까요. 그래서 포맷을 손으로 읽습니다. src/gif.js가 블록을 훑고, src/lzw.js가 픽셀을 펼치고, src/frames.js가 그것을 쌓고, src/budget.js가 조각들을 다시 더해서 파일 크기가 맞는지 확인합니다.
주석과 메타데이터는 나에게만 보입니다. GIF에는 주석 블록이나, 어떤 편집을 했는지 적은 XMP 패킷, 색상 프로파일이 들어 있을 수 있고, 이 페이지는 그것을 전부 찍어 줍니다. 그것들은 눈앞의 화면에 놓일 뿐 다른 어디로도 가지 않습니다. 이 저장소에는 그것을 실어 보내는 분석 이벤트가 하나도 없고, 있다 한들 이 페이지는 보낼 수 없습니다.
구글이 불러오는 것과, 구글에게 주지 않는 것. 광고와 측정 스크립트는 구글에서 옵니다. 둘 중 어느 쪽에도 내 파일에 관한 것은 넘어가지 않습니다. 파일도, 미리보기도, 이름도, 크기도, 프레임 수도, 주석도 마찬가지입니다. GIF를 읽고 풀고 그리는 코드는 한 줄도 빠짐없이 이 출처에서 제공되고 저장소에 공개되어 있습니다.
후원 버튼이 불러오는 것과, 거기에 주지 않는 것. 머리글의 'Buy me a coffee' 버튼은 cdnjs.buymeacoffee.com의 스크립트가 그리고 글꼴은 Google Fonts에서 가져옵니다. 그것은 링크 이상은 아닙니다. 방문을 알리지도 않고, 나에 대해서도 내 파일에 대해서도 건네받는 것이 없습니다. 누르지 않으면 아무 일도 일어나지 않고, 눌러서 가는 곳은 남의 사이트입니다.
오프라인에서도 동작합니다. 네트워크를 끊어도 이 페이지의 모든 부분이 그대로 동작합니다. 가장 간단한 증거입니다. 분석하려고 GIF를 어딘가로 보내는 도구라면 선을 뽑는 순간 멈출 테니까요.
직접 확인해 보세요. 위에 적은 어느 것도 그냥 믿으실 필요는 없습니다. 이 페이지는 저장소 안의 템플릿과 설정을 빌드 스크립트가 찍어 낸 결과이고, 그 스크립트는 누구나 읽고 직접 돌려 볼 수 있습니다. 결과물은 dist 브랜치에 그대로 올라가 있고요. 그래서 실제로 제공되는 파일과 소스를 빌드한 결과를 나란히 놓고 비교해 보실 수 있습니다:
먼저 읽어 볼 파일을 꼽자면, Content-Security-Policy는 config/site.toml, 파일을 훑는 블록 판독기는 src/gif.js, 압축을 푸는 쪽은 src/lzw.js, 바이트를 계산하는 쪽은 src/budget.js입니다. 어느 것에도 네트워크에 닿을 수 있는 줄은 없습니다.
회사 보안 소프트웨어가 업로드를 경고한다면. 그것은 브라우저에서 파일이 선택되는 순간을 지켜보며, 페이지가 그것을 보낼 생각인지는 알 수 없습니다 — 그래서 고르는 순간에 경고합니다. 여기서는 아무것도 보내지 않습니다. 브라우저 개발자 도구를 열고 네트워크 탭으로 옮긴 뒤 파일을 골라 보세요. 그것을 실어 나르는 요청은 없고, 이 페이지 자체의 로컬 미리보기 말고는 요청 자체가 없습니다. 같은 확인을 IT 팀도 삼십 초면 할 수 있습니다.
GIF 고르기
—
브라우저 자체의 디코더가 파일을 있는 그대로 재생하고 있습니다.
버전
—
캔버스
—
파일 크기
—
프레임
—
파일에 적힌 길이
—
실제 재생 길이
—
반복
—
쓰인 색
—
눈에 띄는 것
아래는 전부 이 파일에서 잰 값입니다. 무엇을 만들려 했는지에 대한 추측은 하나도 없습니다.
바이트가 어디로 갔는지
파일의 모든 바이트가 딱 한 줄에 들어가고, 줄을 더하면 파일이 됩니다. 더해서 맞지 않으면 막대가 슬그머니 늘어나는 대신 마지막 줄이 그렇게 말합니다.
아래 표와 같은 수치를 막대 하나로 그린 것입니다.
이 파일의 바이트가 어디로 갔는지
부분
바이트
비중
파일 전체
—
100%
프레임별로 보기
색
전역 표
프레임별 표
그 밖에 들어 있는 것
그림을 담고 있지 않은 블록들입니다. 뷰어는 전부 건너뛰지만, 파일의 사본은 그래도 그것들을 계속 들고 다닙니다.
{name} 읽는 중…{name}은(는) GIF가 아닙니다: {why}. 이 도구는 GIF 형식 자체를 읽기 때문에 다른 파일에 대해서는 할 말이 없습니다.{name}을(를) 읽지 못했습니다: {why}파일이 {available}바이트에서 끝나는데, {at} 자리에서 {wanted}바이트가 더 필요했습니다이 파일은 “GIF”가 아니라 {what}(으)로 시작합니다JPEGPNGRIFF 파일 — WebP나 WAVPDFzip 파일바이트 {bytes}코드 크기가 {size}인데, 형식이 허용하는 것은 2에서 8까지입니다{n}프레임{n}프레임{n}색{n}색{n}개 항목{n}개 항목프레임별 표 {n}개프레임별 표 {n}개{n}번{n}번{n}바이트{minutes}분 {seconds}초{n}초{time} ({fps} fps){n}개 프레임이 0.02초보다 짧게 요청하지만, 모든 브라우저가 대신 0.10초 동안 붙잡아 둡니다.한 번 — 반복 블록 없음무한{n}번문제알아 둘 것메모{frames}. 그중 {drawn}개를 여기에 그렸습니다. 나머지는 한꺼번에 메모리에 담기엔 너무 커서 머리말만으로 설명합니다.{frames}, 화면 전체를 덮는 것은 하나도 없습니다.{frames}, 모두 화면 전체를 덮습니다.{frames}, 그중 {n}개가 화면 전체를 덮습니다.나머지 {frames} 보기프레임 {n}이(가) 그 자체로 담고 있는 것프레임 {n} 다음의 화면프레임 {n}그리지 않음지연{delay} → 0.10초사각형{left}, {top}에 {width} × {height}팔레트자체 {n}전역 팔레트아예 없음투명인덱스 {n}없음크기{size} — {share}인터레이스예압축비{ratio}×문제데이터가 일찍 끝납니다이 파일의 표들이 모두 합쳐 {declared}을 선언하고, 픽셀이 가리키는 것은 그중 {referenced}이며, 그중 서로 다른 것이 {different}입니다.{entries}, {size}, {frames}이(가) 함께 씁니다. 흐린 항목은 어떤 픽셀도 가리키지 않는 항목입니다.{tables} (모두 {size})프레임 {n} — {colours}{n} 가운데 앞의 24개를 보여 줍니다. 나머지는 내려받는 보고서에 있습니다.주석입니다. 보여 주는 뷰어는 없고, 파일의 모든 사본이 이것을 들고 다닙니다.무한히 재생하라고 말하는 반복 블록입니다. GIF 규격의 일부가 아니라 넷스케이프가 1995년에 만들어 낸 것인데, 그래도 모두가 구현했습니다.{times} 재생하라고 말하는 반복 블록입니다.XMP 패킷입니다. 이미지 편집기가 자기가 한 일을 적어 두려고 쓰는 XML이고, 이것을 그리는 것은 없습니다.ICC 색 프로파일입니다. 팔레트의 숫자가 색으로서 무엇을 뜻하는지 말해 주지만, GIF 안에서 이것을 읽는 것은 거의 없습니다.평문 블록입니다. 뷰어에게 그림 위에 글자를 그려 달라고 요청하는 것으로, 1989년 규격에 있었지만 어떤 것도 구현한 적이 없습니다.응용 블록입니다. 뷰어는 알아보지 못하는 것을 건너뜁니다.재생 길이적힌 대로 {time}실제 재생{time} - 0.02초 미만인 {n}프레임은 모든 브라우저가 0.10초로 올립니다프레임률초당 {fps}프레임반복반복 블록 없음 - 한 번 재생전역 팔레트{n}색없음그려진 색배경 인덱스복사했습니다. 평문이고, 클립보드로만 갔습니다.이 브라우저가 페이지의 클립보드 쓰기를 허용하지 않았습니다. 대신 “내려받기”를 쓰세요.헤더와 화면 서술자서명과 캔버스 크기와 플래그. 13바이트, 지금까지 만들어진 모든 GIF에 들어 있습니다.전역 색상표색 하나에 3바이트씩 {colours}색. 자기 색상표를 들고 오지 않는 모든 프레임이 함께 씁니다.이 파일에는 없습니다. 프레임마다 자기 팔레트를 들고 있습니다.프레임별 색상표다른 색이 필요했던 프레임이 따로 가진 팔레트입니다. 매번 색 하나에 3바이트씩 듭니다.프레임 타이밍 블록프레임당 8바이트. 지연 시간, 정리 방식, 그리고 어느 색이 투명한지가 들어갑니다.프레임 서술자프레임당 11바이트. 사각형이 어디 놓이는지, 얼마나 큰지, 압축기가 어떤 코드 크기로 시작하는지가 들어갑니다.압축된 픽셀그림 그 자체를 LZW로 압축한 것입니다. 멀쩡한 GIF라면 이것이 파일의 거의 전부입니다.블록 테두리데이터 255바이트마다 길이 바이트 하나, 그리고 각 묶음을 끝내는 0 하나. 피할 수 없고, 볼 만한 값입니다.주석과 메타데이터반복 블록, 주석, 색 프로파일, 그리고 편집기가 남기고 간 XMP 같은 것들입니다.종료 표시파일이 끝났다고 말하는 1바이트입니다.끝난 뒤의 바이트종료 표시 뒤에 놓인 데이터입니다. 어떤 디코더도 읽지 않고, 순전히 무게일 뿐입니다.셈에 들어가지 않은 것이 리더가 멈춰 선 블록 안의 바이트입니다. 블록 도중에 끝나는 파일은 이런 바이트를 남깁니다.두 번 센 것블록이 겹칩니다. 이 파일이 블록의 시작 위치를 두고 스스로 어긋난다는 뜻입니다.지정되지 않음그대로 두기배경으로 되돌리기아래에 있던 것 되살리기예약됨 ({n})정리 방식GIF 분석 — {name}abox.tools/gif-analyzer/ 가 브라우저 안에서만 읽었습니다. 파일은 업로드되지 않았습니다.파일버전캔버스{width} x {height} 픽셀크기{rounded} ({exact})프레임바이트가 어디로 갔는지합계눈에 띄는 것프레임 목록파일이 담고 있는 텍스트전역 팔레트자체 {colours}색전역캔버스 전체번호위치크기지연정리팔레트바이트파일이 종료 바이트 없이 끝나 불완전합니다 — 일찍 끊긴 내려받기이거나 중간에서 잘린 파일입니다.{at}번 바이트가 0x{marker}인데, 이 형식의 어떤 블록도 그렇게 시작하지 않습니다. 그 뒤는 모두 무시했습니다.그래픽 제어 블록이 {first}과 {second}에 연달아 두 개 있습니다. 첫 번째는 어떤 이미지도 설명하지 않고 아무 일도 하지 않습니다.{at}에서 시작하는 블록의 한가운데에서 파일이 끝납니다. {detail}.사전에 아직 아무것도 없는데 코드 {code}이 먼저 나왔습니다. 뷰어는 할 수 있는 만큼 그리고 사각형의 나머지는 비워 둡니다.코드 {code}이 사전 항목 {code}번을 가리키는데, 항목은 {entries}개뿐입니다. 뷰어는 할 수 있는 만큼 그리고 사각형의 나머지는 비워 둡니다.이 파일에는 프레임이 없습니다.헤더는 읽혔지만 뒤이어 이미지 블록이 오지 않았습니다. 이것이 무엇이든 어떤 뷰어도 여기서 아무것도 그리지 못합니다.파일이 깔끔하게 끝나지 않습니다.파일이 끝난 뒤에 {bytes}가 남아 있습니다.모든 디코더는 종료 바이트에서 멈추므로 이 부분은 읽히지도 그려지지도 않습니다. 대개 첫 파일 뒤에 두 번째 파일이 이어 붙었거나, 프로그램이 제 끝을 넘어 쓴 경우입니다. 종료 바이트에서 파일을 잘라도 잃는 것은 없습니다.한 프레임이 0.02초보다 짧게 머물기를 요구하지만, 그렇게 해 주는 브라우저는 없습니다.{count}개 프레임이 0.02초보다 짧게 머물기를 요구하지만, 그렇게 해 주는 브라우저는 없습니다.넷스케이프 이후 모든 브라우저는 100분의 2초 미만의 지연을 10으로 올림합니다 — 1996년에 그 시절 회전하는 지구본을 위해 쓰인 뒤 한 번도 없어지지 않은 규칙입니다. 그래서 이 애니메이션은 {nominal}이라고 말하면서 실제로는 {real} 동안 재생되어 약 {factor}배 느립니다. 0.01 대신 0.02로 적으면 원하던 속도가 나옵니다.모든 프레임의 지연이 0입니다.파일이 시간을 전혀 지정하지 않아 재생 속도는 전적으로 뷰어에 달려 있습니다 — 보통 초당 열 프레임이지만 보장하는 것은 없습니다. 두 브라우저가 서로 다른 속도로 재생해도 둘 다 옳습니다.프레임 간격이 고르지 않습니다: {shortest}부터 {longest}까지 {delays}가지 지연이 섞여 있습니다.마지막 프레임을 길게 잡아 두는 것은 의도적이고 흔합니다. 중간에 지연이 흩어져 있다면 대개 변환기가 영상에서 프레임을 버리고 그 빈자리를 메우려고 이웃 프레임을 늘린 것입니다.반복 블록이 없어서 한 번 재생하고 멈춥니다.반복은 GIF 규격에 없습니다. 1995년 넷스케이프가 만들었는데도 모두가 구현한 블록이고, 그것이 없는 파일은 어느 브라우저에서든 정확히 한 번만 보입니다. 반복할 생각이었다면 이 파일을 쓴 쪽이 블록을 빠뜨린 것입니다.이 파일은 한 번 재생하고 멈춥니다.이 파일은 {count}번 재생하고 멈춥니다.반복 블록이 보통의 0 대신 횟수를 적어 두었습니다. 0은 무한을 뜻합니다. 오래된 뷰어 중에는 횟수를 무시하고 계속 반복하는 것도 있습니다.모든 프레임이 캔버스 전체를 다시 그립니다.GIF는 프레임을 직전과 달라진 사각형만으로 저장할 수 있고, 거의 멈춰 있는 창을 녹화한 파일이 작을 수 있는 이유가 그것입니다. 여기서는 어느 프레임도 그러지 않습니다. 모든 프레임이 {width}×{height} 캔버스 전체입니다. 서로 관계 없는 그림들로 만든 프레임이라면 맞는 방식이고, 촬영하거나 녹화한 것 — 즉 화면 대부분이 움직이지 않는 것 — 이라면 그냥 버리는 용량입니다.{total}개 중 한 프레임이 캔버스 전체를 다시 그리고, 나머지는 달라진 부분만 저장합니다.{total}개 중 {count}개 프레임이 캔버스 전체를 다시 그리고, 나머지는 달라진 부분만 저장합니다.잘 최적화된 GIF가 이렇게 생겼습니다. 캔버스 전체를 그리는 것은 보통 첫 프레임과 그림이 통째로 바뀐 지점들입니다.캔버스 전체를 다시 그리는 프레임이 없습니다.첫 프레임 이후는 모두 달라진 사각형만 저장합니다. 형식을 제대로 쓴 것이고, 이 파일이 이만큼 작은 이유입니다.한 프레임이 캔버스 밖으로 나갑니다.{count}개 프레임이 캔버스 밖으로 나갑니다.캔버스는 {width}×{height}인데 한 프레임이 가장자리를 넘어가는 사각형을 주장합니다. 디코더들은 넘친 부분을 어떻게 할지 의견이 다릅니다. 잘라내는 쪽도 있고 파일을 거부하는 쪽도 있습니다.캔버스는 {width}×{height}인데 일부 프레임이 가장자리를 넘어가는 사각형을 주장합니다. 디코더들은 넘친 부분을 어떻게 할지 의견이 다릅니다. 잘라내는 쪽도 있고 파일을 거부하는 쪽도 있습니다.한 프레임이 자기 색상표를 지니고 있어 {bytes}가 듭니다 — 파일의 {share}입니다.{count}개 프레임이 저마다 색상표를 지니고 있어 {bytes}가 듭니다 — 파일의 {share}입니다.자기 팔레트가 있으면 공용 색상표에 없는 색을 쓸 수 있지만, 쓸 때마다 항목당 3바이트가 듭니다. 프레임들이 같은 장면이라면 전부를 위한 색상표 하나가 더 작고 보기에도 안정적입니다. 프레임마다 팔레트가 출렁이는 것, 그것이 바로 GIF 깜빡임입니다.전역 색상표가 없습니다.잘못된 것은 없습니다 — 여기서는 프레임마다 자기 것을 가져옵니다 — 다만 첫 프레임이 도착하기 전에는 뷰어가 캔버스를 칠할 것이 없다는 뜻입니다.색상표 항목 {entries}개가 전혀 쓰이지 않으며, 그것이 {bytes}입니다.이 파일의 색상표는 {declared}색을 선언하는데 픽셀은 그중 {referenced}색만 가리킵니다. 색상표 길이는 내용과 무관하게 항상 2의 거듭제곱이라, 아홉 색을 쓰는 프레임도 열여섯 자리를 받습니다. 어느 정도의 올림은 피할 수 없습니다. 그보다 훨씬 많다면 팔레트가 결국 프레임에 담긴 그림이 아니라 다른 그림을 위해 만들어진 것입니다.애니메이션 전체가 한 가지 색으로 그려집니다.애니메이션 전체가 {count}가지 색으로 그려집니다.평면적인 그림이고, GIF가 원래 그런 것을 위해 만들어졌습니다. 이런 파일은 잘 압축되고 디더링은 잘 받지 않으니, 얼룩덜룩해 보인다면 꺼야 할 것은 디더링입니다.사진이거나 사진에서 나온 것입니다. GIF는 한 프레임에 최대 256색만 주므로 그라데이션이 있는 것은 모두 근사치로 표현됩니다 — 디더링과, 파일을 크게 만드는 잡음이 거기서 나옵니다.이 파일에는 {bytes}짜리 주석 블록이 있습니다.주석은 어떤 뷰어도 보여 주지 않으면서 파일의 모든 사본이 지니고 다닙니다. 보통 파일을 쓴 프로그램 이름이고, 가끔은 작성자가 공개하려 하지 않았을 것도 들어 있습니다.XMP 메타데이터 패킷이 {bytes}를 차지합니다 — 파일의 {share}입니다.XMP는 이미지 편집기가 자기가 한 일을 기록하려고 쓰는 XML 블록이고, 편집 이력과 소프트웨어, 때로는 작성자까지 담을 수 있습니다. 어떤 뷰어도 그것을 그리지 않습니다. 지워도 그림이 잃는 것은 없습니다.ICC 색 프로파일이 {bytes}를 차지합니다.프로파일은 팔레트의 숫자가 색으로서 무엇을 뜻하는지 알려 줍니다. GIF 안의 것을 읽는 프로그램은 거의 없으니 대개는 값 없는 무게입니다 — 다만 읽는 뷰어에서는 지웠을 때 색이 달라질 수 있습니다.이 파일에는 일반 텍스트 확장이 있습니다.뷰어에게 그림 위에 칸 격자로 글자를 그려 달라고 요청하는 블록입니다. 1989년 규격에 있었고, 어디에서도 구현된 적이 없으며, 모든 디코더가 건너뜁니다. 무엇이 적혀 있든 화면에는 나오지 않습니다.“{name}”이라는 이름의 애플리케이션 블록이 있고, 크기는 {bytes}입니다.애플리케이션 블록은 규격 밖의 것이 GIF 안으로 들어오는 통로입니다. 뷰어는 모르는 블록을 건너뛰므로, 특정한 무언가가 읽고 있지 않다면 이것은 무게일 뿐입니다.한 프레임이 인터레이스로 저장되어 있습니다.{count}개 프레임이 인터레이스로 저장되어 있습니다.느린 회선으로 들어오는 그림이 일찍부터 거친 형태나마 보이도록 행을 네 번에 나누어 저장한 것입니다. 1993년에는 말이 되었고, 행을 순서대로 저장하는 것보다 압축이 조금 나쁘며, 오늘날 이득을 보는 뷰어는 없습니다.이 파일은 GIF89a가 아니라 GIF{version}이라고 말합니다.GIF87a가 먼저 나왔고 타이밍 블록도, 투명도도, 반복 블록도 없습니다. 그중 무엇인가를 담고 있으면서 87a라고 주장하는 파일은 흔합니다 — 디코더가 확인하지 않으니까요 — 다만 헤더를 직접 쓴 게 아니라 복사했다는 표시입니다.배경색이 {index}번인데 전역 색상표에는 항목이 {entries}개뿐입니다.무엇이 깨지지는 않습니다 — 뷰어가 대신 투명을 씁니다 — 다만 그 칸이 한 번도 설정되지 않았거나, 지금 파일에 든 것과 다른 팔레트를 기준으로 설정되었다는 뜻입니다.픽셀 종횡비가 {ratio}(으)로 설정되어 있습니다.픽셀이 정사각형이 아니던 화면을 위한 칸입니다. 요즘 뷰어는 모두 무시하고 저장된 크기 그대로 그리므로, 여기에 기대는 파일은 만든 사람에게만 늘어나 보이고 다른 모두에게는 정상으로 보입니다.압축기가 사전을 {count}번 초기화했습니다.LZW는 진행하면서 사전을 만들고 4,096개 항목까지 담습니다. 가득 차면 인코더가 처음부터 다시 시작합니다. 프레임당 한 번은 정상입니다 — 프레임은 그렇게 시작합니다. 그보다 많다면 그림이 사전을 도중에 소진할 만큼 변화가 많았다는 뜻이고, 사진이나 강한 디더링이 그런 일을 합니다. 그런 파일이 큰 이유입니다.한 프레임이 바로 앞 프레임과 완전히 같습니다.{count}개 프레임이 바로 앞 프레임과 완전히 같습니다.압축된 크기를 고스란히 쓰면서 화면에서는 아무것도 바꾸지 않습니다. 대신 그 지연을 앞 프레임에 더하면 보기에는 똑같으면서 크기는 더 작습니다.한 프레임이 끝까지 디코딩되지 않습니다.{count}개 프레임이 끝까지 디코딩되지 않습니다.프레임이 다 차기 전에 압축 데이터가 끝납니다. 뷰어는 할 수 있는 만큼 그리고 사각형의 나머지는 비워 둡니다.GIF는 어디로도 가지 않았습니다. 파일 {total}개를 불러왔습니다. {platform}무언가가 {hosts}에 접속했는데, 이 도구는 절대 그러지 않습니다. {platform}광고와 측정과 후원 버튼을 위한 이 사이트 자신의 스크립트가 호스트 {hosts}곳에서 왔습니다. 그중 어느 쪽도 파일을 받지 않았습니다.광고와 측정과 후원 버튼을 위한 이 사이트 자신의 스크립트가 호스트 {hosts}곳에서 왔습니다. 그중 어느 쪽도 파일을 받지 않았습니다.
원하는 결과가 나왔나요?
무엇이 잘못됐나요?
고맙습니다 — 큰 도움이 됩니다.
보내지는 것은 답변뿐이고, 그것도 버튼을 눌렀을 때만입니다. 파일도, 파일 이름도, 파일에 관한 어떤 정보도 보내지 않습니다.
# GIF 분석 — GIF 안에 실제로 무엇이 있는지
프레임, 재생 시간, 팔레트, 그리고 바이트가 어디로 갔는지.
> 브라우저에서 GIF를 뜯어봅니다. 프레임마다의 재생 시간과 폐기 방식, 색상 표, 반복 횟수, 그리고 용량이 어디로 갔는지 바이트 단위로 보여 줍니다. 아무것도 업로드되지 않습니다.
이 페이지는 브라우저 안에서만 동작하는 대화형 도구입니다(https://abox.tools/ko/gif-분석/). 도구에 넘긴 어떤 것도 업로드되지 않습니다. 아래는 이 페이지가 도구에 대해 글로 설명하는 내용 전부입니다. 도구를 쓰려면 이 주소를 여세요.
## GIF는 **절대 업로드되지 않습니다**. 서버가 아예 없으니까요.
파일을 열고 뜯어보는 일은 내 브라우저가 합니다. 블록 구조를 읽는 것도, LZW를 푸는 것도, 이 페이지에 그려지는 모든 프레임도 이 기기에서 일어납니다. 여기 있는 무언가가 보내려 한다 해도, 이 페이지 반대편에는 파일을 받아 줄 서버 자체가 없습니다.
- ✗ 업로드 없음
- ✗ 가입 없음
- ✓ 오프라인 동작
- ✓ 오픈 소스
- ✓ 파일은 기기 밖으로 나가지 않음
## GIF를 분석하는 방법
1. **GIF를 고릅니다.** 선택 영역에 끌어다 놓거나 직접 찾아 주십시오. 브라우저가 디스크에서 바로 읽고, 그동안 무엇도 어디로 나가지 않습니다.
2. **요약부터 읽으십시오.** 캔버스 크기, 프레임 수, 애니메이션이 스스로 밝히는 길이, 그리고 실제로 재생되는 길이입니다. 뒤의 둘은 사람들이 생각하는 것보다 자주 어긋나고, 이유는 다음 절에 있습니다.
3. **눈에 띄는 것을 보십시오.** 거기 적힌 한 줄 한 줄이 내 파일에서 잰 값입니다. 어느 브라우저도 지키지 않을 재생 시간, 빠져 있는 반복 블록, 아무도 가리키지 않는 색상 표, 어떤 프레임보다 큰 메타데이터. 무엇을 만들려 했는지에 대한 추측은 하나도 없습니다.
4. **바이트가 어디로 갔는지 보십시오.** 파일의 모든 바이트가 딱 한 줄에 들어가고, 줄을 더하면 파일이 됩니다. 대부분이 '압축된 픽셀'에 있지 않다면, 표의 나머지가 그것이 대신 어디에 있는지 말해 줍니다.
5. **프레임을 훑어보십시오.** 각 프레임마다 재생 시간, 사각형, 폐기 방식, 크기가 나옵니다. '프레임마다의 캔버스'와 '각 프레임이 저장한 것만'을 번갈아 보십시오. 파일이 최적화됐는지는 뒤쪽에서 드러납니다. 잘 만든 GIF는 아주 작은 사각형만 저장하고, 못 만든 GIF는 매번 그림 전체를 저장하니까요.
6. **필요하면 보고서를 가져가십시오.** 분석 전체를 일반 텍스트로. 메시지에 붙여 넣어도 되고 파일 옆에 두어도 됩니다. 이미 화면에 있는 내용으로 페이지 안에서 만들어집니다.
## 자세한 설명
[GIF 안에는 실제로 무엇이 있나](https://abox.tools/ko/가이드/gif-파일-구조/): 프레임, 지연 시간, 처리 방식, 색 표를 설명합니다. 브라우저가 가장 짧은 지연 시간을 받아 주지 않는 이유, 그리고 GIF의 용량이 실제로 어디로 갔는지 알아내는 법.
## 상자 속 다른 도구
- [이미지를 동영상으로](https://abox.tools/ko/사진으로-동영상-만들기/): 이미지가 든 폴더 하나를 동영상으로.
- [동영상 구간 자르기](https://abox.tools/ko/동영상-자르기/): 재생하면서 남길 구간을 표시하세요. 그 구간들이 영상 하나로 돌아옵니다.
- [동영상 화면 자르기](https://abox.tools/ko/동영상-화면-자르기/): 필요한 부분만 남기고 화면을 도려냅니다.
- [동영상 거꾸로 재생](https://abox.tools/ko/동영상-거꾸로-재생/): 마지막 프레임부터, 소리까지 함께.
## 자주 묻는 질문
### 제 GIF가 어딘가로 업로드되나요?
아닙니다. 파일을 읽고 풀고 그리는 일은 내 브라우저가 내 하드웨어에서 합니다. 이 도구에는 서버 쪽이 없고, 페이지의 `Content-Security-Policy`에는 연결할 수 있는 주소가 전부 적혀 있는데 그중 이 사이트 것은 없습니다. 네트워크를 끊어도 GIF 분석은 계속 됩니다.
### 재생 시간에 적힌 것보다 느리게 도는 이유가 뭔가요?
모든 브라우저가 100분의 2초 미만인 재생 시간을 지키기를 거부하고, 대신 그 프레임을 0.1초 동안 붙들기 때문입니다. 이 규칙은 1996년 넷스케이프에 들어갔습니다. 당시 돌아가던 지구본과 '공사 중' 표지를 위한 것이었고, 이후 모든 브라우저로 베껴졌으며 아무도 없앤 적이 없습니다. \
\
그래서 모든 프레임이 0.01초라고 적힌 GIF는 초당 100프레임으로 돌지 않습니다. 초당 10프레임, 즉 만든 프로그램이 의도한 것보다 다섯에서 열 배 느리게 돕니다. 이 페이지는 파일이 말하는 값과 실제로 벌어질 값을 둘 다 보여 주고, 영향을 받는 프레임에 표시를 합니다. 고치려면 파일을 만든 프로그램에서 0.01 대신 0.02를 쓰면 됩니다.
### '폐기'가 무슨 뜻인가요?
한 프레임의 시간이 끝났을 때 화면에 무엇을 남길지입니다. 애니메이션이 제대로 보이느냐 번지느냐를 가르는 항목이 바로 이것입니다. \
\
**그대로 두기**는 다음 프레임이 그 위에 덮어 그린다는 뜻이고, 프레임이 불투명해서 서로를 가릴 때 원하는 방식입니다. **배경까지 지우기**는 그 프레임의 사각형을 먼저 지우는데, 투명도가 필요로 하는 방식입니다. 그러지 않으면 다음 프레임의 비치는 부분으로 앞 프레임이 보입니다. **아래 있던 것 되돌리기**는 이 프레임이 그리기 전에 거기 있던 것을 되돌려 놓습니다. 멈춰 있는 배경 위를 작은 물체가 움직이는 영상이 이렇게 저장됩니다. 그리고 **지정 안 함**은 파일이 아무 말도 하지 않았다는 뜻이고, 모든 뷰어가 이를 '그대로 두기'로 취급합니다.
### 제 GIF는 왜 이렇게 큰가요?
'바이트가 어디로 갔는지' 표가 일반론이 아니라 이 파일에 대해 답해 줍니다. 가능한 답은 몇 가지뿐입니다. \
\
거의 전부가 **압축된 픽셀**이라면, 파일이 그냥 그림이 많다는 뜻입니다. GIF는 모든 프레임을 통째 픽셀로 저장하고, 움직임 보정도 품질 조절기도 없습니다. 그래서 용량은 대략 넓이 곱하기 프레임 수입니다. 프레임을 줄이거나, 크기를 줄이거나, 색을 줄이는 것이 유일한 지렛대입니다. \
\
큰 몫이 **색상 표**라면, 파일이 프레임마다 768바이트짜리 팔레트를 쓰고 있는 것입니다. 큰 몫이 **메타데이터**라면 어떤 편집기가 XMP 패킷을 남기고 간 것이고, 그림을 건드리지 않고 뺄 수 있습니다. 그리고 모든 프레임이 캔버스 전체를 덮고 있다면, 어느 부분이 실제로 바뀌었는지 인코더가 끝내 알아내지 않은 것입니다. 촬영하거나 녹화한 것이라면 그게 파일의 대부분입니다.
### 두 가지 프레임 보기는 뭐가 다른가요?
**프레임마다의 캔버스**는 뷰어가 그 순간 보여 주는 것입니다. 앞 프레임들이 남긴 것 위에 이 프레임이 그려진 상태죠. **각 프레임이 저장한 것만**은 그 프레임을 위해 파일이 실제로 들고 있는 사각형이고, 아래에 아무것도 깔지 않은 그 자체입니다. \
\
재미있는 쪽은 두 번째입니다. GIF는 한 프레임을 바뀐 부분만으로 저장할 수 있고, 거의 멈춰 있는 창을 찍은 화면 녹화가 작을 수 있는 이유가 그것입니다. 내 파일의 모든 프레임이 캔버스 전체라면 그 일을 아무도 하지 않은 것이고, 애니메이션을 봐서는 알 수 없습니다. 저장된 것을 봐야 알 수 있습니다.
### 제 파일에 주석이나 XMP가 있다고 나옵니다. 그게 뭔가요?
그림과 함께 실려 다니지만 어떤 뷰어도 그리지 않는 텍스트입니다. 주석 블록은 대개 그 파일을 쓴 프로그램의 이름입니다. XMP 패킷은 이미지 편집기가 자기가 한 일을 적어 두는 XML이고, 편집 이력과 프로그램 버전, 때로는 작성자 이름까지 담습니다. \
\
이 페이지는 둘 다 전부 찍어 줍니다. 메타데이터에서 흥미로운 것은 그것이 있다는 사실이 아니라 거기에 무엇이 적혀 있느냐이니까요. 그것은 나에게만 보입니다. 이 저장소 안에 그것을 누군가에게 읽어 주는 코드는 없습니다.
### 망가진 GIF도 열리나요?
시도하고, 어디서 포기했는지 알려 줍니다. 블록 중간에서 끝나는 파일, 블록 표시가 있어야 할 자리에 다른 바이트가 있는 파일, 압축 데이터가 일찍 떨어지는 프레임이 있는 파일도 그 지점까지 읽힌 것은 전부 보여 주고, 무엇이 문제였는지 맨 위에 적어 둡니다. 분석이 가장 필요해지는 순간이 바로 그때이니, 바이트 하나 때문에 파일 전체를 버리는 것은 옳은 동작이 아닙니다.
### 제 파일이 바뀌나요?
아닙니다. 이 도구는 읽기만 합니다. 출력 파일도, 재인코딩도, GIF를 쓰는 버튼도 없습니다. 내려받을 수 있는 것은 분석 결과의 텍스트 사본뿐입니다. 원본은 디스크에 그대로 있습니다. 탭을 닫으면 어떻게 되느냐는 물음에 대한 정직한 답도 같습니다.
### 무료인가요? 가입해야 하나요?
무료이고 계정도, 로그인도, 체험판도 없습니다. 파일 크기 제한도 내 기기의 메모리 말고는 없습니다. 이 사이트는 광고로 유지되는데, 그 광고에도 내 파일에 관한 것은 넘어가지 않습니다.
### 오프라인에서도 되나요?
됩니다. 페이지를 한 번 불러온 다음 인터넷을 끊어도 계속 동작합니다. 아무것도 업로드되지 않는다는 가장 간단한 증명이기도 하고요. 분석하려고 GIF를 어딘가로 보내는 도구라면 선을 뽑는 순간 멈춰 버릴 테니까요.
## 이 약속을 직접 확인하는 방법
- **내 GIF는 나갈 곳이 없습니다.** Content-Security-Policy에는 이 페이지가 연결할 수 있는 주소가 전부 적혀 있고, 그중 이 사이트 것은 하나도 없습니다. 파일이 모일 수 있는 수신처가 여기엔 없고, 있다 한들 그리로 보낼 코드도 없습니다. 예전에는 이 자리에 예외를 두지 않는 `connect-src 'none'`이 있었습니다. 광고를 넣으면서 그걸 잃었고, 그 사실을 말하는 것까지가 약속입니다.
- **판독기는 이 저장소의 파일 네 개입니다.** 파일 안에 무엇이 있는지 알아내는 데 브라우저의 GIF 디코더를 쓰지 않습니다. 그 디코더는 어느 바이트가 어디로 갔는지 말해 주지 않으니까요. 그래서 포맷을 손으로 읽습니다. `src/gif.js`가 블록을 훑고, `src/lzw.js`가 픽셀을 펼치고, `src/frames.js`가 그것을 쌓고, `src/budget.js`가 조각들을 다시 더해서 파일 크기가 맞는지 확인합니다.
- **주석과 메타데이터는 나에게만 보입니다.** GIF에는 주석 블록이나, 어떤 편집을 했는지 적은 XMP 패킷, 색상 프로파일이 들어 있을 수 있고, 이 페이지는 그것을 전부 찍어 줍니다. 그것들은 눈앞의 화면에 놓일 뿐 다른 어디로도 가지 않습니다. 이 저장소에는 그것을 실어 보내는 분석 이벤트가 하나도 없고, 있다 한들 이 페이지는 보낼 수 없습니다.
- **구글이 불러오는 것과, 구글에게 주지 않는 것.** 광고와 측정 스크립트는 구글에서 옵니다. 둘 중 어느 쪽에도 내 파일에 관한 것은 넘어가지 않습니다. 파일도, 미리보기도, 이름도, 크기도, 프레임 수도, 주석도 마찬가지입니다. GIF를 읽고 풀고 그리는 코드는 한 줄도 빠짐없이 이 출처에서 제공되고 저장소에 공개되어 있습니다.
- **후원 버튼이 불러오는 것과, 거기에 주지 않는 것.** 머리글의 'Buy me a coffee' 버튼은 cdnjs.buymeacoffee.com의 스크립트가 그리고 글꼴은 Google Fonts에서 가져옵니다. 그것은 링크 이상은 아닙니다. 방문을 알리지도 않고, 나에 대해서도 내 파일에 대해서도 건네받는 것이 없습니다. 누르지 않으면 아무 일도 일어나지 않고, 눌러서 가는 곳은 남의 사이트입니다.
- **오프라인에서도 동작합니다.** 네트워크를 끊어도 이 페이지의 모든 부분이 그대로 동작합니다. 가장 간단한 증거입니다. 분석하려고 GIF를 어딘가로 보내는 도구라면 선을 뽑는 순간 멈출 테니까요.
**직접 확인해 보세요.** 위에 적은 어느 것도 그냥 믿으실 필요는 없습니다. 이 페이지는 저장소 안의 템플릿과 설정을 빌드 스크립트가 찍어 낸 결과이고, 그 스크립트는 누구나 읽고 직접 돌려 볼 수 있습니다. 결과물은 `dist` 브랜치에 그대로 올라가 있고요. 그래서 실제로 제공되는 파일과 소스를 빌드한 결과를 나란히 놓고 비교해 보실 수 있습니다: https://github.com/A-Box-of-Tools/website
먼저 읽어 볼 파일을 꼽자면, Content-Security-Policy는 `config/site.toml`, 파일을 훑는 블록 판독기는 `src/gif.js`, 압축을 푸는 쪽은 `src/lzw.js`, 바이트를 계산하는 쪽은 `src/budget.js`입니다. 어느 것에도 네트워크에 닿을 수 있는 줄은 없습니다.
GIF를 분석하는 방법
GIF를 고릅니다. 선택 영역에 끌어다 놓거나 직접 찾아 주십시오. 브라우저가 디스크에서 바로 읽고, 그동안 무엇도 어디로 나가지 않습니다.
요약부터 읽으십시오. 캔버스 크기, 프레임 수, 애니메이션이 스스로 밝히는 길이, 그리고 실제로 재생되는 길이입니다. 뒤의 둘은 사람들이 생각하는 것보다 자주 어긋나고, 이유는 다음 절에 있습니다.
눈에 띄는 것을 보십시오. 거기 적힌 한 줄 한 줄이 내 파일에서 잰 값입니다. 어느 브라우저도 지키지 않을 재생 시간, 빠져 있는 반복 블록, 아무도 가리키지 않는 색상 표, 어떤 프레임보다 큰 메타데이터. 무엇을 만들려 했는지에 대한 추측은 하나도 없습니다.
바이트가 어디로 갔는지 보십시오. 파일의 모든 바이트가 딱 한 줄에 들어가고, 줄을 더하면 파일이 됩니다. 대부분이 '압축된 픽셀'에 있지 않다면, 표의 나머지가 그것이 대신 어디에 있는지 말해 줍니다.
프레임을 훑어보십시오. 각 프레임마다 재생 시간, 사각형, 폐기 방식, 크기가 나옵니다. '프레임마다의 캔버스'와 '각 프레임이 저장한 것만'을 번갈아 보십시오. 파일이 최적화됐는지는 뒤쪽에서 드러납니다. 잘 만든 GIF는 아주 작은 사각형만 저장하고, 못 만든 GIF는 매번 그림 전체를 저장하니까요.
필요하면 보고서를 가져가십시오. 분석 전체를 일반 텍스트로. 메시지에 붙여 넣어도 되고 파일 옆에 두어도 됩니다. 이미 화면에 있는 내용으로 페이지 안에서 만들어집니다.
자세한 설명
GIF 안에는 실제로 무엇이 있나프레임, 지연 시간, 처리 방식, 색 표를 설명합니다. 브라우저가 가장 짧은 지연 시간을 받아 주지 않는 이유, 그리고 GIF의 용량이 실제로 어디로 갔는지 알아내는 법.
아닙니다. 파일을 읽고 풀고 그리는 일은 내 브라우저가 내 하드웨어에서 합니다. 이 도구에는 서버 쪽이 없고, 페이지의 Content-Security-Policy에는 연결할 수 있는 주소가 전부 적혀 있는데 그중 이 사이트 것은 없습니다. 네트워크를 끊어도 GIF 분석은 계속 됩니다.
재생 시간에 적힌 것보다 느리게 도는 이유가 뭔가요?
모든 브라우저가 100분의 2초 미만인 재생 시간을 지키기를 거부하고, 대신 그 프레임을 0.1초 동안 붙들기 때문입니다. 이 규칙은 1996년 넷스케이프에 들어갔습니다. 당시 돌아가던 지구본과 '공사 중' 표지를 위한 것이었고, 이후 모든 브라우저로 베껴졌으며 아무도 없앤 적이 없습니다.
그래서 모든 프레임이 0.01초라고 적힌 GIF는 초당 100프레임으로 돌지 않습니다. 초당 10프레임, 즉 만든 프로그램이 의도한 것보다 다섯에서 열 배 느리게 돕니다. 이 페이지는 파일이 말하는 값과 실제로 벌어질 값을 둘 다 보여 주고, 영향을 받는 프레임에 표시를 합니다. 고치려면 파일을 만든 프로그램에서 0.01 대신 0.02를 쓰면 됩니다.
'폐기'가 무슨 뜻인가요?
한 프레임의 시간이 끝났을 때 화면에 무엇을 남길지입니다. 애니메이션이 제대로 보이느냐 번지느냐를 가르는 항목이 바로 이것입니다.
그대로 두기는 다음 프레임이 그 위에 덮어 그린다는 뜻이고, 프레임이 불투명해서 서로를 가릴 때 원하는 방식입니다. 배경까지 지우기는 그 프레임의 사각형을 먼저 지우는데, 투명도가 필요로 하는 방식입니다. 그러지 않으면 다음 프레임의 비치는 부분으로 앞 프레임이 보입니다. 아래 있던 것 되돌리기는 이 프레임이 그리기 전에 거기 있던 것을 되돌려 놓습니다. 멈춰 있는 배경 위를 작은 물체가 움직이는 영상이 이렇게 저장됩니다. 그리고 지정 안 함은 파일이 아무 말도 하지 않았다는 뜻이고, 모든 뷰어가 이를 '그대로 두기'로 취급합니다.
제 GIF는 왜 이렇게 큰가요?
'바이트가 어디로 갔는지' 표가 일반론이 아니라 이 파일에 대해 답해 줍니다. 가능한 답은 몇 가지뿐입니다.
거의 전부가 압축된 픽셀이라면, 파일이 그냥 그림이 많다는 뜻입니다. GIF는 모든 프레임을 통째 픽셀로 저장하고, 움직임 보정도 품질 조절기도 없습니다. 그래서 용량은 대략 넓이 곱하기 프레임 수입니다. 프레임을 줄이거나, 크기를 줄이거나, 색을 줄이는 것이 유일한 지렛대입니다.
큰 몫이 색상 표라면, 파일이 프레임마다 768바이트짜리 팔레트를 쓰고 있는 것입니다. 큰 몫이 메타데이터라면 어떤 편집기가 XMP 패킷을 남기고 간 것이고, 그림을 건드리지 않고 뺄 수 있습니다. 그리고 모든 프레임이 캔버스 전체를 덮고 있다면, 어느 부분이 실제로 바뀌었는지 인코더가 끝내 알아내지 않은 것입니다. 촬영하거나 녹화한 것이라면 그게 파일의 대부분입니다.
두 가지 프레임 보기는 뭐가 다른가요?
프레임마다의 캔버스는 뷰어가 그 순간 보여 주는 것입니다. 앞 프레임들이 남긴 것 위에 이 프레임이 그려진 상태죠. 각 프레임이 저장한 것만은 그 프레임을 위해 파일이 실제로 들고 있는 사각형이고, 아래에 아무것도 깔지 않은 그 자체입니다.
재미있는 쪽은 두 번째입니다. GIF는 한 프레임을 바뀐 부분만으로 저장할 수 있고, 거의 멈춰 있는 창을 찍은 화면 녹화가 작을 수 있는 이유가 그것입니다. 내 파일의 모든 프레임이 캔버스 전체라면 그 일을 아무도 하지 않은 것이고, 애니메이션을 봐서는 알 수 없습니다. 저장된 것을 봐야 알 수 있습니다.
제 파일에 주석이나 XMP가 있다고 나옵니다. 그게 뭔가요?
그림과 함께 실려 다니지만 어떤 뷰어도 그리지 않는 텍스트입니다. 주석 블록은 대개 그 파일을 쓴 프로그램의 이름입니다. XMP 패킷은 이미지 편집기가 자기가 한 일을 적어 두는 XML이고, 편집 이력과 프로그램 버전, 때로는 작성자 이름까지 담습니다.
이 페이지는 둘 다 전부 찍어 줍니다. 메타데이터에서 흥미로운 것은 그것이 있다는 사실이 아니라 거기에 무엇이 적혀 있느냐이니까요. 그것은 나에게만 보입니다. 이 저장소 안에 그것을 누군가에게 읽어 주는 코드는 없습니다.
망가진 GIF도 열리나요?
시도하고, 어디서 포기했는지 알려 줍니다. 블록 중간에서 끝나는 파일, 블록 표시가 있어야 할 자리에 다른 바이트가 있는 파일, 압축 데이터가 일찍 떨어지는 프레임이 있는 파일도 그 지점까지 읽힌 것은 전부 보여 주고, 무엇이 문제였는지 맨 위에 적어 둡니다. 분석이 가장 필요해지는 순간이 바로 그때이니, 바이트 하나 때문에 파일 전체를 버리는 것은 옳은 동작이 아닙니다.
제 파일이 바뀌나요?
아닙니다. 이 도구는 읽기만 합니다. 출력 파일도, 재인코딩도, GIF를 쓰는 버튼도 없습니다. 내려받을 수 있는 것은 분석 결과의 텍스트 사본뿐입니다. 원본은 디스크에 그대로 있습니다. 탭을 닫으면 어떻게 되느냐는 물음에 대한 정직한 답도 같습니다.
무료인가요? 가입해야 하나요?
무료이고 계정도, 로그인도, 체험판도 없습니다. 파일 크기 제한도 내 기기의 메모리 말고는 없습니다. 이 사이트는 광고로 유지되는데, 그 광고에도 내 파일에 관한 것은 넘어가지 않습니다.
오프라인에서도 되나요?
됩니다. 페이지를 한 번 불러온 다음 인터넷을 끊어도 계속 동작합니다. 아무것도 업로드되지 않는다는 가장 간단한 증명이기도 하고요. 분석하려고 GIF를 어딘가로 보내는 도구라면 선을 뽑는 순간 멈춰 버릴 테니까요.