Free CAPTCHA solver & code reader
Drop, paste or link an image and get the characters back as text in milliseconds. Built for the distorted letter-and-digit CAPTCHAs and short codes that other OCR tools trip over.
Read text from an image
The URL is fetched server-side. Only public HTTP and HTTPS addresses are allowed.
Plain Base64 works too — the data:image/…;base64, prefix is optional.
Recognised text
Small CPU-only model, no queue, no cold start.
Images live in memory for the length of the request.
No signup, no API key, no credit card.
One POST request returns clean JSON.
How it works
Three steps, about ten seconds
No settings to tune and nothing to configure. Add an image and the text comes back.
Add the image
Drag a file in, click to browse, paste straight from your clipboard, or hand it a public image URL. Base64 and data URLs work too.
It reads automatically
A convolutional recognition model runs on our server the moment the image lands. Typical images finish in well under a second.
Copy the text
The characters appear beside the preview with a copy button, the character count and how long the read took.
Be realistic
What it reads well — and what it won't
This is a CAPTCHA model, not a document scanner. Knowing the difference saves you a lot of time, so here is the honest version rather than the marketing one.
Great at
- Classic image CAPTCHAs — one line of warped letters and digits, roughly 4–8 characters
- Noise, speckle, strike-through lines, colour gradients and per-character rotation
- Short verification and one-time codes rendered as images
- Serial numbers, licence keys and reference codes on a plain background
- Digit-only strings such as
481920
Not built for
- Paragraphs, documents, receipts or book pages — use a document OCR engine instead
- Multi-line images; only a single line is read
- Spaces, which are always dropped —
Order 12returnsorder12 - reCAPTCHA and hCaptcha, which are behavioural and image-grid puzzles with no text to read
- Guaranteed letter case, and lookalikes like
I/lor0/O
For developers
Free CAPTCHA OCR API
The same engine behind this page is a public HTTP endpoint. No key, no SDK, no rate-limit dashboard — one POST request and a one-field JSON response.
Endpoint
POST https://ocr.aticmatic.com/ocr
# a file from disk
curl -X POST https://ocr.aticmatic.com/ocr \
-F "file=@captcha.png"
# a public image URL
curl -X POST https://ocr.aticmatic.com/ocr \
-F "url=https://example.com/captcha.png"
# base64 as JSON
curl -X POST https://ocr.aticmatic.com/ocr \
-H "Content-Type: application/json" \
-d '{"base64":"iVBORw0KGgoAAAANSUhEUg..."}'
import requests
URL = "https://ocr.aticmatic.com/ocr"
with open("captcha.png", "rb") as fh:
r = requests.post(URL, files={"file": fh}, timeout=30)
r.raise_for_status()
print(r.json()["text"])
const body = new FormData();
body.append("file", fileInput.files[0]);
const res = await fetch("https://ocr.aticmatic.com/ocr", {
method: "POST",
body,
});
if (!res.ok) throw new Error((await res.json()).detail);
const { text } = await res.json();
console.log(text);
Request & response
Send exactly one of three inputs, as multipart form data or JSON:
file— a multipart image uploadurl— a public HTTP or HTTPS image URLbase64— raw Base64 or a data URL, as a multipart field or a JSON key
{ "text": "7fk2p" }
Errors return the same shape as FastAPI's default, with a readable message:
{ "detail": "Image must be 8 MB or smaller." }
413 too large, 415 wrong content type, 422 not a
readable image, 429 rate limited — retry after the seconds given in the
Retry-After header. Images cap at 8 MB and fair use is 30 requests per
minute per IP. Need more headroom or a private deployment?
Talk to us.
Interactive docs
The full OpenAPI schema, with a browser console for trying requests, lives at /docs and /openapi.json.
Self-host it
The service is a single FastAPI file on top of ddddocr, with a Dockerfile in the repo. Run it on your own box in a couple of minutes.
Fair use
Please use it on CAPTCHAs you are entitled to solve — accessibility needs, your own forms, your own test suites and your own automation. Don't point it at other people's sites to bypass their protections.
FAQ
Common questions
Is this CAPTCHA solver really free?
Yes. The web tool and the HTTP API are both free, with no account, no API key and no credit card. A fair-use rate limit of 30 requests per minute per IP keeps the service responsive for everyone.
What kinds of CAPTCHA can it read?
Classic image CAPTCHAs: a single line of distorted letters and digits, typically four to eight characters, with noise, lines, colour or rotation. That is exactly what the underlying model was trained on. It also handles short verification codes, serial numbers and licence keys rendered as images.
Does it work on reCAPTCHA or hCaptcha?
No. reCAPTCHA and hCaptcha are not text images — they score your behaviour and ask you to pick objects out of photo grids, so there is no string to read. This tool only pulls characters out of an image.
Can it extract text from documents, screenshots or photos?
No, and it is the limitation worth knowing before you start. The model reads one short line at a time and drops spaces, so paragraphs, receipts, multi-line screenshots and photos of pages come back wrong or run together. Reach for a document OCR engine such as Tesseract or a cloud vision API for those.
Why are the spaces missing from my result?
The model treats the image as one continuous token, because CAPTCHAs never contain spaces. Order 12 comes back as order12. That is expected behaviour rather than a bug, and it is the main reason this tool is aimed at codes instead of sentences.
Do you store my images?
No. An image is held in memory only for as long as the recognition takes, and is never written to disk or logged. Nothing is kept once the response has been sent.
How accurate is it?
On the classic distorted-text CAPTCHAs it was built for, accuracy is high. Expect the occasional mix-up between visually similar glyphs — capital I against lowercase l, or 0 against O — and note that letter case is not always preserved.
Which image formats and sizes are supported?
PNG, JPEG, GIF, BMP and WebP, up to 8 MB per image. You can send a file upload, a public HTTP or HTTPS image URL, or Base64 including data URLs.
Is there an API I can call from my own code?
Yes — see the API section above. Send a POST request to https://ocr.aticmatic.com/ocr with a multipart file, url or base64 field, or a JSON body containing a base64 key. The response is a JSON object with a single text property.
Built by Aticmatic
We build web and mobile products, hosting and agentic AI systems for businesses that need software to actually hold up in production. This tool is a small free sample of that work.