How to Write Better AI Prompts: A Simple Five-Part Framework (With a Free Prompt Builder)
Vague prompts get generic answers. Learn a five-part structure for clearer requests, see a before-and-after example, and build a structured prompt in your browser with a free tool.
A good AI prompt answers five questions: who should the AI act as (role), what should it do (task), what does it need to know (context), how should the answer look (format), and what limits apply (length, tone, things to avoid). Vague prompts get generic answers. Specific prompts get useful ones. Then check the facts, because AI can be confidently wrong.
The free prompt builder below turns your answers into a structured prompt. It is a template-based tool in your browser, not AI, and it does not send your text anywhere.
You type a short request into an AI assistant and get a bland, generic answer. You try again with a slightly different wording and get another one. The problem is rarely the tool. It is that the request left too much for the AI to guess. This guide gives you a simple structure for writing prompts that get closer to what you wanted on the first try.
Why most prompts disappoint
AI assistants produce the most likely helpful response to the words you give them. If you write “write a blog post about backups”, they must guess the reader, the length, the tone, the level of detail and the format. Each guess is a chance to miss.
The fix is not clever wording or secret tricks. It is giving the assistant the same information you would give a new colleague: what the job is, who it is for, what to use, and what a good result looks like.
The five-part prompt
This is a practical checklist, not an official standard. Different assistants respond differently, so treat it as a starting structure.
| Part | Question it answers | Example |
|---|---|---|
| Role | Who should the AI act as? | “You are an experienced content editor.” |
| Task | What exactly should it do? | “Create an outline for a beginner guide to WordPress backups.” |
| Context | What does it need to know? | “Readers are small business owners with no technical background.” |
| Format | How should the answer look? | “A numbered outline with H2 and H3 headings.” |
| Limits | What are the boundaries? | “Under 400 words. Plain English. No jargon.” |
You do not need all five every time. A quick factual question may need only a task. A piece of content you will publish usually needs most of them.

A before-and-after example
Illustrative example (we have not tested this on a specific model):
Weak prompt: “Write about WordPress backups.”
Stronger prompt: “You are an experienced content editor. Create an outline for a beginner guide to WordPress backups. The readers are small business owners with no technical background. Present it as a numbered outline with H2 and H3 headings. Keep each heading under ten words and avoid jargon. If you are unsure about any fact, say so.”
The second prompt does not guarantee a perfect answer, but it removes most of the guesswork. The assistant knows the reader, the shape of the output and the boundaries.
Prompt builder
Fill in what you know and the builder assembles a structured prompt you can paste into any AI assistant. It uses fixed templates and your own words. It is not an AI model, it does not improve your ideas for you, and nothing you type leaves your browser. Do not include passwords, private customer data or confidential information in a prompt.
Try an example:
Your prompt
Prompt completeness
Starting points for common tasks
| Task | Role to try | Format to request | Useful limit |
|---|---|---|---|
| Blog outline | Content editor | Numbered outline with headings | Name the reader and the main question. |
| Professional business writer | Subject line plus short paragraphs | State the one action you want. | |
| Summary | Careful analyst | Key points, then a one-line takeaway | Say “use only the text I provide”. |
| Explaining a concept | Patient teacher | Short paragraphs with one example | Give the reader’s level. |
| Social posts | Copywriter | Numbered list of short posts | Give a character limit. |

How to refine an answer
Your first prompt is a draft. When the answer is close but not right, follow up instead of starting again:
- Too generic: add context. “The reader is a beginner running a small WordPress blog.”
- Too long: add a limit. “Shorten this to 150 words without losing the main steps.”
- Wrong tone: name the tone and give an example sentence you like.
- Wrong structure: ask for a different format, such as a table or numbered steps.
- Missing detail: ask about the specific section. “Expand step 3 with an example.”
Long conversations can also lose track of earlier details. Our guide to AI tokens and context windows explains why, and what to do about it.
Accuracy, privacy and limits
Always verify facts. AI assistants can state wrong dates, invented statistics and sources that do not exist, in a confident tone. Check anything important against an official source before you publish or act on it. Asking the assistant to flag uncertainty helps a little, but it is not a guarantee.
- Protect private data. Do not paste passwords, financial details, medical information or confidential client material into a public AI tool.
- Add your own value. AI output is a draft. For content you publish, add your own examples, checks and judgment. Our AI content workflow and our guide to writing original posts with AI show how.
- Be honest about use. Never present AI-generated text as a personal experience or a test you did not carry out.
Common mistakes
- One-line prompts for complex jobs. More context usually means a better first answer.
- Asking for five things at once. Split big jobs into steps: outline first, then sections.
- Not saying who it is for. The same topic needs a different answer for beginners and experts.
- Skipping the format. If you do not ask for a table or steps, you get whatever the model prefers.
- Copying without checking. The cost of an unverified fact lands on you, not the tool.
Troubleshooting
The builder says my task is too short
The task needs at least 10 characters. Say what the AI should actually do, not just the topic.
The prompt is long and the AI ignores part of it
Remove anything that is not essential, or split the job into two prompts. Put the most important instruction first.
The answers still feel generic
Add real context: your audience, the outcome you want, and one example of the style you like.
Copy did not work
Some browsers block automatic copying. Select the text in the prompt box and copy it manually.
FAQ
Is the prompt builder an AI tool?
No. It is a browser-based generator that arranges your inputs into a fixed structure. It does not use an AI model and does not send anything to a server.
Does the five-part structure work with every assistant?
It is a general structure, not an official standard, and assistants vary. Test your prompt and adjust.
Should I tell the AI to act as an expert?
A role can shape tone and focus, but it does not add knowledge the model lacks. Pair it with clear context and always verify facts.
How long should a prompt be?
As long as it needs to be to remove guesswork, and no longer. Short for simple questions, longer for content you will use.
Can I reuse a prompt?
Yes. Save prompts that worked and change the topic and context each time.
Is it safe to paste my draft into an AI tool?
Check the tool’s privacy terms first, and never paste confidential or personal data.
Conclusion
Better prompts come from giving more useful information, not from tricks. Say who the AI should be, what it should do, what it needs to know, how the answer should look and where the limits are. Then refine, and verify before you use the result.
Haven’t tried the prompt builder yet? Pick an example, change it to your own task and copy a structured prompt in seconds.
Related reading
(function () { var root = document.getElementById('tz-top'); if (!root) { return; } var $ = function (id) { return document.getElementById(id); }; var el = { uc: $('tz-uc'), role: $('tz-role'), aud: $('tz-aud'), task: $('tz-task'), ctx: $('tz-ctx'), fmt: $('tz-fmt'), tone: $('tz-tone'), len: $('tz-len'), lim: $('tz-lim'), q: $('tz-q'), unsure: $('tz-unsure'), src: $('tz-src'), build: $('tz-build'), copy: $('tz-copy'), reset: $('tz-reset'), status: $('tz-status'), res: $('tz-res'), prompt: $('tz-prompt'), score: $('tz-score'), missing: $('tz-missing') }; var UC = { blog: { role: 'an experienced content editor who writes clear, practical articles', fmt: 'a numbered outline with H2 and H3 headings' }, email: { role: 'a professional business writer', fmt: 'an email with a subject line and short paragraphs' }, summary: { role: 'a careful analyst who summarises accurately and uses only the text provided', fmt: 'a bullet list of key points followed by a one-sentence takeaway' }, explain: { role: 'a patient teacher who explains concepts in plain English', fmt: 'short paragraphs with one simple example' }, social: { role: 'a social media copywriter', fmt: 'a numbered list of short posts' }, code: { role: 'a senior developer who explains code clearly', fmt: 'numbered steps with a short explanation for each part' }, custom: { role: '', fmt: '' } }; var EX = [ { uc: 'blog', role: '', aud: 'small business owners with no technical background', task: 'Create an outline for a beginner guide to WordPress backups', ctx: 'The site already has an article about choosing plugins.', fmt: 'auto', tone: 'simple and beginner-friendly', len: '', lim: 'Keep each heading under ten words\nAvoid jargon', q: false, unsure: true, src: false }, { uc: 'email', role: '', aud: 'a client who has not replied for a week', task: 'Write a polite follow-up email asking whether they have reviewed the proposal', ctx: 'The proposal was sent last Monday. The project start date is flexible.', fmt: 'auto', tone: 'friendly and conversational', len: 'about 150 words', lim: 'Do not sound pushy\nEnd with one clear question', q: false, unsure: false, src: false }, { uc: 'explain', role: '', aud: 'complete beginners', task: 'Explain what DNS is and why it matters when I move my website to a new host', ctx: '', fmt: 'auto', tone: 'simple and beginner-friendly', len: 'about 400 words', lim: 'Use one everyday analogy', q: false, unsure: true, src: true } ];
function setStatus(m, k) { el.status.textContent = m; el.status.className = 'tz-status' + (k ? ' tz-' + k : ''); } function clean(v) { return v.replace(/\s+/g, ' ').trim(); }
function build() { var uc = UC[el.uc.value] || UC.custom; var task = clean(el.task.value), aud = clean(el.aud.value), ctx = el.ctx.value.trim(), roleIn = clean(el.role.value); if (task.length < 10) { setStatus('Describe the task in at least 10 characters. Say what the AI should do, not just the topic.', 'err'); el.task.focus(); return; } var lims = el.lim.value.split(/\r?\n/).map(clean).filter(function (x) { return x; }); if (lims.length > 10) { setStatus('Please list no more than 10 limits (one per line).', 'err'); el.lim.focus(); return; } for (var i = 0; i < lims.length; i++) { if (lims[i].length > 200) { setStatus('Limit ' + (i + 1) + ' is longer than 200 characters. Shorten it.', 'err'); el.lim.focus(); return; } }
var role = roleIn || uc.role; role = role.replace(/^you are\s+/i, '').replace(/^act as\s+/i, '').replace(/\.$/, ''); var fmt = el.fmt.value === 'auto' ? uc.fmt : el.fmt.value; var parts = []; if (role) { parts.push('Role: You are ' + (/^(a|an|the)\s/i.test(role) ? '' : 'a ') + role + '.'); } parts.push('Task: ' + task.replace(/\.$/, '') + '.'); if (aud) { parts.push('Audience: ' + aud + '.'); } if (ctx) { parts.push('Context:\n' + ctx); } if (fmt) { parts.push('Format: Present the answer as ' + fmt + '.'); } if (el.tone.value) { parts.push('Tone: ' + el.tone.value + '.'); } if (el.len.value) { parts.push('Length: ' + el.len.value + '.'); } if (lims.length) { parts.push('Limits:\n' + lims.map(function (l) { return '- ' + l.replace(/\.$/, ''); }).join('\n')); } var safe = []; if (el.q.checked) { safe.push('Before you answer, ask me up to three clarifying questions if anything is unclear.'); } if (el.unsure.checked) { safe.push('If you are unsure about a fact, say so instead of guessing.'); } if (el.src.checked) { safe.push('For any factual claim that matters, tell me what I should verify and which kind of official source to check.'); } if (safe.length) { parts.push(safe.join('\n')); } el.prompt.textContent = parts.join('\n\n');
var checks = [['role', !!role, 'Add a role to set the perspective'], ['task', true, ''], ['audience', !!aud, 'Say who the answer is for'], ['context', !!ctx, 'Add background or facts the AI should use'], ['format', !!fmt, 'Choose a format'], ['tone', !!el.tone.value, 'Choose a tone'], ['length', !!el.len.value, 'Set a length'], ['limits', lims.length > 0, 'Add at least one limit']]; var have = checks.filter(function (c) { return c[1]; }).length, miss = checks.filter(function (c) { return !c[1]; }); el.score.textContent = 'Prompt completeness: ' + have + ' of ' + checks.length + ' parts'; el.missing.textContent = miss.length ? 'To improve it: ' + miss.map(function (m) { return m[2].toLowerCase(); }).join('; ') + '.' : 'All parts are filled in. Test the prompt and refine it from the answer.'; el.res.hidden = false; el.copy.disabled = false; setStatus('Prompt ready. Paste it into your AI assistant.', 'ok'); }
function reset() { el.uc.value = 'blog'; el.role.value = ''; el.aud.value = ''; el.task.value = ''; el.ctx.value = ''; el.fmt.value = 'auto'; el.tone.value = ''; el.len.value = ''; el.lim.value = ''; el.q.checked = false; el.unsure.checked = true; el.src.checked = false; el.res.hidden = true; el.copy.disabled = true; el.prompt.textContent = ''; setStatus('', ''); }
function copy() { var text = el.prompt.textContent; if (!text) { return; } function fb() { var ta = document.createElement('textarea'); ta.value = text; ta.setAttribute('readonly', ''); ta.style.position = 'fixed'; ta.style.opacity = '0'; document.body.appendChild(ta); ta.select(); var done = false; try { done = document.execCommand('copy'); } catch (e) { done = false; } document.body.removeChild(ta); setStatus(done ? 'Prompt copied.' : 'Copy was blocked by your browser. Select the text in the box and copy it manually.', done ? 'ok' : 'err'); } if (navigator.clipboard && window.isSecureContext) { navigator.clipboard.writeText(text).then(function () { setStatus('Prompt copied.', 'ok'); }, fb); } else { fb(); } }
el.build.addEventListener('click', build); el.copy.addEventListener('click', copy); el.reset.addEventListener('click', reset); Array.prototype.forEach.call(root.querySelectorAll('.tz-chip'), function (b) { b.addEventListener('click', function () { var e = EX[Number(b.getAttribute('data-ex'))]; el.uc.value = e.uc; el.role.value = e.role; el.aud.value = e.aud; el.task.value = e.task; el.ctx.value = e.ctx; el.fmt.value = e.fmt; el.tone.value = e.tone; el.len.value = e.len; el.lim.value = e.lim; el.q.checked = e.q; el.unsure.checked = e.unsure; el.src.checked = e.src; build(); }); }); })();



