developer-tools · tested july 2026

Best AI Resume Parsing APIs for Structured JSON Output

If you need a resume parsing API that turns PDF and DOCX resumes into clean, machine-readable JSON, the hard part is not just extracting names and emails. The real test is whether the parser keeps work history, education, skills, certifications, and layout-dependent fields accurate across clean, multi-column, messy, and OCR-only resumes without manual field mapping.

0
10 tools10 things we checked3 tests160 findings86 screenshots35 output files14 min read
Our verdictTested July 2026 · 10/10 tools tested hands-on
#1 pick
Extracta.aiBest4.8/5 · 5 checks

Excellent when you know exactly which fields you want, but it silently drops anything outside the schema and can map the wrong data to a field name.

The rest of the field

#2 Parseur· #3 Affinda· #4 HrFlow· #5 CVParserPro· #6 Skima AI· #7 Hireability· #8 OpenResume· #9 Airparser· #10 LlamaParse

The ranking

How we decided #1. We rank on the 5 checks that decide whether a tool does this job: Accuracy, Field coverage, Messy resume handling, Multi-column handling, Noise in output. A check only carries a score when we recorded a finding for it, and a tool has to be measured on all of them to take the top spot. We also checked Custom field support, Export format, Free tier viability, Input handling, Output format — compared for you, but not part of the ranking.

ToolScoreWhere it lands
#1Extracta.aiBest4.8/5
all 5 checks
Best for schema-driven resume extraction with very clean JSON and low output noise.
#2ParseurUsable4.4/5
all 5 checks
Strong template-driven parser for core resume fields, but it weakens on structured list fields and messy education details.
#3AffindaUsable3.6/5
all 5 checks
Strong on structured JSON, custom fields, and multi-column layouts, but it needs cleanup for accuracy and noisy skills.
#4HrFlowNeeds work3.0/5
all 5 checks
Reliable API parser for clean PDFs, but noisy and less accurate on harder layouts.
#5CVParserProNeeds work3.0/5
all 5 checks
Good at building a structured candidate profile, but weak on date accuracy and fixed-schema flexibility.
#6Skima AINeeds work2.6/5
all 5 checks
Fast on basic resumes, but weak on structured output and sidebar-heavy layouts.
#7HireabilityUnstable2.0/5
all 5 checks
Strong on JSON/API delivery, but shaky on layout edge cases and noisy skill output.
#8OpenResumeUnstable2.0/5
all 5 checks
Free, zero-signup browser parser that opens PDFs easily, but it is brittle on field placement and offers no machine-readable export.
#9AirparserPartly tested4.5/5
4 of 5 — no noise in output evidence
Strongest at readable JSON extraction from varied resumes, but it can slip on exact contact details and title completeness.
#10LlamaParsePartly tested4.3/5
4 of 5 — no noise in output evidence
Strongest at structured extraction and layout resilience, but less reliable on exact value fidelity and consistent field naming.

What we checked

Every finding below is tied to one of these checks, and to the test that produced it. The number is how many of the 10 tools we recorded findings for.

Accuracy 10 toolsField coverage 10 toolsMessy resume handling 10 toolsMulti-column handling 10 toolsNoise in output 8 toolsCustom field support 10 toolscontextExport format 10 toolscontextInput handling 10 toolscontextOutput format 10 toolscontextFree tier viability 4 toolscontext

What we tried

The same 3 tests wererun on every tool. Pick one to see its input and every tool's output.

Read it

Extracta.ai

Best#1 of 10

Best for schema-driven resume extraction with very clean JSON and low output noise.

Accuracy4/54 findings

Most values came through correctly, but the wrong languages mapping and the messy-resume normalization issues keep it from a perfect score.

Failedwhen we tried: Clean single-column resume — Rugved Nichitelink to this finding

Misroutes the languages field by pulling programming languages from the Skills section instead of a spoken-languages section, so the field contains the wrong content.

research-media-extracta-ai-20output-201-a01c085fbe66.txt
Loading file...
Mixedwhen we tried: Messy real-world resume — John Kumarlink to this finding

Extracts the messy resume’s values, but leaves some formatting inconsistent: one education percentage stays as raw text ('72 percent marks') while the other entries use different percent formats, and certifications remain lowercase exactly as written.

research-media-extracta-ai-20output-203-28bd0eabeb73.txt
Loading file...
Custom field supportCapability check5/51 finding

It clearly lets you choose the output schema up front and then sticks to that schema, so developer-controlled fields are well supported.

This is a capability we checked per tool — whether (and how well) it supports this — so it shows a support verdict and what we found, rather than media or an input→output pair.

Worked wellacross all testslink to this finding

Requires the developer to define fields in the schema before parsing, and only those defined fields are returned; undeclared fields are silently skipped instead of being inferred.

Export formatCapability check5/51 finding

The tool delivers results as JSON, and there’s no sign of alternate export channels in the tested runs.

This is a capability we checked per tool — whether (and how well) it supports this — so it shows a support verdict and what we found, rather than media or an input→output pair.

Worked wellacross all testslink to this finding

Delivers extracted data as JSON; the report does not mention CSV, webhook, or any other export channel.

Field coverage5/53 findings

Across all three tested resumes, it kept the benchmark sections intact, so coverage was complete for the fields the benchmark asks for.

Worked wellwhen we tried: Messy real-world resume — John Kumarlink to this finding

Still covers the benchmark sections on the messy resume: contact details, work experience, education, and skills are all extracted, including all three education entries.

research-media-extracta-ai-20output-203-28bd0eabeb73.txt
Loading file...
Worked wellwhen we tried: Multi-column sidebar resume — Priya Sharmalink to this finding

Covers the full benchmark set on the sidebar resume: name, email, phone, experience, education, and skills are all extracted from both columns.

research-media-extracta-ai-20output2-c32b71b0b786.txt
Loading file...
Input handlingCapability check5/53 findings

It took all three PDFs without breaking, including the messy one, so input acceptance looks consistently reliable.

This is a capability we checked per tool — whether (and how well) it supports this — so it shows a support verdict and what we found, rather than media or an input→output pair.

Worked wellwhen we tried: Messy real-world resume — John Kumarlink to this finding

Accepts a messy PDF without errors even when formatting is inconsistent and structural markers are weak.

Worked wellwhen we tried: Clean single-column resume — Rugved Nichitelink to this finding

Accepts a PDF on upload and parses it successfully on the first run with no errors once the schema is defined.

Messy resume handling5/51 finding

The messy resume did not derail the extractor, and the main sections still came through, so it handled poor formatting very well.

Worked wellwhen we tried: Messy real-world resume — John Kumarlink to this finding

Degrades gracefully on a poorly structured resume: it does not crash or blank out the main sections, and it still extracts the critical fields.

research-media-extracta-ai-20output-203-28bd0eabeb73.txt
Loading file...
Multi-column handling5/51 finding

It read the sidebar layout cleanly and kept both columns’ content together, which is exactly what this criterion needs.

Worked wellwhen we tried: Multi-column sidebar resume — Priya Sharmalink to this finding

Correctly reads a two-column/sidebar layout without any layout configuration, preserving content from both columns.

research-media-extracta-ai-20output2-c32b71b0b786.txt
Loading file...
Output formatCapability check5/51 finding

The tool consistently delivered machine-readable JSON with stable keys, so the output format is as solid as it gets.

This is a capability we checked per tool — whether (and how well) it supports this — so it shows a support verdict and what we found, rather than media or an input→output pair.

Worked wellacross all testslink to this finding

Returns valid, structured JSON with stable field names; the report describes the outputs as clean, minimal JSON rather than a loose text dump.

Noise in output5/51 finding

The output stayed tight and focused on requested fields, without the extra junk that makes downstream handling harder.

Worked wellacross all testslink to this finding

Keeps output lean and avoids extra metadata noise; the report says there are no taxonomy IDs or irrelevant fields, only schema-requested values.

research-media-extracta-ai-20output-201-a01c085fbe66.txt
Loading file...
research-media-extracta-ai-20output2-c32b71b0b786.txt
Loading file...
research-media-extracta-ai-20output-203-28bd0eabeb73.txt
Loading file...

Parseur

Usable#2 of 10

Strong template-driven parser for core resume fields, but it weakens on structured list fields and messy education details.

Accuracy4/53 findings

It is dependable on straightforward contact and work fields, but one wrong CGPA read on the messy resume shows it can misread numeric education details when the layout gets rough. That keeps it above average, not perfect.

Worked wellwhen we tried: Multi-column sidebar resume — Priya Sharmalink to this finding

For the fields it does capture, the parser returns the key values correctly, including the candidate identity and the two work-experience descriptions with their dates and metrics.

Worked wellwhen we tried: Clean single-column resume — Rugved Nichitelink to this finding

On the clean resume, it extracts the candidate's name, current role, location, phone number, email, and LinkedIn URL correctly, with title case preserved where shown.

Custom field supportCapability check5/51 finding

The workflow lets you define the schema up front and change it later, and the parser follows that schema closely instead of forcing a fixed field set. That is strong custom-field control.

This is a capability we checked per tool — whether (and how well) it supports this — so it shows a support verdict and what we found, rather than media or an input→output pair.

Worked wellacross all testslink to this finding

The template workflow supports custom schema control: you can add, remove, or rename fields, and the parser returns only the fields defined in that template.

Export formatCapability check5/51 finding

It offers the main practical delivery options you would expect: JSON, CSV, and Excel, plus a structured object view for inspection. That is a complete and useful export setup.

This is a capability we checked per tool — whether (and how well) it supports this — so it shows a support verdict and what we found, rather than media or an input→output pair.

Worked wellacross all testslink to this finding

Parsed data can be exported as JSON, CSV, or Excel, and the UI also offers a structured Object view for the extracted data.

Field coverage3/53 findings

The clean resume covers the core schema, but the harder resumes leave real sections behind or trim education history. That puts it in the middle: good baseline coverage, but not broad enough to call complete across the tested inputs.

Struggledwhen we tried: Messy real-world resume — John Kumarlink to this finding

On the messy resume, the education extraction collapses to a single entry and omits the 12th Science and 10th std records.

Failedwhen we tried: Multi-column sidebar resume — Priya Sharmalink to this finding

This run does not cover the full baseline schema because the configured template omits education and skills entirely, and also leaves out CGPA, languages, and work-location subfields.

Input handlingCapability check5/53 findings

The tested PDFs all went through successfully, so there is no sign of file rejection or input failure in normal use. The only caveat is that the observed runs were through Parseur's document workflow rather than a direct API upload, but the PDF intake itself was stable.

This is a capability we checked per tool — whether (and how well) it supports this — so it shows a support verdict and what we found, rather than media or an input→output pair.

Worked wellwhen we tried: Multi-column sidebar resume — Priya Sharmalink to this finding

The tool accepts the PDF and processes the two-column resume successfully after the template has already been configured.

Worked wellwhen we tried: Clean single-column resume — Rugved Nichitelink to this finding

The tool accepts the PDF resume and processes it successfully after the one-time mailbox and template setup.

Messy resume handling5/51 finding

Even with inconsistent formatting and mixed date styles, the resume stayed parseable. The tool kept going instead of breaking, which is exactly the kind of graceful fallback you want on rough input.

Worked wellwhen we tried: Messy real-world resume — John Kumarlink to this finding

It degrades gracefully on poorly formatted input: the resume remains parseable even though the source is noisy and irregular.

Multi-column handling5/51 finding

It kept the reading order intact on the sidebar resume and pulled the main work blocks without collapsing the page into gibberish. For a two-column resume, that is the main job, and it did it well.

Worked wellwhen we tried: Multi-column sidebar resume — Priya Sharmalink to this finding

It handles the sidebar layout well enough to extract the main resume blocks and both work experiences without a reading-order collapse.

Output formatCapability check4/52 findings

It usually returns usable structured key/value output and gives clear export options, but the messy resume shows that list-like content can flatten into a single string. That makes the format workable, but not consistently fully regular.

This is a capability we checked per tool — whether (and how well) it supports this — so it shows a support verdict and what we found, rather than media or an input→output pair.

Worked wellacross all testslink to this finding

The parser exposes results as structured key/value output with snake_case field names rather than plain text blobs.

Struggledwhen we tried: Messy real-world resume — John Kumarlink to this finding

The skills output is emitted as one space-separated string with no array structure or comma delimiters, making it unreliable to split programmatically.

Noise in output5/51 finding

It stays within the defined template and leaves unsupported data out rather than inventing extra fields. That keeps the output clean and predictable instead of noisy.

Worked wellacross all testslink to this finding

Across the inspected outputs, the parser stays template-bound and does not invent extra fields; unsupported data is omitted rather than hallucinated.

Free tier viabilityCapability check5/51 finding

The UI explicitly says re-processing is free, so the tool is testable without paying before you start iterating on the template. That makes it viable to try on a free path.

This is a capability we checked per tool — whether (and how well) it supports this — so it shows a support verdict and what we found, rather than media or an input→output pair.

Worked wellacross all testslink to this finding

The UI explicitly says re-processing is free, so the workflow is testable without a paid plan once the document is loaded.

Affinda

Usable#3 of 10

Strong on structured JSON, custom fields, and multi-column layouts, but it needs cleanup for accuracy and noisy skills.

Accuracy2/56 findings

It gets the broad shape of the resume right, but repeated misses on numbers, URLs, missing fields, and computed experience make the details unreliable without review.

Mixedwhen we tried: Multi-column sidebar resume — Priya Sharmalink to this finding

Leaves the Objective, Summary, and Expected Salary fields blank even though matching content is present in the resume.

Mixedwhen we tried: Clean single-column resume — Rugved Nichitelink to this finding

Splits one LinkedIn URL into two website entries and drops the /in/ path segment, so the URL is incomplete.

Custom field supportCapability check5/51 finding

It goes well beyond a fixed resume schema and lets you work with a much richer field set and skill metadata.

This is a capability we checked per tool — whether (and how well) it supports this — so it shows a support verdict and what we found, rather than media or an input→output pair.

Worked wellacross all testslink to this finding

Exposes 100+ configurable fields, and the skill output includes richer metadata such as type, software flag, EMSI ID, and Wikipedia info URL.

Export formatCapability check5/51 finding

The output is delivered in JSON form, which is straightforward to save, inspect, and automate downstream.

This is a capability we checked per tool — whether (and how well) it supports this — so it shows a support verdict and what we found, rather than media or an input→output pair.

Worked wellacross all testslink to this finding

Delivers the parsed results as JSON text files rather than CSV or webhook output.

Field coverage5/53 findings

It kept the core resume sections present across clean, columned, and messy inputs, so the baseline coverage is dependable.

Worked wellwhen we tried: Clean single-column resume — Rugved Nichitelink to this finding

Populated the canonical resume fields on the clean baseline: name, email, phone, work experience, education, and skills.

research-media-json-20output-201-4b8efc393b4a.txt
Loading file...
Worked wellwhen we tried: Messy real-world resume — John Kumarlink to this finding

Still populated the canonical resume fields on the messy resume: name, email, phone, work experience, education, and skills.

research-media-json-20output-203-1e94d404d664.txt
Loading file...
Input handlingCapability check5/53 findings

It accepted every PDF cleanly on the first try, so upload handling is solid and not a limiting factor here.

This is a capability we checked per tool — whether (and how well) it supports this — so it shows a support verdict and what we found, rather than media or an input→output pair.

Worked wellwhen we tried: Multi-column sidebar resume — Priya Sharmalink to this finding

Accepted the PDF on first upload with no manual layout hints or column mapping required.

Worked wellwhen we tried: Messy real-world resume — John Kumarlink to this finding

Accepted a poorly formatted PDF directly and parsed it without upload-time errors.

Messy resume handling5/51 finding

It stayed usable on a rough, inconsistent resume and still pulled out the main information instead of falling apart.

Worked wellwhen we tried: Messy real-world resume — John Kumarlink to this finding

Degraded gracefully on irregular formatting, including non-standard date ranges, comma-separated skills, and mixed-in hobbies/references.

research-media-json-20output-203-1e94d404d664.txt
Loading file...
Multi-column handling5/51 finding

It handled the sidebar layout properly, keeping content from each side in the right section instead of blending the columns together.

Worked wellwhen we tried: Multi-column sidebar resume — Priya Sharmalink to this finding

Correctly separated a two-column/sidebar layout, keeping work history from the left column and education, certifications, skills, and languages from the right sidebar.

research-media-json-20output-202-cf13408c88fc.txt
Loading file...
Output formatCapability check5/51 finding

The tool consistently produced machine-readable JSON with named fields, which is exactly what this criterion asks for.

This is a capability we checked per tool — whether (and how well) it supports this — so it shows a support verdict and what we found, rather than media or an input→output pair.

Worked wellacross all testslink to this finding

Returns valid, structured JSON outputs with named fields across all three test resumes.

Noise in output1/54 findings

It repeatedly adds duplicate or made-up skill entries, so the skills output is not clean enough to trust as-is.

Failedwhen we tried: Clean single-column resume — Rugved Nichitelink to this finding

Pulls certification names into the skills list, including AWS Certified Cloud Practitioner and IBM Mainframe.

Failedwhen we tried: Clean single-column resume — Rugved Nichitelink to this finding

Duplicates skills in the output, with Research, Python, and Artificial Intelligence each appearing multiple times.

HrFlow

Needs work#4 of 10

Reliable API parser for clean PDFs, but noisy and less accurate on harder layouts.

Accuracy3/53 findings

It is accurate on the clean resume, but quality drops on the harder ones: task extraction becomes incomplete in the two-column file and formatting normalisation shifts values in the messy file. That pattern is genuinely mixed rather than consistently strong.

Mixedwhen we tried: Messy real-world resume — John Kumarlink to this finding

On the messy resume, it still extracts the phone number and three education entries, but it lowercases the candidate name and skills and reformats the phone string away from the source punctuation.

Struggledwhen we tried: Multi-column sidebar resume — Priya Sharmalink to this finding

Captures only 1 of the 4 Role 1 tasks, returning just reducing batch processing time by 40% and missing the other three responsibilities.

Custom field supportCapability check1/51 finding

There is no way to pick or define your own output fields, so the developer is locked into the built-in schema. That is the core failure for this criterion.

This is a capability we checked per tool — whether (and how well) it supports this — so it shows a support verdict and what we found, rather than media or an input→output pair.

Failedacross all testslink to this finding

Uses a fixed predefined schema; developers cannot choose or define custom output fields.

Export formatCapability check5/51 finding

The result is delivered directly in JSON through the API, which is exactly the kind of export path this criterion rewards. No conversion step is needed.

This is a capability we checked per tool — whether (and how well) it supports this — so it shows a support verdict and what we found, rather than media or an input→output pair.

Worked wellacross all testslink to this finding

Delivers the parsed result as JSON through the API response.

Field coverage4/51 finding

It reliably covers the core resume fields on the clean test, but the messy case shows the skills section is not fully complete. That is stronger than partial extraction, but not perfect coverage across harder inputs.

Worked wellwhen we tried: Clean single-column resume — Rugved Nichitelink to this finding

On the clean baseline, the parser populates the full core resume set — name, email, phone, work experience, education, and skills — with 26 skills extracted.

research-media-hrflow-20output-201-9f17ceb5aef8.txt
Loading file...
Input handlingCapability check5/53 findings

It handled every tested PDF shape without crashing, including a clean resume, a two-column layout, and a messy file. That makes input acceptance look consistently solid rather than occasional.

This is a capability we checked per tool — whether (and how well) it supports this — so it shows a support verdict and what we found, rather than media or an input→output pair.

Worked wellwhen we tried: Clean single-column resume — Rugved Nichitelink to this finding

Accepts a PDF resume through the API and parses it successfully without runtime errors.

Worked wellwhen we tried: Messy real-world resume — John Kumarlink to this finding

Accepts a poorly formatted PDF resume through the API and parses it without crashing.

Messy resume handling3/51 finding

It survives the messy file and still gets useful data out, but the loss of soft skills, certifications, and clean task boundaries shows the parser degrades in a noticeable way. That is partial resilience, not robust cleanup.

Mixedwhen we tried: Messy real-world resume — John Kumarlink to this finding

Degrades only partially on poor formatting: it returns 10 of 14 technical skills, drops all soft skills, returns zero certifications, and lets Pune bleed into one task item.

Multi-column handling3/51 finding

It does read the sidebar and main content from a two-column page, but the title truncation shows the layout parsing is not fully reliable. That is a middle-ground result: usable, but not clean.

Mixedwhen we tried: Multi-column sidebar resume — Priya Sharmalink to this finding

Recovers sidebar content from the two-column layout, but truncates one job title by dropping the ML suffix and returning only Software Engineer.

Output formatCapability check5/51 finding

The API response is already machine-readable JSON, so there is no formatting step needed before downstream use. With no sign of free-text output, this is a top score.

This is a capability we checked per tool — whether (and how well) it supports this — so it shows a support verdict and what we found, rather than media or an input→output pair.

Worked wellacross all testslink to this finding

Returns parsed resume data as structured JSON in the API response, making the output machine-readable rather than free text.

Noise in output2/53 findings

The parser repeatedly invents or mislabels extra items, especially in the skills and education sections. Because the noise is repeated across both clean and two-column inputs, this is a clear weakness rather than a minor blemish.

Struggledwhen we tried: Clean single-column resume — Rugved Nichitelink to this finding

Adds five spurious skill fragments — ml apis, lambda, s3, ml, and rest apis — that are not real skills.

Struggledwhen we tried: Multi-column sidebar resume — Priya Sharmalink to this finding

Treats project names and fragments as skills, including parse 500, real-time sales forecasting dashboard, aws lambda + s3, automation tool, react dashboard, ci, and cd.

CVParserPro

Needs work#5 of 10

Good at building a structured candidate profile, but weak on date accuracy and fixed-schema flexibility.

Accuracy2/54 findings

The tool gets some basics right, but it repeatedly guesses wrong on dates and experience totals, which are high-value fields for hiring workflows. That mix of one correct run and several serious date mistakes lands it below average.

Failedwhen we tried: Messy real-world resume — John Kumarlink to this finding

Interprets the education end date as Present even though the resume gives a 2019 graduation year.

Failedwhen we tried: Clean single-column resume — Rugved Nichitelink to this finding

Inflates total experience to 11 years in the profile header even though the resume supports only about 2–3 years of experience.

Custom field supportCapability check1/51 finding

The output schema is locked, so developers cannot tailor the returned fields to their own pipeline or use case.

This is a capability we checked per tool — whether (and how well) it supports this — so it shows a support verdict and what we found, rather than media or an input→output pair.

Failedacross all testslink to this finding

The schema is fixed: developers cannot add, remove, or rename output fields.

Export formatCapability check4/51 finding

It does provide a practical export path through CSV download, but the lack of a direct JSON option keeps it from being fully flexible.

This is a capability we checked per tool — whether (and how well) it supports this — so it shows a support verdict and what we found, rather than media or an input→output pair.

Worked wellacross all testslink to this finding

The parsed output can be exported as CSV via a download link, and the report says there is no direct JSON download from the UI.

Field coverage4/53 findings

It usually returns the main identity, contact, work, education, and skills blocks, but the messy resume drops the lower-school education records, so coverage is strong rather than perfect.

Failedwhen we tried: Messy real-world resume — John Kumarlink to this finding

Returns only the degree-level education entry and drops the 10th and 12th standard education records.

Worked wellwhen we tried: Clean single-column resume — Rugved Nichitelink to this finding

Returns the baseline profile as a complete structured set, with name, email, phone, experience, education, and skills all present, plus location, certifications, and language.

Input handlingCapability check5/53 findings

It took all three PDFs without complaint, including the sidebar layout and the messy resume, so the upload path appears reliable rather than fragile.

This is a capability we checked per tool — whether (and how well) it supports this — so it shows a support verdict and what we found, rather than media or an input→output pair.

Worked wellwhen we tried: Messy real-world resume — John Kumarlink to this finding

Accepts a poorly formatted PDF with inconsistent dates and weak section labeling without errors.

Worked wellwhen we tried: Multi-column sidebar resume — Priya Sharmalink to this finding

Accepts a two-column/sidebar PDF directly and parses it without any special layout configuration.

Messy resume handling3/51 finding

It keeps going on a noisy resume and still builds most of the profile, but the date mistakes show that the output is usable rather than robust.

Mixedwhen we tried: Messy real-world resume — John Kumarlink to this finding

Still extracts the candidate profile, two jobs, skills, and certifications from noisy input, but the result is not fully stable because date interpretation errors remain.

Multi-column handling5/51 finding

It read the two-column resume in the right order and pulled content from the sidebar without extra setup, so the layout handling looks solid.

Worked wellwhen we tried: Multi-column sidebar resume — Priya Sharmalink to this finding

Recovers content from both columns, including sidebar content, without needing manual reading-order fixes.

Output formatCapability check1/51 finding

The tool shows results in its own profile view, but it never returns a JSON payload or direct JSON download, so it does not satisfy structured JSON output.

This is a capability we checked per tool — whether (and how well) it supports this — so it shows a support verdict and what we found, rather than media or an input→output pair.

Failedacross all testslink to this finding

The tool surfaces parsed results as a structured candidate profile in the UI, but it does not expose a JSON payload or a direct JSON download.

Noise in output1/51 finding

It invents month-level dates that are not in the resume, which is a direct hallucination on a core field and a strong failure for output cleanliness.

Failedwhen we tried: Messy real-world resume — John Kumarlink to this finding

Hallucinates month-level dates such as January/December or 2019-01/2021-12 for an experience entry that is only year-based in the source.

Skima AI

Needs work#6 of 10

Fast on basic resumes, but weak on structured output and sidebar-heavy layouts.

Accuracy3/52 findings

It can be accurate on straightforward resumes, but the truncation on the multi-column input shows that correctness is inconsistent once the layout gets harder.

Worked wellwhen we tried: Clean single-column resume — Rugved Nichitelink to this finding

The baseline parse preserved the expected identity and career details, including the correct 2.9-year total experience calculation.

Failedwhen we tried: Multi-column sidebar resume — Priya Sharmalink to this finding

The parser truncated responsibility text mid-sentence, losing the quantified end of the statement and reducing the factual completeness of the extracted work history.

Custom field supportCapability check1/51 finding

There is no sign of any way to choose fields or define a custom schema, so developer control over the output is effectively absent.

This is a capability we checked per tool — whether (and how well) it supports this — so it shows a support verdict and what we found, rather than media or an input→output pair.

Failedacross all testslink to this finding

The parser uses a fixed, predefined schema and does not expose a developer control for selecting fields or defining a custom output schema.

Export formatCapability check2/51 finding

There is at least a visible download action, but the only demonstrated delivery path was on-screen viewing, so the export story is thin and not clearly structured.

This is a capability we checked per tool — whether (and how well) it supports this — so it shows a support verdict and what we found, rather than media or an input→output pair.

Mixedacross all testslink to this finding

Output delivery was demonstrated only as on-screen results in the web UI; a Download Data action was visible, but no JSON, CSV, or webhook export was shown in the report.

Field coverage4/52 findings

It usually covers the standard resume fields, but the two-column case dropped part of that set, so coverage is strong but not complete.

Worked wellwhen we tried: Clean single-column resume — Rugved Nichitelink to this finding

On the baseline single-column resume, the parser covered the standard field set end-to-end: name, email, phone, work experience, education, and skills.

Mixedwhen we tried: Multi-column sidebar resume — Priya Sharmalink to this finding

The parser returned the core standard fields on the two-column resume, but it left skills out of the extracted structure, so the standard field set was incomplete.

Input handlingCapability check5/51 finding

It took PDF files directly and parsed them without any setup friction, so this is a clean full score for upload acceptance.

This is a capability we checked per tool — whether (and how well) it supports this — so it shows a support verdict and what we found, rather than media or an input→output pair.

Worked wellacross all testslink to this finding

The tool accepted PDF uploads directly and parsed them successfully without per-file configuration or layout hints; the upload modal also advertises PDF, doc, docx, and word files with a maximum of 5 files.

Messy resume handling3/51 finding

It did keep working on messy input, but the output quality degraded sharply, so this lands in the middle rather than the top end.

Mixedwhen we tried: Messy real-world resume — John Kumarlink to this finding

The parser accepted a poorly formatted PDF without errors, but the extracted content degraded into run-on responsibilities and flattened skills, showing weak graceful degradation on messy input.

Multi-column handling1/51 finding

The two-column resume lost major sidebar sections and projects, which is a core layout failure rather than a small slip.

Failedwhen we tried: Multi-column sidebar resume — Priya Sharmalink to this finding

The two-column/sidebar layout was not fully parsed: sidebar content such as skills, certifications, and languages was dropped, and projects were also missing from the output.

Output formatCapability check1/51 finding

The tool never showed a machine-readable JSON result, only browser-rendered text, so it falls to the bottom of the scale.

This is a capability we checked per tool — whether (and how well) it supports this — so it shows a support verdict and what we found, rather than media or an input→output pair.

Failedacross all testslink to this finding

The demo never surfaced a valid structured JSON payload; results were shown as rendered text in the browser instead of a machine-readable JSON response.

Noise in output2/52 findings

It repeatedly leaked formatting junk into the result instead of cleaning it up, and that kind of output noise is serious even when the core fields are present.

Struggledwhen we tried: Clean single-column resume — Rugved Nichitelink to this finding

The responsibilities output leaked raw formatting markers, producing duplicated bullet styling instead of clean normalized bullets.

Struggledwhen we tried: Clean single-column resume — Rugved Nichitelink to this finding

The skills section was flattened into one concatenated string without separators, making the extracted output non-normalized and hard to consume programmatically.

Free tier viabilityCapability check3/51 finding

The product was reachable in a public interface, but there is no proof of a free plan or a no-paid-access path, so testability is possible but not confirmed.

This is a capability we checked per tool — whether (and how well) it supports this — so it shows a support verdict and what we found, rather than media or an input→output pair.

Mixedacross all testslink to this finding

The public UI exposes Sign Up and Request a Demo links, but the report does not establish that parsing is usable on a free plan, so free-tier testability remains unverified.

Hireability

Unstable#7 of 10

Strong on JSON/API delivery, but shaky on layout edge cases and noisy skill output.

Accuracy2/52 findings

The parser often lands on the right document, but when it misses, it misses in identity-critical ways, so correctness is not stable enough to trust broadly.

Failedwhen we tried: Messy real-world resume — John Kumarlink to this finding

The second employer name was merged with the role title, returning 'Junior Developer XYZ InfoTech' instead of the company name alone.

Failedwhen we tried: Clean single-column resume — Rugved Nichitelink to this finding

The parser split one candidate name into GivenName 'Dev' and FamilyName 'loper', producing FormattedName 'Dev loper' instead of the source name.

Custom field supportCapability check5/51 finding

It offers a broad, configurable field set rather than a fixed one-size-fits-all export, which is strong support for custom output needs.

This is a capability we checked per tool — whether (and how well) it supports this — so it shows a support verdict and what we found, rather than media or an input→output pair.

Worked wellacross all testslink to this finding

The report explicitly claims 100+ configurable fields with rich skill metadata, indicating the developer can choose from a large custom field set.

Export formatCapability check5/51 finding

The deliverable is a structured JSON export, not a loose text dump, so the output format is well suited for downstream automation.

This is a capability we checked per tool — whether (and how well) it supports this — so it shows a support verdict and what we found, rather than media or an input→output pair.

Worked wellacross all testslink to this finding

The report says the parser provides full structured JSON export and is API-ready, so JSON is the delivered output format.

Field coverage2/53 findings

It covers the basics on a clean page, but once the layout gets harder, core fields start disappearing, so coverage is more often incomplete than dependable.

Worked wellwhen we tried: Clean single-column resume — Rugved Nichitelink to this finding

The baseline resume run covered the standard candidate fields: contact details, work experience, education, certifications, and a 29-item skills/competency set.

Failedwhen we tried: Messy real-world resume — John Kumarlink to this finding

Only one education entry was extracted; the visible 12th and 10th entries were missed, so the education coverage was incomplete.

Input handlingCapability check5/51 finding

It handled PDF uploads cleanly and started parsing on the first try, so there’s no sign of input-level friction or upload failure.

This is a capability we checked per tool — whether (and how well) it supports this — so it shows a support verdict and what we found, rather than media or an input→output pair.

Worked wellacross all testslink to this finding

The demo accepted PDF uploads directly and parsed them on first upload without manual configuration or a crash, so basic PDF input handling worked.

Messy resume handling4/51 finding

On rough input it still reconstructs most of the resume instead of falling apart, but the price is a few merges and missing pieces.

Worked wellwhen we tried: Messy real-world resume — John Kumarlink to this finding

The parser degraded reasonably on a poorly structured resume, still recovering name, contact details, objective, work experience, education, skills, and hobbies despite inconsistent formatting and mixed-in extra text.

Multi-column handling1/51 finding

This is a root failure on two-column layouts: it doesn’t just miss details, it switches the whole resume into the wrong parsing mode.

Failedwhen we tried: Multi-column sidebar resume — Priya Sharmalink to this finding

The two-column resume was misclassified as a Job Order, returning job-style fields such as Title, PositionTitle, and MinimumEducationLevel instead of a candidate-profile parse.

Output formatCapability check5/51 finding

The output is clearly machine-readable and nested in a consistent JSON shape, which is what you want from an API parser.

This is a capability we checked per tool — whether (and how well) it supports this — so it shows a support verdict and what we found, rather than media or an input→output pair.

Worked wellacross all testslink to this finding

The tool returns structured JSON-style output, with nested Results → HireAbilityJSONResults objects and field/value pairs rather than freeform text.

Noise in output1/53 findings

Noise shows up in different forms across all three resumes, so the output can be polluted even when the parser seems to be working.

Failedwhen we tried: Messy real-world resume — John Kumarlink to this finding

Certifications, skills, and references were collapsed into a single CertificationName field instead of being separated into distinct outputs.

Failedwhen we tried: Multi-column sidebar resume — Priya Sharmalink to this finding

The competency output showed blank level values and mixed in non-skill terms such as Engineering and Software as competencies, which is incorrect output noise.

Free tier viabilityCapability check3/51 finding

It is clearly testable under a capped allocation, but the available evidence doesn’t say whether that allocation is free or tied to a paid plan.

This is a capability we checked per tool — whether (and how well) it supports this — so it shows a support verdict and what we found, rather than media or an input→output pair.

Mixedacross all testslink to this finding

The demo screens expose an allocation quota of 30 requests, with 10–12 used and 18–20 remaining, so the tool is testable under a capped allocation; however, the report does not say whether that allocation is free or paid.

OpenResume

Unstable#8 of 10

Free, zero-signup browser parser that opens PDFs easily, but it is brittle on field placement and offers no machine-readable export.

Accuracy1/55 findings

The misses weren't isolated to one section: identity, contact, summary, GPA, and work-experience mapping all broke across the tested resumes, which points to a brittle parser rather than a one-off slip.

Failedwhen we tried: Multi-column sidebar resume — Priya Sharmalink to this finding

The summary field can be populated with a job-title headline instead of an actual summary, so the extracted value is semantically wrong even when text is present.

Failedwhen we tried: Multi-column sidebar resume — Priya Sharmalink to this finding

The GPA matcher can miss an 8.7/10 CGPA and leave the date row carrying the education text instead of the GPA value.

Custom field supportCapability check1/51 finding

The output schema is fixed, so there is no way to tailor the fields to a custom downstream workflow.

This is a capability we checked per tool — whether (and how well) it supports this — so it shows a support verdict and what we found, rather than media or an input→output pair.

Failedacross all testslink to this finding

The parser uses fixed fields only and does not let the developer add, remove, or rename output fields.

Export formatCapability check1/51 finding

There is no export channel for JSON or other programmatic handoff, so the tool is view-only rather than integration-ready.

This is a capability we checked per tool — whether (and how well) it supports this — so it shows a support verdict and what we found, rather than media or an input→output pair.

Failedacross all testslink to this finding

There is no JSON export or other programmatic export path; output is view-only in the browser.

Field coverage4/51 finding

It covered the core contact and content fields on the clean resume, but leaving both name and phone blank and pushing CGPA into Date keeps it short of full coverage.

Mixedwhen we tried: Clean single-column resume — Rugved Nichitelink to this finding

On the clean single-column resume, the parser covered email, experience, education, and skills, but it left the name blank, omitted the phone number, and failed to place GPA in the education field; that is 4 of the 6 fixed fields covered at best.

Input handlingCapability check5/53 findings

It opened all three tested PDFs directly in the browser without crashing or blocking the run, so intake looks reliable across the inputs we tried.

This is a capability we checked per tool — whether (and how well) it supports this — so it shows a support verdict and what we found, rather than media or an input→output pair.

Worked wellwhen we tried: Messy real-world resume — John Kumarlink to this finding

The tool accepts a messy PDF resume directly and parses it without crashing.

Worked wellwhen we tried: Clean single-column resume — Rugved Nichitelink to this finding

The tool accepts a PDF resume directly in the browser without signup, setup, or parsing errors.

Messy resume handling1/51 finding

When headers and formatting were weak, the parser lost structure in education and work experience, which shows it depends on clean visual cues to stay aligned.

Failedwhen we tried: Messy real-world resume — John Kumarlink to this finding

On a poorly structured resume, the parser degrades badly: education fields go blank or wrong, the company field becomes a bullet-point description, and job title remains empty.

Multi-column handling1/51 finding

The sidebar layout threw off section ordering enough to merge company and job title, so the parser can't reliably follow two-column reading order.

Failedwhen we tried: Multi-column sidebar resume — Priya Sharmalink to this finding

On a two-column/sidebar layout, the parser can merge company and job title into the same value, showing that it cannot reliably separate columns with mixed reading order.

Output formatCapability check1/51 finding

The result stays in the browser instead of coming back as structured data, so there is no machine-readable payload to consume.

This is a capability we checked per tool — whether (and how well) it supports this — so it shows a support verdict and what we found, rather than media or an input→output pair.

Failedacross all testslink to this finding

The tool does not return structured JSON output; the parsed result stays in the browser UI instead of being delivered as machine-readable JSON.

Noise in output3/51 finding

It doesn't invent many new categories, but it does fold unrelated text into the skills block, which is still noisy because it blurs section boundaries.

Mixedwhen we tried: Messy real-world resume — John Kumarlink to this finding

The parser can also merge unrelated content into one output block, lumping certifications, references, and hobbies into the skills section instead of keeping them separate.

Free tier viabilityCapability check5/51 finding

You can try it immediately in the browser with no signup or paid gate, so it is easy to evaluate for free.

This is a capability we checked per tool — whether (and how well) it supports this — so it shows a support verdict and what we found, rather than media or an input→output pair.

Worked wellacross all testslink to this finding

The tool is testable for free in a browser with zero signup, so it can be evaluated without a paid plan or enterprise outreach.

Airparser

Usable#9 of 10

Strongest at readable JSON extraction from varied resumes, but it can slip on exact contact details and title completeness.

Accuracy3/54 findings

It was often right on numbers and messy text, but the clean resume had two important misses on contact and title fields. That makes the overall result mixed: useful for most content, yet not trustworthy enough for fully hands-off use on every critical field.

Failedwhen we tried: Clean single-column resume — Rugved Nichitelink to this finding

Truncated the headline job title from 'AI Research Analyst & Software Developer' to 'AI Research Analyst', silently dropping the second role.

research-media-airparser-201-20output-566ff479b5bf.txt
Loading file...
Failedwhen we tried: Clean single-column resume — Rugved Nichitelink to this finding

Misread the email local part, outputting rugged.nichite@email.com instead of rugved.nichite@email.com.

Custom field supportCapability check5/51 finding

It supports developer-defined fields and sticks to the requested schema rather than forcing a fixed template. That makes it highly flexible for downstream workflows that need specific resume fields.

This is a capability we checked per tool — whether (and how well) it supports this — so it shows a support verdict and what we found, rather than media or an input→output pair.

Worked wellacross all testslink to this finding

Lets the developer define fields in natural language, then returns exactly those fields and nothing else once the schema is set.

Export formatCapability check5/51 finding

The output delivery is consistently JSON, which is straightforward to consume in apps and scripts. There is no evidence of alternative export paths in these runs, but JSON delivery itself is clear and stable.

This is a capability we checked per tool — whether (and how well) it supports this — so it shows a support verdict and what we found, rather than media or an input→output pair.

Worked wellacross all testslink to this finding

Delivers parsed results as JSON rather than CSV or webhook output, with consistent field names across runs.

Field coverage5/53 findings

It covered the core resume fields on every input and even picked up extra sections when they were present. That consistency across simple, sidebar-heavy, and messy resumes is strong evidence of complete field coverage.

Worked wellwhen we tried: Messy real-world resume — John Kumarlink to this finding

Still extracted the core resume fields from noisy input, including contact details, work experience, education, and skills.

research-media-airparser-20output-203-1443e1cd9ec9.txt
Loading file...
Worked wellwhen we tried: Multi-column sidebar resume — Priya Sharmalink to this finding

Extracted the core resume fields plus sidebar content, including contact info, experience, education, skills, languages, certifications, and projects.

research-media-airparser-20output-201-25a770e8bb86.txt
Loading file...
Input handlingCapability check5/53 findings

It accepted every tested PDF and kept parsing without setup or errors, so this is a clear top score. The fact that it handled both clean and messy resumes the same way shows the upload path is dependable, not just lucky on one easy file.

This is a capability we checked per tool — whether (and how well) it supports this — so it shows a support verdict and what we found, rather than media or an input→output pair.

Worked wellwhen we tried: Clean single-column resume — Rugved Nichitelink to this finding

Accepted the uploaded PDF on the first try and parsed it without manual configuration or errors.

Worked wellwhen we tried: Multi-column sidebar resume — Priya Sharmalink to this finding

Accepted the PDF and parsed the two-column resume without layout hints or manual adjustment.

Messy resume handling5/51 finding

It stayed usable on a rough, inconsistently formatted resume and still recovered the important sections. That is exactly the kind of graceful fallback this criterion rewards, so it scores at the top.

Worked wellwhen we tried: Messy real-world resume — John Kumarlink to this finding

Degraded gracefully on messy text, recovering work history, three education entries, certifications, hobbies, and references instead of failing on the formatting noise.

research-media-airparser-20output-203-1443e1cd9ec9.txt
Loading file...
Multi-column handling5/51 finding

On the one true multi-column test, it read both the main body and the sidebar without needing any layout hints. Because the split layout was handled in one pass, this deserves the top score.

Worked wellwhen we tried: Multi-column sidebar resume — Priya Sharmalink to this finding

Correctly handled a split-header, two-column layout and read both left-body and right-sidebar content in a single parse.

research-media-airparser-20output-201-25a770e8bb86.txt
Loading file...
Output formatCapability check5/53 findings

It consistently delivered valid JSON across all three runs, which is exactly what this criterion asks for. There were no signs of malformed output or ad hoc text, so the format is reliably machine-friendly.

This is a capability we checked per tool — whether (and how well) it supports this — so it shows a support verdict and what we found, rather than media or an input→output pair.

Worked wellwhen we tried: Clean single-column resume — Rugved Nichitelink to this finding

Returned a well-structured JSON object with consistent field names and readable values.

Worked wellwhen we tried: Multi-column sidebar resume — Priya Sharmalink to this finding

Returned the parsed result as structured JSON with consistent field names.

LlamaParse

Usable#10 of 10

Strongest at structured extraction and layout resilience, but less reliable on exact value fidelity and consistent field naming.

Accuracy2/55 findings

It usually found the right sections, but it repeatedly missed or distorted details that matter in production, like titles, issuer names, formatting, and capitalization.

Mixedwhen we tried: Messy real-world resume — John Kumarlink to this finding

Lowercases skill names and does not preserve the original capitalization of the skills list.

research-media-llama-20output-203-211c2f59deaf.txt
Loading file...
Mixedwhen we tried: Clean single-column resume — Rugved Nichitelink to this finding

Represents CGPA as a label-plus-value string, "CGPA: 8.2 / 10", instead of a clean numeric field.

Custom field supportCapability check5/51 finding

It lets you define the output shape up front and then returns data in that structure, which is exactly what custom-field support should do.

This is a capability we checked per tool — whether (and how well) it supports this — so it shows a support verdict and what we found, rather than media or an input→output pair.

Worked wellacross all testslink to this finding

Supports developer-defined extraction through an Extract feature with a custom JSON schema, and returns the structure defined by that schema.

Export formatCapability check5/51 finding

It offers more than one delivery path, including the common formats people would actually use downstream.

This is a capability we checked per tool — whether (and how well) it supports this — so it shows a support verdict and what we found, rather than media or an input→output pair.

Worked wellacross all testslink to this finding

Offers multiple delivery/export formats, specifically JSON, Markdown, and Excel.

Field coverage5/53 findings

Across the tested resumes, it kept reaching the full core set of resume fields, even when the layout got harder.

Worked wellwhen we tried: Multi-column sidebar resume — Priya Sharmalink to this finding

Covers the six core resume fields on a two-column/sidebar PDF: name, email, phone, experience, education, and skills are all present in the extraction.

research-media-llama-20output-202-b0738d3697c2.txt
Loading file...
Worked wellwhen we tried: Clean single-column resume — Rugved Nichitelink to this finding

Covers the six core resume fields on a clean single-column PDF: name, email, phone, experience, education, and skills are all extracted.

Input handlingCapability check3/51 finding

It clearly accepted PDFs in the demo, but the API path was not tried, so the result is only a partial showing of the actual requirement.

This is a capability we checked per tool — whether (and how well) it supports this — so it shows a support verdict and what we found, rather than media or an input→output pair.

Mixedacross all testslink to this finding

The demo shows PDF submission being accepted and parsed in the cloud UI, but it does not test API submission, so API-level input handling remains unverified from this report.

Messy resume handling5/51 finding

It stayed stable on the messy resume and still produced a full structured result instead of breaking down.

Worked wellwhen we tried: Messy real-world resume — John Kumarlink to this finding

Continues parsing a poorly structured resume with inconsistent dates and minimal section labeling, returning a complete structured extraction instead of failing on the noise.

research-media-llama-20output-203-211c2f59deaf.txt
Loading file...
Multi-column handling5/51 finding

It handled the sidebar layout cleanly and kept both columns readable in the result.

Worked wellwhen we tried: Multi-column sidebar resume — Priya Sharmalink to this finding

Parses a two-column/sidebar layout without layout hints and still extracts content from both columns into structured output.

research-media-llama-20output-202-b0738d3697c2.txt
Loading file...
Output formatCapability check5/51 finding

It consistently delivered machine-readable JSON rather than loose text, so this criterion is fully met.

This is a capability we checked per tool — whether (and how well) it supports this — so it shows a support verdict and what we found, rather than media or an input→output pair.

Worked wellacross all testslink to this finding

Returns structured JSON output for parsed resumes.

Final Take

Extracta.ai is the overall winner because it is the only tool that tops all five decisive checks together: Accuracy 4/5, Field coverage 5/5, Messy resume handling 5/5, Multi-column handling 5/5, and Noise in output 5/5. That makes it the cleanest all-around pick for schema-driven resume extraction with consistently tidy JSON. Parseur is the closest practical alternative if you want strong handling of messy resumes and multi-column layouts, and it also keeps output noise low. The trade-off is lower Field coverage (3/5), so it is stronger on the core parsing flow than on broader structured field capture. Affinda has strong structured JSON, custom fields, and layout handling, but its low Accuracy score (2/5) and especially noisy output (1/5) keep it below the top two. HrFlow is a decent middle option for cleaner PDFs, but it drops on harder layouts and noise. CVParserPro and Skima AI both show useful structure in some areas, but their low Accuracy and/or weak output quality make them less dependable overall. Hireability is attractive if JSON/API delivery matters, but its low Field coverage, weak multi-column handling, and noisy output are major limitations. OpenResume stands out mainly for being free and browser-based, but its very low Accuracy, brittle layout handling, and lack of machine-readable export keep it from competing with the stronger parsers. Airparser and LlamaParse are both marked partly tested, so they stay below fully measured tools by policy even though their measured scores look strong in layout resilience and structured extraction. Airparser looks better balanced than LlamaParse on the recorded decisive checks, while LlamaParse is held back by lower Accuracy and weaker input handling.

Tested as of July 2026 · Will be re-verified monthly

Similar Tools

The tools we tested for this use case — each card opens its full tested review.

Built by FutureSmart AI — the team behind AI Demos

Need a custom AI solution for this use case?

If you are looking to build a custom resume parsing, resume extraction, or candidate profile JSON pipeline for your business or internal workflow, email us at contact@futuresmart.ai.

Get a custom build

Found something inaccurate or missing? We try to keep our AI research accurate and useful. If you found outdated information, an issue, or have a suggestion, email us at collaborate@aidemos.com.

Comments (0)

Please Log in to join the discussion.