Skip to content
ATSPrep
Build my resume

Arabic and Hebrew resumes: what ATS text extraction gets back

We exported Arabic and Hebrew resume lines to PDF and DOCX and read them back. Word order, dates, phone numbers and lam-alef broke in PDF. DOCX did not.

From What we tested
In this guide

A right-to-left resume can look perfect on screen and still reach a parser in the wrong order. We wrote 14 resume lines in Arabic and Hebrew into PDF and DOCX files and read them back with three PDF text extractors. The DOCX came back exactly, 14 lines of 14. The PDFs did not: words moved, dates and phone numbers flipped, and one common Arabic letter pair never came back right from any PDF.

The short version

  • DOCX kept every line in the right order: 14 of 14 exact. It stores text in reading order, not drawing order.
  • In PDF, lines in one script came back intact in 16 of 18 reads. Lines mixing Arabic or Hebrew with Latin words or numbers: 8 of 60.
  • No PDF reader returned the lam-alef in “معلومات الاتصال” correctly, from either PDF.
  • Year ranges and phone numbers came back reversed or out of order in several reads, even when the words around them were right.

What we tested

We wrote 14 lines a bilingual resume might contain: nine in Arabic, four in Hebrew and one English line with an Arabic name inside it. They include headings, a job title, skills written in English inside an Arabic sentence, year ranges, a phone number, an email address and a percentage. Each line is set in Arial.

Each set went through two common ways of making a PDF: Chromium's print to PDF, the engine behind Chrome's Save as PDF, and LibreOffice Writer's PDF export from a DOCX. We also kept the DOCX itself, and made a third PDF by deleting the ToUnicode maps from the Chromium file. Then three PDF readers read each file back: pdf.js, Poppler's pdftotext and MuPDF.

A line counts as exact only when every character comes back in the order it was written. Text that is correct but wrapped in invisible direction marks is counted separately. Anything else is a change.

Keep in mind

Producers: chromium@153.0.8010.12 (through playwright@1.63.0) and LibreOffice 26.8.1.1. Readers: pdfjs-dist@6.3.289, pdftotext from poppler@26.10.0, and mupdf@1.28.5. These are three open-source text extractors, one of them the library ATSPrep's own X-ray uses. Employer systems license their own parsers, which are not public and may behave differently. The results show what these files give back to these readers, not how any particular employer screens.

Produced by → read byExactExact inside direction marksChanged
Chromium print to PDF → pdf.js1013
Chromium print to PDF → pdftotext0311
Chromium print to PDF → MuPDF4010
LibreOffice Writer PDF → pdf.js1004
LibreOffice Writer PDF → pdftotext0311
LibreOffice Writer PDF → MuPDF3011
Chromium PDF, ToUnicode removed → pdf.js0014
Chromium PDF, ToUnicode removed → pdftotext0014
Chromium PDF, ToUnicode removed → MuPDF0014
LibreOffice Writer DOCX → document XML1400
Lines out of 14 that each producer and reader pair returned exactly, exactly but inside invisible direction marks, or changed. The DOCX row reads the document's own XML.

Why the file format matters: reading order and drawing order

Unicode stores right-to-left text in logical order: the order it is typed and read. The Unicode Bidirectional Algorithm (UAX #9) is what turns that into the order it is drawn on screen, right to left for Arabic and Hebrew and left to right for any English words or numbers inside them.

A DOCX keeps the logical order. Our 13 right-to-left paragraphs were stored as plain text in reading order, each flagged as right-to-left, and reading the XML back gave all 14 lines exactly.

A PDF keeps neither order as such. It stores glyphs and the positions to draw them at. A reader rebuilds lines from those positions and decides for itself which way each run reads. The two PDF producers stored the same lines differently, and the three readers rebuilt them differently, which is why the rows in the table above disagree so much.

The clearest gap is pdf.js. On the LibreOffice PDF it returned 10 of 14 lines exactly. On the Chromium PDF it returned 1. Same text, same font, same reader.

Mixed lines: English words and numbers move

Lines in a single script mostly survived. Across the six PDF reads, the three pure lines without lam-alef came back intact 16 times out of 18 (89%). The mixed lines came back intact 8 times out of 60 (13%).

The usual failure is that the English or numeric run moves to the front of the line. In the line below, the skills Python and SQL end the Arabic sentence. Two readers of the Chromium PDF put them first, and pdftotext kept the order but wrapped each run in invisible direction marks.

Keep in mind

The figure numbers the words because a browser applies the bidirectional algorithm again when it displays text. A reversed line can look correct on screen while the stored order, which is what search and keyword matching use, is wrong.

  1. 011خبرة2خمس3سنوات4في5Python6و7SQL
  2. 021SQL2وPython3خبرة4خمس5سنوات6في
  3. 031<U+202B>خبرة2خمس3سنوات4في5<U+202A>6Python<U+202C>و7<U+202A>SQL<U+202C><U+202C>
  4. 041خبرة2خمس3سنوات4في5Python6و7SQL
The same line, word by word, in the order it came back. Line 1 is the source. Lines 2 and 3 are MuPDF and pdftotext reading the Chromium PDF; line 4 is pdf.js reading the LibreOffice PDF. Invisible characters are written out as <U+…>.

Dates and phone numbers

Year ranges came back reversed in several reads. “شركة النخيل للتقنية، 2019 – 2023” came back from the Chromium PDF with the years as “2023 – 2019” in every reader. Arabic-Indic digits fared worse: MuPDF reversed the digits inside each year.

Phone numbers split into their groups, and the groups came back in reverse order. A parser that looks for a phone number pattern may still find one, but not the right one.

  1. 011شركة2النخيل3للتقنية،420195–62023
  2. 02120232–320194،شركة5النخيل6للتقنية
  3. 031الرياض،2٢٠٢١3–4٢٠٢٤
  4. 041٤٢٠٢2–3١٢٠٢4،الرياض
  5. 051الهاتف:2+971350412354567
  6. 061<U+202B>الهاتف<U+202A>456721233504971+5:<U+202C><U+202C>
  7. 071טלפון:2050-123-4567
  8. 081050-123-45672:טלפון
Odd lines are the source. Even lines are what a reader returned from the Chromium PDF: MuPDF for lines 2, 4 and 8, pdftotext for line 6.

Lam-alef and Arabic letter forms

Arabic letters change shape depending on their neighbours, and lam followed by alef is drawn as a single combined glyph. To get text back, a PDF reader needs a map from each glyph to the characters it stands for. The PDF format provides one, the ToUnicode map, and the specification says it is what a reader should use to extract text.

None of the six PDF reads returned the three lines containing lam-alef correctly. “معلومات الاتصال” came back as “معلومات االتصال”, with the pair reversed, or as “معلومات التصال”, with the alef missing. A search for the word as written would not match either.

pdf.js on the Chromium PDF had a second problem. In 10 of 10 Arabic lines it returned Arabic presentation forms: the separate Unicode characters for initial, medial and final letter shapes, kept for compatibility with old encodings. They look the same on screen but are different characters from the ones you typed, so a keyword search for an Arabic job title will not find them.

  1. 011الملخص2المهني
  2. 021ﻲﻧﮭﻣﻟص2اﺧﻠﻣﻟا
Line 1 is the source. Line 2 is what pdf.js returned from the Chromium PDF: the letters run in reverse and are built from presentation-form characters.

Invisible direction marks

pdftotext kept the word order of single-script lines, but wrapped every right-to-left line in invisible Unicode direction controls: U+202B (right-to-left embedding) at the start and U+202C (pop) at the end. On the Chromium file, three lines came back correct apart from those marks.

The marks do not show when the text is displayed. They are still characters, so software that compares strings without removing them sees a different word. In mixed lines, pdftotext also put the numbers inside the marks in drawing order.

When the PDF has no text map

With the ToUnicode maps removed from the Chromium file, no reader returned a single line of the 14 intact. This is the same failure that affects any language, covered in our post on dashes, ligatures and smart quotes. For Arabic it is total: the shaped glyphs have no other route back to text.

What to do with a right-to-left resume

These steps follow from the results above. None of them guarantees how a particular employer's parser behaves, but each removes a failure we saw.

  • Send DOCX when the application accepts it. It returned all 14 lines exactly, because it stores reading order instead of drawing order.
  • If you must send PDF, check its text before you apply. Copy a mixed line from the PDF and paste it into a plain text editor; if English words or numbers jump to the other end of the line, a parser may see the same.
  • Where you can, keep English terms, email addresses and phone numbers out of Arabic or Hebrew sentences. Mixed lines failed far more often than single-script ones.
  • If the job is advertised in English, an English resume avoids the problem entirely. Many bilingual applicants keep both versions.
Keep in mind

ATSPrep's X-ray reads your PDF with pdf.js and puts mostly Arabic or Hebrew rows back into right-to-left order before showing them, so what it shows is the text, not the drawing order. ATSPrep also has an Arabic interface at atsprep.com/ar.

Common questions

Can an ATS read an Arabic or Hebrew resume?

It depends on the file and the parser. In our test, a DOCX returned all 14 Arabic and Hebrew lines exactly. PDFs returned single-script lines intact most of the time, but lines that mixed in English words or numbers came back in the wrong order in 52 of 60 reads.

Should I send an Arabic resume as PDF or DOCX?

DOCX, if the employer's form accepts it. A DOCX stores text in reading order. A PDF stores glyph positions, and the reader has to rebuild the order, which is where Arabic and Hebrew lines went wrong in our test.

Why are the words in my Arabic resume reversed after upload?

The PDF stores where each glyph is drawn, not the order the words are read. Some readers rebuild the line left to right and return the words in reverse, especially when the PDF came from a browser's print to PDF.

Why do dates and phone numbers flip in a right-to-left resume?

Numbers run left to right inside a right-to-left line. When a reader rebuilds the line from glyph positions it can return the year range or the phone number groups in reverse, which is what several readers did in our test.

How do I check what an ATS reads from my Arabic resume?

Copy a few lines from the PDF into a plain text editor and compare them with what you wrote, or open the file in a free ATS checker that shows the extracted text. Check lines that mix English words and numbers first.

Check what your right-to-left resume gives back. Free, in your browser.

Sources and further reading

  1. UAX #9: Unicode Bidirectional Algorithm, Unicode Consortium
  2. Arabic Presentation Forms-B (FE70–FEFF), Unicode Consortium
  3. PDF 32000-1:2008, section 9.10: Extraction of text content, Adobe / ISO
  4. PDF.js, Mozilla
  5. Poppler (pdftotext), freedesktop.org
  6. MuPDF, Artifex
  7. LibreOffice, The Document Foundation

Put it into practice on a real resume.

Each example is a complete resume with role keywords and bullets that show proof. Open one in the Studio and make it yours, then download it. The first download needs no account.

See what your resume gives back before you send it.

Drop in your PDF and ATSPrep reads it with a real text extractor, right in your browser. You see the text a parser pulls from your file, in order. Your first check needs no account. No upload, no mystery score.

$0 forever · No watermark · No card · First download needs no account