Each check is weighted by how strongly it predicts a real, usable app.
Total: 120 weighted points, normalised to 0–100.
What we test: Your URL responds with an HTTP success status (anything below 500) within 15 seconds.
Why it matters: If we can't load it, neither can your visitors. This is the single biggest predictor of a usable submission.
How to pass: Make sure your site is actually deployed and responding. If you have an aggressive WAF or geo-block, allowlist the DevHuntAI checker.
What we test: The final URL uses https:// (after any redirects).
Why it matters: Browsers warn users on http://-only sites. SSL is free; the only reason not to have it is forgetting to set it up.
How to pass: Enable HTTPS on your host — Cloudflare, Fly, Vercel, Netlify, Render all do this with one click.
What we test: Your page returns its initial HTML in under 5 seconds.
Why it matters: Cold-start serverless functions and unoptimised SSR routinely take 10+ seconds. Visitors leave.
How to pass: Warm up your serverless function, enable edge caching, or move the landing page to a static deploy.
What we test: Your HTML has a non-empty <title> tag.
Why it matters: Browser tabs, search results, social shares — they all use <title>. A missing one looks like an unfinished project.
How to pass: Set <title>Your App Name — what it does</title> in the page head.
What we test: Your HTML has a <meta name='description'> tag.
Why it matters: Google uses this for the search snippet. Without it Google guesses, usually badly.
How to pass: Add <meta name='description' content='One sentence on what your app does'> to the head.
What we test: Your page has more than 50 words of real content (and contains no 'Lorem Ipsum' placeholder text).
Why it matters: Empty hero with a single 'Coming Soon' button reads like a stalled project — not worth a curated slot.
How to pass: Ship a real landing page. Hero, what it does, who it's for, screenshots, CTA. Even a paragraph is enough to pass this check.
What we test: Your page has at least one <button> or more than two real (non-anchor, non-javascript:) links.
Why it matters: A page with no way to interact is a screenshot. We want apps, not screenshots.
How to pass: Add visible CTAs in the HTML. Even 'Sign up' linking to a Stripe/Clerk hosted page counts.
What we test: Your page does not match any known boilerplate fingerprints (Vite + React default, Create React App splash, Next.js starter, 'Coming soon', empty <div id='root'>, Cloudflare waiting room, etc.).
Why it matters: Default templates indicate the project was never customised. We don't waste catalog space on those.
How to pass: Replace the default landing page. Even a single custom hero is enough.
What we test: Your page has a <meta name='viewport'> tag.
Why it matters: More than half your visitors will be on mobile. Without a viewport tag, the page renders at desktop width and gets zoomed out.
How to pass: Add <meta name='viewport' content='width=device-width, initial-scale=1'> to the head.
What we test: Your final URL is on your own domain — not a *.vercel.app, *.netlify.app, *.fly.dev, etc. subdomain, and not a raw IP.
Why it matters: Custom domains are a real signal of seriousness; a project on its own domain has crossed an effort threshold most weekend hacks haven't.
How to pass: Buy and configure a domain. $12/year on Namecheap. If you're a Prototype, see the FAQ below — we're considering relaxing this for that stage.
Frequently asked
My app is on Vercel and lost points for "Custom Domain". Is that fair?
Honestly, sort of. Custom domains are a real signal of seriousness —
a project on its own domain has crossed an effort threshold most
weekend hacks don't. But free-host subdomains are perfectly fine for
a Prototype or Beta, so we surface the
stage tag alongside the score so visitors can
calibrate. We're considering relaxing this check for apps tagged
Prototype.
Why does my React app score so low on "Content"?
Client-rendered apps with an empty <div id="root">
look like a blank page to a checker that doesn't run JavaScript.
Add a server-rendered hero, a meta description, and visible text
in the HTML response. Bonus: this also helps Google index you.
Can I re-run the check after fixing issues?
Yes. A re-check button is coming to your app's detail page so you
can verify a fix without re-submitting. Rate-limited so it doesn't
become a DDoS amplifier against your own site.
Does the score affect ranking?
No. Discovery is decided by upvotes and recency. The score is a
trust signal — visible to you and to curators — that helps us
keep the catalog clean. We never sort by score.