Writing

Resumes, cover letters, word counts and interface copy, held to the same standard as the pixels.

All 6 writing tools

Every one runs in your browser. Nothing is uploaded and nothing is metered.

What writing tools are

Tools for text that has to work for a machine reader as well as a person: interface copy measured against the WCAG criteria that govern it, resumes and cover letters laid out so an applicant tracking system can parse them, a checker that shows what a parser extracts, and a counter and a converter that follow a platform’s own counting rule or a style guide’s own title-case list. In each case the test is mechanical, which is what separates these from general writing assistance.

Interface copy held to the same standard as the pixels. Link and button labels are an accessibility requirement, not a style preference, and they are the part of a design most often left to chance.

The same standard applied to a job application: a resume builder with sixteen templates matched to your field, a cover letter builder that draws its letterhead with the resume’s own layout code, and an ATS resume checker that shows what a parser pulls out of the PDF or Word file you send. Both builders download free as PDF and Word.

And the everyday jobs, done by a published rule: a word counter that checks each platform’s limit the way that platform counts, and a case converter that sets title case in APA, Chicago or AP style.

Link text is a WCAG requirement

Screen-reader users routinely navigate by pulling up a list of every link on a page, stripped of its surrounding sentence. A page of eleven links all reading "learn more" becomes a list of eleven identical entries. That is what WCAG 2.4.4 is about, and it is why "click here" is a failure rather than a matter of taste.

The auditor checks against 2.4.4, 2.4.9, 2.5.3, 2.4.6 and 4.1.2 — link purpose, link purpose in isolation, label in name, headings and labels, and name-role-value. It reports which criterion each finding breaches, because "this is bad copy" is an opinion and "this fails 2.4.4" is a fact someone can act on.

What makes these writing tools different

  • Every link finding names its criterion and its level

    A result arrives as "2.5.3 Label in Name, Level A" rather than as a suggestion. That is the difference between something a reviewer can argue with and something a ticket can cite.

    The rules cover 2.4.4 (A), 2.4.9 (AAA), 2.5.3 (A), 2.4.6 (AA) and 4.1.2 (A).

  • It refuses to print a readability score

    Readability formulas divide by sentence count and were fitted on continuous prose, so on a two-word label the divisor turns the output into an artefact. A grade level for a button is a number with nothing behind it, and showing one would make everything beside it less trustworthy.

    Flesch–Kincaid rates “Learn more” and “Click here” at 120.2 reading ease — above the top of the scale — and rates the far clearer “Download invoice PDF” at 62.8.

  • A resume and a cover letter drawn by the same code

    The resume builder matches sixteen templates to your field. The cover letter builder copies a saved resume’s design and details, and its letterhead is drawn by the resume’s own layout code rather than imitated, so the two read as one set. Both download free as PDF and Word, with nothing uploaded.

    A test compares the letter’s header with the resume’s op for op on all 16 templates at A4 and US Letter: 32 pairs, each identical in kind and position.

  • What a parser reads, shown on your own page

    The ATS resume checker reads a PDF or Word resume in your browser, numbers every piece of text in the order a parser takes it, lists the fields it finds and names each problem. It gives no score, because no tracking system publishes how it ranks a resume.

    Swept over the resume builder’s own PDFs (16 templates, each with all 16 example resumes), the one-column templates raise no findings and the 4 sidebar templates raise only the columns finding.

  • Counts that follow each platform’s own rule

    The word counter splits scripts written without spaces into words, and checks each platform limit the way that platform counts it, with the platform’s own page linked. A single character count shown against every limit is wrong for most of them.

    我喜欢学习中文 counts as 4 words where a space-splitting counter reports 1. A curly apostrophe is outside the GSM 7-bit alphabet, so a 100-character text containing one needs 2 messages instead of 1.

  • Title case by the style guide you follow

    The case converter sets title case in APA, Chicago and AP side by side, because the three disagree on short words, alongside sentence case and the code cases. Case changes follow the language you choose, not the settings of your computer.

    “istanbul” uppercases to “ISTANBUL” under English rules and “İSTANBUL” under Turkish ones; “straße” becomes “STRASSE” or “STRAẞE”.

How to do it

The order that works, and why each step changes the answer.

  1. Copy the markup, not the rendered text

    Open developer tools and copy the outer HTML of the region you care about. Copying what you can see throws away the aria-labels, and the aria-labels are where half the failures live.

  2. Read the link list first

    The report shows each link the way a screen reader announces it, out of context. Anything you cannot identify from that row is a 2.4.4 finding, whether or not the sentence around it made sense.

  3. Fix by naming the destination or the action

    “Download invoice PDF” rather than “Download”. The label has to survive being read on its own, because that is the state it will be read in.

  4. Start the accessible name with the visible text

    Where an aria-label is genuinely needed, begin it with the words on screen and add the rest afterwards. That satisfies 2.5.3 and keeps voice control working.

  5. Re-run the whole region

    Fixing one label often exposes a duplicate elsewhere — two different destinations now sharing a name. Check the region again rather than the line you changed.

Worked examples

Real inputs, real numbers. Pick one.

Eleven links that all say the same thing

You give it

A page where every card carries a “Learn more” link.

You get

The link list a screen-reader user navigates by becomes eleven identical rows. Each is a 2.4.4 finding, and the fix is eleven different labels rather than one better wording applied everywhere.

A button voice control cannot reach

You give it

<button aria-label="Find records">Search</button>

You get

Fails 2.5.3 Label in Name, Level A. The accessible name does not contain the visible word “Search”, so saying “click Search” does nothing. Renaming it to “Search records” satisfies both the label and the name.

The score this tool will not give you

You give it

“Click here” and “Download invoice PDF” through Flesch–Kincaid.

You get

120.2 against 62.8 — the formula rates the useless label as vastly easier reading. That is what a readability score does to interface copy, and it is why none is shown.

Which writing tool do you need?

Start from the job, not the tool name.

Interface copy is not prose

AspectdsynA general writing checker
What it measuresWCAG 2.4.4, 2.4.9, 2.5.3, 2.4.6 and 4.1.2Grammar and tone
Readability scoreRefused — the formulas are built for proseA grade level for a two-word button
OutputThe criterion each finding breaches, with its levelA subjective suggestion
InputYour markup, so accessible name and visible text can be comparedPlain text
Where it runsYour browserA server, with your copy in the request

The figures behind that

  • Screen-reader users commonly navigate by listing every link on a page stripped of its surrounding sentence, which is what WCAG 2.4.4 addresses.

  • WCAG 2.5.3 requires the accessible name to contain the visible label text — a mismatch breaks voice control even when both read well.

  • Flesch–Kincaid scores “Learn more” at 120.2 reading ease and “Download invoice PDF” at 62.8, rewarding the label that says nothing.

  • The claim that tracking systems reject 75% of resumes traces to a 2012 sales pitch with no published method; 23 of 25 US recruiters asked in 2025 said they do not set up content-based auto-rejection.

  • Every one of the 16 hand-written example cover letters runs to between 250 and 268 words and raises none of the builder’s own suggestions.

  • Chicago’s 18th edition (2024) changed its title case: “Disparities among Communities throughout the Nation” in the 17th becomes “Disparities Among Communities Throughout the Nation”.

Keep exploring