All checks
Content & UXhighunrendered-template-variablechecked on every page we scan

Unrendered template variable on the page

This page shows template syntax where a real value should have been substituted, so a visitor reads the placeholder instead of the content.

Why it matters

This page shows template syntax where a real value should have been substituted, so a visitor reads the placeholder instead of the content. It means the template never ran, or ran without the data it needed — whatever that variable was supposed to say is missing from the page entirely, and the page reads as broken to everyone who lands on it.

How ShipReady detects it

Six page-readable Content & UX rules. Genuinely per-page: a polished homepage routinely hides a /pricing that still shows `{{plan_name}}` and a /terms governed by the laws of `[Your State]`. Reads only already-fetched HTML. Detection is uniform across all six: match a maintained pattern corpus against the page's READABLE TEXT — markup stripped, scripts stripped, and `<code>`/`<pre>`/`<kbd>`/`<samp>` stripped first — never against raw HTML. A minified bundle contains the very strings these rules look for, and a docs page legitimately displays them inside a code sample; matching source rather than prose would fire on both. Pages the crawler labelled Docs or Content are skipped entirely by the two artifact rules, because quoting an artifact is what those pages are for.

Detection is deterministic. ShipReady reports this only when it observes the condition directly, and prefers to miss a real problem over inventing one. Rule version 1.0.0.

How to fix it

This is the prompt ShipReady puts in your report — written to be pasted straight into Cursor, Claude Code, or whichever assistant built the app.

Your live page is showing template syntax instead of a value — a visitor reads the placeholder itself where the real text should be. Find the literal token in the evidence in your templates or components and work out why it was never substituted: the usual causes are a template rendered as a plain string rather than through the template engine, a variable that was never passed into the render context, or copy pasted out of a design tool with its placeholders intact. Fix the substitution rather than deleting the token — the value it was meant to show is currently missing from the page entirely. Then search the whole project for the same delimiters ({{ }}, {% %}, ${ }, <%= %>) in files that ship to the browser, because this almost never happens on only one page.

Frequently asked questions

What does "Unrendered template variable on the page" mean?
This page shows template syntax where a real value should have been substituted, so a visitor reads the placeholder instead of the content.
How serious is it?
ShipReady rates this high. Fix before launch. A real weakness that an attacker can act on.
How do I fix it?
Paste the fix prompt on this page into Cursor, Claude Code or your AI editor. It is the same prompt ShipReady puts in your report.
Can I check my own site?
Yes — ShipReady scans up to ten pages of any public site for free and reports this alongside every other check. The free report lists every issue it finds and shows full evidence and a fix prompt for the critical and high-severity ones; medium and low findings are counted and unlock on Pro.

Related checks

Run this check on your site

ShipReady checks this and 193 other things across up to ten pages of your site, with an AI-ready fix for each. Free, no signup.