Prompt Injection Checker
🔒 In your browserScan untrusted text for prompt-injection patterns before feeding it to an agent.
How it works
Paste any untrusted text you're about to feed an AI agent — a web page, email, document or tool output — and this flags prompt-injection patterns: instruction overrides, stealth/exfiltration commands, hidden unicode and prompt-extraction attempts. Runs entirely in your browser.
A heuristic aid, not a guarantee — attackers can phrase injections in ways these patterns miss, and ordinary text can trip a rule. Treat all model-read content as untrusted regardless of the score. Your text is never uploaded.
About the Prompt Injection Checker
When an AI agent reads a web page, email, PDF or tool output, that content can contain hidden instructions that hijack the agent — an attack called indirect prompt injection. This free prompt injection checker scans any untrusted text for those patterns before you let an agent act on it.
The scan runs entirely in your browser; the text you paste is never uploaded.
What it looks for
- Instruction overrides — ‘ignore all previous instructions’, ‘you are now…’, fake system prompts.
- Stealth commands — text telling the model to act without informing the user.
- Exfiltration — instructions to send secrets or data to an external URL or webhook.
- Sensitive-file references — pointers to .env, SSH keys or credential files.
- Hidden markup — instructions tucked inside HTML comments or instruction-like tags.
- Hidden unicode — zero-width and bidirectional characters that conceal text from a human reviewer.
- Prompt-extraction — attempts to make the model reveal its own system prompt.
Why indirect injection is dangerous
A capable agent treats the content it reads as context, and it can be surprisingly obedient to instructions embedded in that content — even when they contradict its real task. Because the malicious text lives in a document or web page rather than the user's message, it bypasses the trust you place in your own prompt. Screening untrusted inputs first is a practical defence layer, alongside least-privilege tools and human approval for risky actions.
Frequently asked questions
What is indirect prompt injection?
It's when the attack is hidden in content an AI reads — a web page, email, file or API response — rather than typed by the user. The agent processes that text and may follow the injected instructions, such as leaking data or ignoring its real task.
Does a clean result mean the text is safe?
No. This is a heuristic scanner that matches known patterns. A determined attacker can phrase an injection in ways it won't catch, so always treat model-read content as untrusted regardless of the score.
What should I paste in?
Any untrusted text an agent will consume before it acts — the body of a scraped page, an email, a document, or the output of a tool or another model.
Why does hidden unicode raise the risk?
Zero-width and right-to-left override characters are invisible to a human reviewer but still read by the model, so they're a common way to smuggle instructions past manual review. Any such characters are flagged as high severity.
Is the text uploaded?
No. The scan runs entirely in your browser, so whatever you paste stays on your device.
Related searches
Related Developer tools
🔗 Embed this tool on your website — free
Copy this and paste it into your page's HTML. The tool runs in the visitor's browser, just like here. Change height to fit, or add the optional auto-resize snippet below. Add ?theme=dark to the URL for dark mode.
<iframe src="https://toolhq.dev/embed/prompt-injection-checker/" title="Prompt Injection Checker — ToolsHub" width="100%" height="520" style="border:1px solid #e5e7eb;border-radius:12px;max-width:680px" loading="lazy"></iframe>Optional: auto-resize the iframe height
Add this once on the same page so the iframe grows to fit the tool:
<script>
addEventListener("message", function (e) {
if (e.data && e.data.type === "toolshub:resize") {
document.querySelectorAll('iframe[src*="/embed/"]').forEach(function (f) {
if (f.contentWindow === e.source) f.style.height = e.data.height + "px";
});
}
});
</script>