Course QualityGuide

Broken Variables and Leftover Placeholder Text: What Learners See That They Should Not

Two separate problems that reach learners when a course is published before its content pass is finished. An unresolved variable is a reference like %Name% that shows on screen literally instead of its value. Leftover placeholder text is filler or a developer note, lorem ipsum, TODO, Draft, that was never replaced with real content. They have different causes and different fixes.

Reading time
~7 min
Difficulty
All levels
Resource type
Guide
Last updated
2026-09-10

Questions answered by this guide

  • Why is %Name% showing in my published course instead of the learner's name?
  • Why is there still lorem ipsum in my course?
  • What causes an unresolved variable in Storyline or Rise?
  • What does A11yCheck's broken variable finding mean?
  • What does A11yCheck's placeholder text finding mean?
  • Could A11yCheck flag text that is actually fine?

What you'll learn

  • An unresolved variable shows as %SomethingInPercentSigns% on screen instead of the value it was meant to display
  • Leftover placeholder text is filler or a working note, lorem ipsum, TODO, FIXME, Draft, TBD, that never got replaced
  • A11yCheck flags both as separate Course Quality findings: broken_variable and placeholder_text
  • A11yCheck checks the visible text on the slide; it does not know the author's intent, so a few flags are legitimate content and safe to dismiss
  • The reliable way to catch both is a full read-through of the published course, not the authoring preview

What's inside

Instructional designers and reviewers doing a final content pass before publishing

  1. 01Two different problems
  2. 02Unresolved variables
  3. 03Leftover placeholder text
  4. 04Storyline and Rise
  5. 05How A11yCheck reviews this
  6. 06Catching both before you publish

Why it matters

Both problems tell a learner, immediately, that the course was shipped before it was finished. A slide that reads "Welcome, %FirstName%" or "[INSERT policy link here]" or a paragraph of lorem ipsum undermines trust in everything else on the screen. They are also easy to miss: a variable that resolves correctly on your machine can fail for a learner, and placeholder text blends into a busy slide. Neither is an accessibility problem, but both are the kind of visible, avoidable defect that a final review exists to catch.

When you'll encounter this

  • You have built a slide that displays a variable, a name, a score, a date, and are relying on it being set before the learner reaches that slide.
  • You started a Rise lesson from blocks that came pre-filled with placeholder text, or a Storyline slide copied from a template.
  • A course has been edited over a long period by more than one person, and working notes were added to slides as reminders.
  • A11yCheck flags a broken variable or placeholder text issue on a scan report.

Examples

Unresolved variable

✕ Incorrect

A results slide is set up to say "You scored %ScorePercent%%" but the learner sees "You scored %ScorePercent%%" literally, with the percent signs, because the variable name on the slide does not match the variable name in the project (ScorePercent vs Score_Percent).

Storyline and Rise replace a variable reference with its value only when the name matches exactly and the value has been set. A spelling mismatch, or a value that was never set on the path the learner took, leaves the raw %reference% on screen.

✓ Correct

The reference is corrected to the exact project variable name, and the slide is tested along the actual path a learner takes to reach it, confirming the value is set by then.

A matching name plus a value that is guaranteed to be set before this slide is reached is what makes the substitution happen.

Leftover placeholder text

✕ Incorrect

A Rise course ships with a Statement block still reading "Lorem ipsum dolor sit amet" and an Accordion panel reading "TODO: add the escalation steps here."

Rise adds placeholder text to every block when you insert it, and it is easy to build the structure of a lesson and forget to replace the filler in a block you meant to come back to. Working notes added during the build have the same problem.

✓ Correct

Every block is read in the published output and its placeholder or note is replaced with the real content, or the block is deleted if it is no longer needed.

A block-by-block read of the published course is the only reliable way to find filler that was never replaced.

Best practices

  • Read the whole published course, every slide and every block, not the authoring preview. Both problems can look fine in preview and fail in the published output.
  • For variables: check that every reference on a slide matches a real project variable name exactly, and test each variable-bearing slide along the actual path a learner takes to reach it, not just by jumping straight to it.
  • For placeholder text: in Rise, treat every block you added as one you still need to check; the filler is there by default. Delete blocks you are not going to use rather than leaving them filled with placeholder.
  • Search the course text for a percent sign and for the words you use in working notes (TODO, FIXME, TBD, draft) before publishing.
  • If more than one person edits the course, agree on where working notes go (a separate document, not on the slides) so they cannot ship.

Common mistakes

  • Testing a variable-bearing slide by navigating straight to it, so the variable happens to have a value, when a real learner reaches it by a path where it does not.
  • Assuming a variable that works in the authoring preview will work in the published output.
  • Building a Rise lesson's structure with placeholder blocks and publishing before every block has been filled in.
  • Leaving "TODO" or "draft" notes on slides as reminders and forgetting to remove them.
  • Treating every A11yCheck flag as a defect without checking: a slide that genuinely teaches about the percent sign, or content that legitimately uses a word like "draft", can be flagged and is safe to dismiss.

Practical checklist

  • The published course has been read end to end, every slide and every block.
  • No slide shows a raw %variable% reference to the learner.
  • Every variable reference matches a real project variable name exactly.
  • Every variable-bearing slide has been tested along the real learner path to it.
  • No lorem ipsum, TODO, FIXME, TBD, TBC, WIP, or "draft" note remains in learner-visible text.
  • In Rise, every inserted block has had its default placeholder text replaced or the block has been deleted.
  • Any A11yCheck flag that is actually legitimate content has been reviewed and dismissed with a note.

How A11yCheck reviews this

A11yCheck's Course Quality scan runs two separate checks on the visible text of each slide. The broken_variable check (Major severity) flags text matching an Articulate-style variable reference, a name wrapped in percent signs such as %FirstName%, that is still showing literally instead of a value. The placeholder_text check (Major severity) flags text matching a list of filler and developer-note patterns: lorem ipsum, TODO, FIXME, XXX, TBD, TBC, WIP, SME, Draft, "need review", "coming soon", [INSERT ...], [ADD ...], and similar. Both report the slide, the matched text, and a short label. Both work only on text that is actually visible when the scan views the slide, so a variable that resolves to an empty string, or to a wrong-but-plausible value, is not caught, and neither is placeholder text on a layer or state the scan did not reach. A11yCheck does not know what the author intended: a slide that is genuinely about the percent sign, or content that legitimately contains a word like "SME", "Draft", or "Coming soon", can be flagged, and those are safe to dismiss after a look.

Frequently asked questions

Why is %Name% showing in my published course instead of a value?

The variable reference on the slide is not being resolved. The two usual causes are a name mismatch (the reference does not exactly match the project variable's name) and a value that was never set on the path the learner took to reach that slide. Fix the name so it matches exactly, and test the slide by walking the real path to it, not by jumping straight there.

Why is there still lorem ipsum in my course?

It was almost certainly never replaced. In Rise, every block comes pre-filled with placeholder text when you add it, and it is easy to build a lesson's structure and forget a block. The fix is a block-by-block read of the published course, replacing or deleting each one.

Are broken variables and placeholder text the same thing?

No. They are two separate problems with two separate A11yCheck findings. A broken variable is a dynamic reference that failed to resolve. Placeholder text is static filler or a working note that was never replaced. Different causes, different fixes, one shared outcome: something the learner should not see.

Could A11yCheck flag text that is actually fine?

Yes, occasionally. The checks match patterns in visible text and do not know your intent. A slide teaching about the percent sign, a URL-encoded string shown on purpose, or course content that legitimately uses a word like "SME", "draft", or "coming soon" can be flagged. Look at each flag; if it is real content, dismiss it with a note.

Does A11yCheck catch a variable that resolves to the wrong value?

No. It only sees the visible text. If a variable resolves to an empty string, or to a plausible but incorrect value, the raw %reference% is not on screen, so the check has nothing to match. Testing variable-bearing slides along the real learner path is how you catch those.

Related Guides

Summary

An unresolved variable shows as %SomethingInPercentSigns% to the learner instead of its value, usually from a name mismatch or a value that was not set on the learner's path. Leftover placeholder text is filler or a working note, lorem ipsum, TODO, Draft, that was never replaced, common in Rise because every block starts pre-filled. A11yCheck flags them as two separate Course Quality findings, broken_variable and placeholder_text, based on visible text only, and it does not know the author's intent, so a few flags are legitimate content. The reliable catch for both is a full read of the published course along real learner paths.

Review your course before you publish it.

A11yCheck reviews Storyline and Rise courses for:

  • Accessibility
  • Course Quality
  • Course Engagement
Start a free review →

www.a11ycheck-dev.com