SafeLink checks a URL's redirect chain and social-engineering signals before anyone in your team clicks it, returning a clear verdict instead of raw technical output.
SafeLink takes any URL and returns a plain-English risk verdict by tracing its full redirect chain and evaluating the destination for phishing and social-engineering signals — designed for the moment before someone clicks a link from an email, text, or DM.
- Next.js App Router front end (
app/page.tsx) handles the URL input and renders the verdict. app/api/url-scan/route.tssubmits the URL to VirusTotal's real API (identified by a base64 URL ID) and reads back the multi-engine verdict server-side — no visitor-supplied key needed, the app holds its own.- Styling is Tailwind CSS 4.
The real problem: a phishing link needs a verdict before you click, not after — and running your own malware sandbox per request isn't realistic for a free tool, so the real leverage is aggregating engines that already do this at scale.
The approach: url-scan submits the target to VirusTotal, which runs it against dozens of antivirus/URL-reputation engines simultaneously, then polls for the completed analysis rather than trusting a possibly-stale cached verdict.
One real number: URLs are identified to VirusTotal by a base64-encoded (padding-stripped) form of the URL itself — VirusTotal's own addressing scheme, not an internally invented ID.
Not handled yet: with no VIRUSTOTAL_API_KEY configured, the endpoint returns { unavailable: true } rather than a fake verdict — and the homepage "intelligence" summary is a decorative layer disconnected from the real scan result.
Production: https://safelink-wheat.vercel.app
| Layer | Technology |
|---|---|
| Framework | Next.js (App Router) |
| UI Library | React 19 |
| Language | TypeScript |
| Styling | Tailwind CSS 4 |
| Server Logic | Next.js API routes (/api/url-scan, /api/intelligence) |
| Deployment | Vercel |