Prompt Template Variable Checker

Choose your placeholder syntax, paste the template and provide its variables. The preview substitutes text without executing expressions or calling a model.

Runs locally in your browser
Templates and variables stay in this browser. Placeholder values are inserted as text and are never evaluated.
Prompt template
Variables JSON object

Treat prompt templates like typed interfaces

Review required fields before a prompt enters an application or evaluation set. The renderer performs literal substitution only: it does not run JavaScript, expressions, filters or remote template engines.

How to check placeholders and render a prompt

Paste a prompt template, choose the placeholder style, and this page lists every placeholder it finds, flags the ones your JSON variables object cannot fill, names the variables you never use, and renders the final text.

Substitution is literal text replacement: values are inserted as strings, no JavaScript, filter or template engine runs, and template plus variables never leave the browser.

  1. Paste the prompt into the template box, choose Mustache {{name}}, Dollar ${name} or Single brace {name}, and paste a JSON object of values into the variables box.
  2. Press Check & render, or press Load example to see a filled-in prompt with one deliberately unused variable.
  3. Read the rendered prompt on the right: placeholders that have a value are replaced, and the rest stay visible as written.
  4. Check the three chip lists: Detected shows each placeholder and how often it appears, Missing lists unresolved names, Unused lists values in the JSON that no placeholder refers to.
  5. Use Copy to take the rendered text, and Clear to reset the template, the variables, the output, the chips and the counters.

What is detected, how values are inserted, and where the tool stops

What counts as a placeholder

Names may contain letters and digits in any script, underscore, dollar sign and hyphens, and a dot walks into nested objects, so {{document.title}}, {{user-name}} and {{名前}} are all detected. Repeated use of the same placeholder is counted once in the variable list and shown with a ×count marker.

A variable is reported as unused when no placeholder mentions it or a parent path of it, so filling in document.title but never writing {{document.title}} leaves the entry in the unused list.

How values are inserted

Strings are inserted as written. Numbers, booleans and null keep their JSON form, and objects or arrays are inlined as compact JSON, so {{doc}} renders {"k":[1,2]}. A placeholder with no matching value is left untouched in the preview and reported under Missing instead of being silently dropped.

The variables box must be a JSON object: a malformed document or a top-level array stops the run with an error, and an empty template shows a warning rather than a rendered result.

Limits and privacy

This is a checker, not a template engine: there are no sections, loops, partials or expressions, so {{#items}}, filters and arithmetic are treated as plain text. In Single brace mode a {{name}} inside the template is deliberately ignored so a Mustache prompt is not double-counted.

Both boxes are processed in the page. Rendering, copying and clearing issue no network requests, and a template with thousands of placeholders renders in about a second without sending anything to a server.

Recent tools: