ResumeJSON

Free resume parser

Turn a CV into structured JSON in about 2.2 seconds. Upload a PDF, a DOCX, or a photo or scan of the page, or paste the text. No signup, no API key, and the document is not stored.

or drag one here

PDF, DOCX, .txt, or a photo or scan of a printed page · up to 8 MB

…or paste the text instead

Up to 20,000 characters.

Leave it empty and the CV comes back in its own language. The list is a shortcut, not the limit — type any language the model can write, as a name or a code.

A one-click check, so the free parser is not farmed by scripts.

What you get back

The same JSON the paid endpoint returns: a resume object and a meta object. resume holds basics, work, education, skills, certifications, languages and total_years_experience.

Questions

Is the free resume parser really free?

Yes. No account, no card, no key. It is limited to 6 parses a minute from one address and 8 MB per document, which is enough to test a handful of real CVs. Past that, the API is on RapidAPI.

Do you store my resume?

No. The file is parsed inside a Cloudflare Worker and nothing is written down — there is no database in this service. The JSON you see is built in your browser from the response and disappears when you close the tab.

Does it work on a scanned CV?

Yes. A scan has no text layer, so the model reads the pages as images instead. A photo of the page works too — upload the JPEG or PNG. It takes a few seconds rather than two. If your scan runs to more than one page, send it as a single PDF: one image is one page.

Handwriting is a different thing, and it is not supported. The parser is built for printed pages. A handwritten CV is not refused — it is read the same way and comes back looking like any other parse — but its accuracy has never been measured, so do not rely on it.

A photo straight off your phone is fine — this page shrinks it in your browser before uploading, so a 10 MB picture becomes a few hundred KB and parses in a couple of seconds. Nothing is lost by it: the parser reads the page at a fixed level of detail, so a smaller image is just as accurate and only faster.

Which file formats can I upload?

PDF, DOCX, plain text, and JPEG, PNG or WebP images of the page. The type is detected from the file's own bytes, so a document your browser labelled application/octet-stream still works.

How is this different from the paid API?

Same endpoint, same prompt, same model, same fields. The differences are the ceiling — 20,000 characters and 8 MB here against 60,000 and 20 MB — the per-minute limit, and the human check. There is no key to manage here and no way to call it from your own code; for that you want the listing and the quickstart.

Why is there a human check?

Every parse costs us a model call, and this one is not metered to anybody. The check is one click and keeps the tool available to people rather than to scripts.