Modern bot prevention powered by verified NoSkid certificates. Simple and secure; no image puzzles or tracking.
Leverages cryptographic NoSkid certificates instead of weak image recognition challenges.
Minimal script footprint. Instant load through an iframe-based architecture.
Choose from multiple themes, sizes, and 18+ languages.
A NoSkid certificate cant be falsified, making the captcha bypass impossible.
Works seamlessly on desktop, tablet, and mobile devices.
Simple JavaScript API with full callback support for success, error, and expiry.
Add SkidGuard to your site in under 2 minutes. Once
verified, send the returned token to your backend and verify it using NoSkid’s API.
<!-- Include SkidGuard --> <script src="https://skidguard.noskid.today/skidguard.js"></script> <!-- CAPTCHA container --> <div id="captcha"></div> <!-- Render CAPTCHA --> <script> const widgetId = skidguard.render('#captcha', { callback: token => { fetch('/verify', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ key: token }) }) .then(r => r.json()) .then(res => console.log('Server verified:', res)) .catch(console.error); }, theme: 'auto', size: 'normal', language: 'en' }); </script>
// verify.js import express from 'express'; import fetch from 'node-fetch'; const app = express(); app.use(express.json()); app.post('/verify', async (req, res) => { const { key } = req.body; if (!key) return res.status(400).json({ success: false, message: 'Missing key' }); const checkUrl = `https://check.noskid.today/?key=${key}`; const response = await fetch(checkUrl); const data = await response.json(); if (data.success) { // do additional operations res.json({ valid: true, user: data.data }); } else { res.status(401).json({ valid: false, message: data.message }); } }); app.listen(3000, () => console.log('Server running on port 3000'));