owner/repo or a full URL).api.github.com) for the real file list, then downloads each file's actual text straight from
raw.githubusercontent.com — the same bytes anyone sees on github.com. For paste/upload, it reads
exactly what you gave it.api.github.com, scans the lines that commit added, and reports the exact SHA, author,
and date so you can verify it yourself.file:line, it isn't
from a live scan. The network trace panel below prints the literal URL, HTTP status, timing, and the
first bytes of GitHub's actual response, so you can watch the data arrive instead of trusting a summary.localStorage — on your own machine, in this browser — for 24 hours, purely so a
refresh doesn't lose your results. It never syncs anywhere, and you can wipe it any time with the
Clear cached scan button.localStorage, never saved with your scan, never printed in the network trace, and never sent to
raw.githubusercontent.com — only to api.github.com. Closing the tab erases it.
A history scan costs one API request per commit, which is why the 60/hr anonymous limit runs out fast.
api.github.com (file tree, commit diffs) and
raw.githubusercontent.com (file contents), same as any browser could. It reads every file that isn't provably binary —
no extension allow-list, so .tf, .vue, Dockerfile and extensionless scripts all get scanned. Anything it
does skip (vendored folders, images, files over 1MB) is counted and shown to you, because "clean" is a lie if half the repo went unread.
This is a pattern-based heuristic scanner — good for a fast first pass, not a replacement for CodeQL/Semgrep on anything you'd ship.
eval.in history came from a past commit's diff, not the current files. It may already be deleted from the repo and still be live in the wild.