Free resume parser
Turn a CV into structured JSON in about 2.2 seconds. Upload a PDF or DOCX, or paste the text. No signup, no API key, and the document is not stored.
Parsed
Every field, with types and null semantics, is in the field reference.
Same endpoint, same fields, without the per-minute limit or the human check.
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.
- Dates you can sort by.
start_dateis alwaysYYYY-MMorYYYY, never "Summer 2019". A role still running comes back withis_current: truerather than a missing end date. - Nothing invented. A field the CV does not state is
null. No guessed titles, no inferred skills, no country filled in from an area code. - Any language. An Indonesian CV returns Indonesian job titles. Only the date format is normalised, never the wording.
- A document that is not a CV is told apart. An invoice comes back as
not_a_resume, not as a resume with every field empty.
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 2 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?
Not yet. A scan is an image with no text layer, so there is nothing to read and the parser answers unreadable_file. Copy the text out and paste it into the box instead. Image input is the next thing being built.
Which file formats can I upload?
PDF, DOCX and plain text. 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 2 MB here against 60,000 and 10 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.