Skip to content
100% local

Prompt templater

Fill {{placeholders}} in a template with your own key = value pairs.

Input
Values
Output

Prompt templater

The prompt templater takes a block of text with {{placeholders}} and a short list of values, then fills every placeholder in one pass. Write your template in the main panel — a reusable AI prompt, an email, a contract clause, a message you send often — and mark the parts that change as {{name}}, {{role}} or {{date}}. In the values panel, define each one on its own line as name = Ada, one pair per line. Every {{name}} in the template becomes Ada, everywhere it appears.

This is the tool for text you write again and again with only a few words changed. Keep one master prompt for summarizing a document and swap the topic and tone per run. Draft a mail-merge-style message once and generate a version for each recipient by editing only the values. Because the whole template is processed at once, a placeholder used ten times is filled ten times with no extra work.

The syntax is deliberately small. Whitespace inside the braces is ignored, so {{ name }} and {{name}} are the same key, and matching is case-sensitive so {{Name}} and {{name}} stay distinct. Values accept either name = Ada or name: Ada. You decide what happens to a placeholder that has no matching value: leave it in place, replace it with nothing, or mark it as [MISSING: key] so gaps are obvious before you send. The tally reports how many placeholders were filled and how many were left unfilled.

Everything runs locally in your browser. Your templates and values are never uploaded, so prompts, client details and private drafts stay on your device.

FAQ

How do I write a placeholder?
Wrap the variable name in double braces, like {{name}}. In the values panel, define it on its own line as name = Ada. Every {{name}} in the template is replaced with Ada.
What separator do the values use?
One pair per line, written as key = value. A colon works too, so role: engineer is the same as role = engineer. Everything after the first = or : is the value, so URLs and timestamps are fine.
What happens to a placeholder with no value?
You choose. Keep leaves {{key}} in place, blank replaces it with nothing, and mark turns it into [MISSING: key] so unfilled spots are easy to spot before you use the text.
Is matching case-sensitive?
Yes. {{Name}} and {{name}} are different keys, so define values with the exact casing used in the template. Spaces inside the braces are ignored, so {{ name }} still matches name.
Is my text uploaded anywhere?
No. The template and values are filled entirely in your browser and never leave your device.