Does the white-text keyword trick work? We tested it
We hid twelve keywords in white text on a resume and extracted the PDF. All twelve came out as plain text, and the top-of-page version was read before the candidate's name. The method, the results, and what to do instead.
Last reviewed
The short answer
The trick goes like this: copy the job description, or a list of its keywords, into your resume in white text on a white background. A human sees nothing. The applicant tracking system, which reads text rather than looking at the page, sees a perfect match.
Most pages about it say it does not work and stop there. We wanted to know what actually happens to the hidden text, so we built it and looked.
What we did
- 1
One resume, six versions
Our sample resume for a backend engineer, rendered in the “classic” template through the same pipeline that prints every PDF we sell. One clean copy, plus five with the same 12 keywords hidden a different way. - 2
Keywords it never uses
Cassandra, Ansible, Hadoop, GraphQL, Snowflake, Airflow, RabbitMQ, Datadog, Spark, Flink, Elasticsearch, Kotlin — none of them appear anywhere in the clean resume, so every one that turns up afterwards came from the hidden block. - 3
Extracted the text back out
With pdf.js (pdfjs-dist), the engine Firefox uses to display PDFs, reading the text layer the way a parser does. - 4
Compared every page, pixel for pixel
Each version was rasterized and compared byte for byte against the clean one, to answer the other half: could a person reading the page tell?
What happened
- No hidden text0 / 12
- White text at the bottom12 / 12
- White text at the top12 / 12
- White text at 1px12 / 12
- Transparent text (opacity 0)0 / 12
- Hidden with display: none0 / 12
| Version | Keywords extracted | Page looks different | Read before your name |
|---|---|---|---|
| No hidden text | 0 of 12 | No | No |
| White text at the bottom | 12 of 12 | No | No |
| White text at the top | 12 of 12 | Yes | Yes |
| White text at 1px | 12 of 12 | No | No |
| Transparent text (opacity 0) | 0 of 12 | No | No |
| Hidden with display: none | 0 of 12 | No | No |
Three findings, in order of how much they matter.
1. White text is ordinary text to a parser
Colour is paint. The text layer of a PDF holds the characters and where they sit; it does not care what colour they were drawn in. White text at normal size gave up 12 of 12 keywords. Shrunk to one pixel it still gave up 12 of 12. In the extracted text there was nothing left to show that any of it had been hidden — the words sit in the stream looking exactly like the rest of your resume.
That is the whole problem. Most applicant tracking systems keep a text or parsed copy of every resume, and that copy is what a recruiter often reads first, what their search runs against, and what gets pasted into the notes. Your hidden paragraph is not hidden there. It is a block of job-ad vocabulary that nothing else on your resume backs up.
2. Put it at the top and it arrives before you do
Some versions of the trick say to put the block at the top, so it is “read first”. It is. Here is how that version starts, as a parser receives it:
White-text-at-the-top version · the first characters extracted
Cassandra Ansible Hadoop GraphQL Snowflake Airflow RabbitMQ Datadog Spark Flink Elasticsearch Kotlin
Priya Raghunathan Senior Backend Engineer priya.raghunathan…
It also broke the thing the trick depends on. The block still takes up room on the page, so the visible resume shifted down to make space for text nobody can see — in our pixel check this was the only version where the page looked different from the clean one. A blank band above your name is exactly what a careful reader notices.
3. The ways that actually hide text also delete it
Making the text fully transparent, or hiding it with display: none, did keep it off the page. It also kept it out of the PDF entirely: 0 of 12 keywords extracted. Chromium does not write text nobody can see into the file, so there is nothing for a parser to find.
12/12
white keywords a parser read
0/12
transparent keywords a parser read
1
version a person could spot on the page
Why it fails even when the keywords “match”
Suppose an ATS does rank you higher for it. What does that buy? A recruiter opens your resume because it matched “Snowflake”, and finds no Snowflake anywhere they can read. The best case is that they move on. The worst case is that they read the parsed text, find the block, and now know something about how you handle a rule you think nobody is checking.
- A match is not an interview. Ranking is decision support for a person. That person reads the page, and the page has none of the evidence the ranking promised.
- Select-all shows it. Anyone who presses Ctrl+A in a PDF viewer, or pastes your resume into a document, sees the whole block highlighted.
- Screening that reads for meaning ignores it. Tools that weigh where a skill appears and what it is attached to get nothing from a list of nouns with no bullet under any of them.
What to do instead
Everything the trick is trying to achieve has an honest version that works better, because it also works on the human.
- Use the posting’s words for things you really did. If you used Selenium and wrote “automated tests”, write Selenium. That is tailoring, and it takes fifteen minutes.
- Put the skill in a bullet, not only in a list. A term attached to something you built is the claim a recruiter believes. See where keywords actually come from.
- Leave out what you have not done. Missing two of eight requirements is normal. Claiming them is what gets found out — in the interview, not the ATS.
If you want to see what a parser reads from your own file — hidden text included — our free checker extracts it and scores it. It shows the text a machine pulled out, in the order it pulled it, so a hidden block has nowhere to hide.
Common questions
- Does white text on a resume work?
- No. White text is ordinary text in a PDF's text layer, so any parser extracts it along with everything else. In our test all twelve hidden keywords came out, which means the recruiter reading the parsed copy of your resume sees the block too.
- Can an ATS read white text?
- Yes. Colour is not stored in the text a parser reads. White text at normal size and at one pixel both extracted in full in our test. Only fully transparent or display:none text stayed out, because Chromium never wrote it into the PDF at all.
- Is keyword stuffing bad for a resume?
- It trades a possible search match for a recruiter who opens your resume and finds none of the evidence the match promised. Use the posting's words for work you really did, inside bullets, instead.