Template Renderer

Paste a Handlebars / Mustache template and JSON data, get the rendered output. Variables, nested paths, loops, and conditionals supported. Runs entirely in your browser, no upload, no sign-up.

Output

About this tool

Render a Handlebars or Mustache template against JSON data, entirely in your browser. Paste your template on the left, your data as JSON, and get the rendered output instantly — nothing is uploaded to a server.

What's supported

Handlebars is a superset of Mustache, so the same {{variable}} syntax works for both engines. Output is not HTML-escaped, so the tool is equally useful for generating emails, config files, code, or any other text.

Example

Template:

Hello {{name}}!
{{#each items}}- {{this}}
{{/each}}

Data:

{"name":"Ada","items":["apples","bananas"]}

Output:

Hello Ada!
- apples
- bananas

FAQ

Why isn't the output HTML-escaped?

Escaping is deliberately disabled for both engines, so {{var}} emits the value verbatim — that's what you want when generating emails, config files, or code. If you're producing HTML from untrusted data, escape the values yourself before putting them in the JSON.

What happens when the template references a variable my data doesn't have?

By default it renders as an empty string, so [{{missing}}] becomes []. Turn on Strict to make any missing variable a hard error instead — useful for catching typos in field names.

Are partials and custom helpers supported?

No — {{> partial}} includes and user-defined helpers aren't available. The supported feature set is variable substitution, nested paths like {{user.profile.email}}, {{#each}} loops (with {{this}}), and {{#if}}…{{else}}…{{/if}} conditionals.

Can I leave the data field empty?

Yes — empty data is treated as {}, which renders fine in lenient mode. Anything non-empty must be valid JSON (an object or array), otherwise you get a parse error rather than a silent blank result.

Developer & Automation Access

Run it from the terminal

Same engine as this page, headless — via the gizza CLI:

gizza tool render-template "Hello {{name}}!
{{#each items}}- {{this}}
{{/each}}"

New to the CLI? Get gizza →

Open it by URL

Pre-fill and auto-run this tool with query parameters — the names match the API/CLI:

https://gizza.ai/tools/render-template/?template=Hello%20%7B%7Bname%7D%7D%21%0A%7B%7B%23each%20items%7D%7D-%20%7B%7Bthis%7D%7D%0A%7B%7B%2Feach%7D%7D&data=%7B%22name%22%3A%22Ada%22%2C%22items%22%3A%5B%22a%22%2C%22b%22%2C%22c%22%5D%7D&engine=handlebars&strict=true

Machine-readable descriptor: tool.json — title + parameters JSON Schema for agents.