Certificate-Based CAPTCHA

Modern bot prevention powered by verified NoSkid certificates. Simple and secure; no image puzzles or tracking.

Try SkidGuard

Why SkidGuard?

Certificate-Based

Leverages cryptographic NoSkid certificates instead of weak image recognition challenges.

Fast & Lightweight

Minimal script footprint. Instant load through an iframe-based architecture.

Customizable

Choose from multiple themes, sizes, and 18+ languages.

Hardly bypassable

A NoSkid certificate cant be falsified, making the captcha bypass impossible.

Responsive

Works seamlessly on desktop, tablet, and mobile devices.

Easy Integration

Simple JavaScript API with full callback support for success, error, and expiry.

Integration Guide

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>

Server-side verification example (Node.js)

// 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'));