Your resume gets read twice. Once by software, once by a person. The software reads it first, and the software is not impressed by your two-column layout, your skills donut chart, or the tasteful gray sidebar you spent forty minutes aligning. It reads bytes. It looks for fields. And when it can't find them, it guesses, and a guess is exactly the thing you don't want standing between you and an interview.
So the real question isn't "which template looks best." It's "which format survives the parse." Those are very different questions, and most resume advice answers the wrong one. The widely cited industry figure is that nearly 99% of Fortune 500 companies run an applicant tracking system, and roughly 70% of large companies and 75% of recruiters use an ATS or similar recruiting tool. Treat those as directional, not gospel: they come from secondary compilations, not audited census data. But the direction is clear. If you're applying to a big employer, software touches your resume before a human ever does.
The best resume format for AI screening is clean, structured, machine-readable data: real section headers, plain text, and predictable fields a parser can extract without guessing.
What AI screening tools actually do with your file
Here's the part the advice articles skip. An ATS does not "read" your resume the way you do. It runs a parser, which is a piece of code whose entire job is to turn a messy document into a tidy database row. Name here. Email there. Work history as a repeating list. Skills as a set. Education as another list. The parse either works or it doesn't, and you never find out which.
Names you'll meet in the wild: Workday, Taleo, iCIMS, Greenhouse, Lever, and Ashby. They're not all the same software, and they don't all parse identically. That matters more than people admit, because a layout that sails through Greenhouse can stumble in Workday. There's no single benchmark in the public record that ranks them apples-to-apples, so anyone promising "this beats Workday's parser" is guessing too.
Once your file is parsed into fields, the modern stack does something with those fields. Per Lever's 2026 framing of its 2025 recruiter reporting, AI and automation are now table stakes inside the ATS: candidate matching and ranking, interview transcription and summarization, predictive analytics. The data also points one direction on adoption. Bullhorn, citing the 2026 GRID Industry Trends Report, says 78% of staffing firms growing revenue by more than 25% have AI tools embedded in their ATS. That's a specific number for fast-growing staffing firms, not all employers, so don't stretch it.
The key word in all of that is matching, not rejecting. A 2025 recruiter sample found 92% of ATS users said their system does not auto-reject based on resume content. It's a small vendor-published interview sample, not a population rate, so hold it loosely. But it kills the myth that a robot is hitting a red "DENY" button. The real risk is quieter. If the parse drops your fields, you get ranked low, and low-ranked candidates simply don't get surfaced.
The four stages every parse moves through
It helps to see the pipeline as stages, because each stage is a place your resume can break. First, text extraction: the engine pulls raw characters out of the file. A scanned image or a flattened PDF has no extractable text here, so the parse is dead on arrival. Second, segmentation: the parser splits that text into blocks it believes are sections, using your headers as the cut lines. Third, field mapping: each block gets assigned to a database concept, so "Experience" becomes the work array and the dates inside it become start and end values. Fourth, normalization: dates get standardized, job titles get matched against a known taxonomy, skills get deduplicated.
The thing to notice is that stages two and three are pure inference. Nothing in a PDF says "this paragraph is a job title." The parser decides that, based on position, font weight, and proximity to a recognized header. Change the layout and you change the inference. That's why the same facts score differently in different systems: each engine runs its own guesswork at stages two and three, and there's no shared answer key.
The formats that quietly fail
Failure here is rarely loud. There's no bounce email. You just go into a pile nobody opens. The formats most likely to land you there share a trait: they make a parser guess.
- Multi-column layouts. A parser reads in a flow. Two columns can interleave: your job title from the left column gets stitched to a skill from the right, and now your "experience" reads like word salad.
- Tables and text boxes. Content trapped in a table cell or a floating text box often gets read out of order or skipped. ResumeAdapter's vendor data attributes 23% of parsing failures to tables, columns, and graphics. Treat that figure as an unverified vendor estimate, not a settled fact, but the mechanism is real.
- Graphics, icons, and logos. A phone icon next to your number means nothing to a parser. Worse, decorative SVG and images can confuse the section it's trying to detect.
- Skills shown as charts or bars. "Python: 90%" rendered as a progress bar is, to a parser, a picture. It extracts nothing.
- Headers and footers. Some parsers ignore the page header entirely. Put your email there and it can vanish.
- Creative section names. "Where I've Made Magic" instead of "Experience." The parser is matching against expected labels. Get cute and you lose the match.
The same vendor source calls plain DOCX the safest format, with a 4% failure rate, again unverified, again directionally sensible. What's genuinely supported across the sources is the boring conclusion: tables, text boxes, multi-column layouts, and graphics raise the risk of misreading or losing structure. The fancier the document, the more the parser has to guess.
And no, there's no clean public study crowning DOCX over PDF across every major engine. Anyone who tells you "always PDF" or "never PDF" with certainty is selling something. The honest answer is system-specific, which is exactly the problem we'll come back to.
A worked example: the same job, parsed two ways
Picture one line of experience: a designer named Ashley who led a design system rollout at a company called Northwind Labs, from January 2022 to March 2024. In a two-column template, that title sits in a narrow left rail and the dates float in a right-aligned box. Here's roughly what a flow-based parser extracts when the columns interleave:
position: "Senior Product Designer Figma Prototyping" company: "" startDate: null endDate: "March 2024 Berlin"
The title got fused with skills from the adjacent column. The company name landed nowhere. The start date evaporated, and the end date swallowed a location. None of that is malice. The parser read top to bottom across a layout that wasn't built to be read that way, and stage three mapped the fragments into the wrong fields. Now compare the same facts in a single-column, plain-text resume with a standard "Experience" header:
position: "Senior Product Designer" company: "Northwind Labs" startDate: "2022-01" endDate: "2024-03"
Same person, same job, same truth. One layout fed the parser clean cuts. The other handed it a riddle. And here's the kicker: Ashley never saw either output. She submitted a document and hoped. That hope is the entire weakness, and it's the thing structured data removes.
What AI screening tools reward
Strip away the noise and parsers reward predictability. They want a document shaped like the database they're trying to fill.
- Standard section headers. "Experience," "Education," "Skills." Plain words a label-matcher recognizes instantly.
- One column, top to bottom. Reading order matches visual order. No interleaving.
- Real text, not images of text. If you can't select it with your cursor, the parser can't read it either.
- Consistent dates. "Jan 2022 to Mar 2024" beats "Spring '22 til last year." Date logic is where parsers stumble most.
- Skills as a plain list. Comma-separated or bulleted. No bars, no stars, no radar charts.
- Contact details in the body. Name, email, phone in the main text flow, not stranded in a header graphic.
Do all of that and you've built an ATS-friendly resume. It'll parse cleanly into most engines most of the time. That's genuinely worth doing, and it's the right advice for the world we live in right now.
But notice what you just did. You spent effort making a visual document less visual so a machine could read it. You stripped your own design back toward a spreadsheet. And here's the uncomfortable bit: you did all that work, and you still don't know if it parsed correctly, because the parser never tells you.
The dates trap, in detail
Dates deserve their own paragraph because they break more silently than anything else. A parser has to do two jobs with a date: recognize it as a date at all, then decide whether it's a start or an end. Ranges written with an en dash glyph, a slash, the word "to," or "Present" all get handled differently across engines, and "Present" in particular trips normalization because it isn't a date, it's a placeholder for "now." Write "2019 to 2021" with no months and a system that wants month precision will pad it with a default that may put your tenure off by up to a year. Worse, an out-of-order block like "Mar 2024, Jan 2022" can flip the parser's start and end logic, turning a two-year role into something that looks like time travel. The safe move is dull on purpose: month and year, consistent separator, oldest to newest inside each entry, the word "Present" spelled out for current roles.
The deeper problem: you're feeding it a guess every time
Step back and look at the whole pipeline. You hold structured information in your head: where you worked, what dates, what title, which skills. You flatten that into a visual document, a PDF or a DOCX. You upload that document to an employer. Their parser tries to reconstruct the structure you started with, by reverse-engineering it out of your layout.
Read that again. You had clean structure. You destroyed it on purpose to make it look nice. Then a robot tries to rebuild the structure you threw away. Every parse is a fresh guess at data that was perfectly structured before you turned it into a page.
A PDF is a picture of your data. Structured data is the data. AI screeners want the data, and right now you're handing them a photo of it and hoping they squint correctly.
This is why two identical-feeling resumes can score differently across two employers. Same facts, same person, different parsers, different guesses. You're not really applying with your experience. You're applying with one parser's best interpretation of a layout, and you get a different interpretation everywhere you apply. That's not a formatting bug. That's the whole approach being upside down.
The fix isn't a better template. It's removing the guess entirely. Hand the machine the structured data directly and there's nothing left to reverse-engineer.
Where hiring is actually heading: structured data
Recruiting software already wants structured fields. That's the entire point of the parse: it's the system trying, and frequently failing, to convert your document into clean data. So the obvious move is to skip the document and give it clean data in the first place.
This isn't a new idea, it's just been fragmented. A few standards have circled this space for years:
- JSON Resume (jsonresume.org): a community-driven open schema that describes a resume as a JSON object. Well-designed, genuinely open. Real-world employer adoption is limited and not well measured, but the schema itself is solid.
- Europass: a European Commission-supported CV and profile format. Useful in parts of Europe, not a dominant global interchange standard for hiring systems.
- HR-Open Standards LER-RS: an interoperability standard for learning and employment records. Emerging and specialized, not a mass-market resume format.
- schema.org: structured-data markup that helps with discoverability and parsing assistance. Useful for search engines reading a page, not a canonical applicant-data format.
- HR-XML: historically important for HR interoperability, but current public evidence doesn't show it as a mainstream resume standard in 2025 and 2026.
The honest bottom line from the available evidence: there's no single dominant open resume-data standard in broad ATS use today. The market is fragmented and system-specific. But the direction of travel is unmistakable. AI screeners want structured fields, parsers exist only to manufacture those fields, and the friction everyone's fighting is the gap between a visual document and the data underneath it.
So the smart format for AI screening isn't a prettier file. It's a file that's already structured, already machine-readable, sitting at a stable address a machine can fetch and read without parsing anything.
cv.json: a format built for the machines that screen you
This is what cv.json is for. It's an open standard, MIT-licensed, from FreeCV. The idea is almost rude in its simplicity: your resume is one JSON file at a stable URL, like livelink.cv/ashley/cv.json. Not a picture of your data. The data.
A parser doesn't have to guess at columns or detect section headers, because the structure is the file. Here's the shape:
{
"basics": {
"name": "Ashley Carter",
"label": "Senior Product Designer",
"email": "hidden-by-default",
"location": { "city": "Berlin", "countryCode": "DE" }
},
"work": [
{
"name": "Northwind Labs",
"position": "Senior Product Designer",
"startDate": "2022-01",
"endDate": "2024-03",
"highlights": ["Led design system adoption across 6 teams"]
}
],
"skills": [
{ "name": "Design", "keywords": ["Figma", "Prototyping", "Design systems"] }
],
"meta": { "version": "1.2", "canonical": "https://livelink.cv/ashley/cv.json" }
}
No reading order to infer. No header to skip. The startDate is a date because the field says so, not because a parser hopefully matched a pattern. The full standard covers basics, work, education, skills, projects, languages, certificates, an availability block, and meta. Only basics and meta are required, so a minimal valid file is tiny. The current version is 1.2.
How a machine finds it
A document only helps if the screener has it. A cv.json file announces itself in three ways, so an AI recruiter or crawler can discover it without you uploading anything:
- A
<link rel="alternate">tag in your portfolio page's HTML, pointing at the JSON. - A
/.well-known/cv.jsonmanifest, the same convention sites use for other machine-readable metadata. - An
X-CV-VersionHTTP header so a client knows the version before it even parses.
It also serves with open CORS, so any tool is allowed to fetch it from the browser. And contact details are hidden by default. You decide when your email goes public, which matters when a stable URL is, by design, easy for anyone to find.
The availability block, which a document can't really do
This is the part that pushes past what a PDF can express. The availability object is structured intent: are you open to work, which roles, what work type, visa status. An AI screener can filter on it directly.
{
"availability": {
"openToWork": true,
"roles": ["Product Designer", "Design Lead"],
"workType": ["remote", "hybrid"],
"visa": "EU work authorization"
}
}
Try expressing "open to remote design-lead roles, EU-authorized" in a PDF such that a machine can query it cleanly. You can't, really. You can write the words, and then a parser has to extract and interpret them, and you're back to guessing. As a structured field, it's just a value to filter on.
You don't have to abandon JSON Resume
cv.json is field-compatible with JSON Resume. The basics, work, education, and skills shapes line up, so if you already have a JSON Resume file you're most of the way there. cv.json adds the discovery mechanics, the availability block, the privacy defaults, and a stable canonical URL. Think of it as JSON Resume's structure plus the plumbing that makes a machine able to find and trust the file.
One honest caveat, the same one that applies to every standard above: don't expect a named ATS vendor to already ingest cv.json today. It's designed for AI recruiters and screening systems to read, and it's built for where hiring is heading, not a claim about what Workday or Taleo parse this quarter. The point is to be ready, and to hand the machine clean data the day it asks for it.
Common mistakes that quietly tank your parse
Most parse failures aren't exotic. They're the same handful of habits, repeated across millions of resumes. Run your document against this list before you submit it anywhere:
- Putting contact details in the page header. Some engines never read the header region. Your email belongs in the first lines of the body.
- Using a two-column template because it looks tidy. Tidy to your eye, scrambled to the parser. Collapse to one column for any version you upload.
- Saving a "designed" PDF that's really an image. If you export from a graphics tool and the text isn't selectable, the parser extracts nothing at stage one.
- Renaming sections to sound clever. "My Journey" is not "Experience" to a label-matcher. Keep the boring words.
- Burying skills inside paragraphs. A skills section as a plain list is found instantly; the same words scattered through prose may never get tagged as skills.
- Inconsistent date formats across entries. Mixing "2021" with "Jan 2022 to Present" forces the normalizer to guess, and guesses misorder your timeline.
- Relying on one file for every system. There's no universal best, so verify per pipeline where you can, and keep a structured source that doesn't depend on any single parser.
A quick self-check before you hit submit
You can test most of this yourself in under a minute. Open your PDF, press select-all, and copy it into a plain-text editor. If the result comes out in the wrong order, loses your dates, or drops whole sections, that's roughly what the parser sees too. If chunks come out as blanks, you've got images of text, not text. This won't replicate any specific vendor exactly, but it catches the obvious breakage before an employer's system does.
A practical play for 2026
You don't have to pick one format and burn the others. The pragmatic move covers both the world we're in and the one arriving.
- Keep an ATS-friendly document for upload forms: one column, plain text, standard headers, no tables, no charts. This handles the parse-based pipelines that still dominate.
- Publish a cv.json at a stable URL as your canonical, machine-readable source. This is the version with no guessing in it.
- Link the two: put your cv.json URL on your portfolio and in your profiles, so any AI tool that supports discovery can fetch the structured version instead of re-parsing a document.
- Keep the availability block current. It's the field a screener can act on without any interpretation, and it costs you thirty seconds to update.
That's the whole strategy. Document for the legacy pipe, structured data for the future one, and a link so the smarter systems can skip the guessing entirely.
The best resume format for AI screening was never going to be a font choice or a margin width. It's whether the machine has to guess at your data or simply read it. A clean document keeps the guessing manageable. Structured data removes it. If you want to stop hoping a parser interprets you correctly and start handing screeners the actual facts, you can build a cv.json for free at freecv.org/builder, publish it at a stable URL, and let the machines read the data instead of a picture of it.
