Meta Description Rewriter
Rewrite meta descriptions using AI with proper length optimisation.
#about
GPT rewriting (gpt-4o-mini default, gpt-4o, or gpt-4.1) with context from H1, title, and URL.
Five tone options: Professional, Friendly, Authoritative, Conversational, Technical.
Smart word-boundary truncation (not mid-word).
Desktop and mobile length targets.
Temperature 0.7 for natural output.
0.5s rate limiting between requests.
Streamlit appRequires an API key
- Platform
- Browser-based (no installation required)
- Input
- OpenAI API keyCurrent description, H1, title (optional)Target length and tone selection
- Output
- Desktop and mobile optimised descriptions with character counts. Bulk: original, rewritten, lengths, error log.
- Category
- Content
Use cases
- Fixing truncated meta descriptions
- Improving click-through rates
- Standardising tone across site sections
- Bulk optimisation of legacy content
#features
- Context-aware rewriting using H1, title and URL
- Five tone options (Professional to Technical)
- Exclamation mark and hyperbole avoidance toggles
- Desktop rewrite; mobile version derived by word-boundary truncation
- Desktop max 140-170 chars (default 160), mobile 100-140 (default 130)
- 0.5s rate limiting, progress tracking, max-rows test option
#how-to-use
- Enter your OpenAI API key
- Select GPT model and tone
- Paste single description or upload CSV/Excel
- Configure desktop/mobile length targets
- Download rewritten versions with character counts
#faq
- Is the mobile version a separate rewrite?
- No. The model writes one description against the desktop character limit; the mobile version is that same text truncated at the last word boundary with an ellipsis appended. If the rewrite already fits the mobile limit, both versions are identical.
- Can it write descriptions for pages that have none?
- Not in bulk mode: rows with an empty meta description column are skipped with a 'No meta description provided' error, even if H1 and title are present (those are used as context only). As a workaround, copy the H1 or title into the description column so the model has something to rewrite.
- Why do I get different output each time I run it?
- The rewrite call uses temperature 0.7 to produce natural-sounding copy, so the same input yields different phrasing on each run. Re-run rows you are unhappy with rather than expecting reproducibility.
- What are the length limits and what happens if the model overshoots?
- Desktop max is a 140-170 slider (default 160) and mobile 100-140 (default 130). The desktop limit is written into the prompt, and if the model still returns something longer it is truncated at a word boundary with '...' appended, so a trailing ellipsis in your output means the model overshot.
- How fast is a bulk run?
- One API call per row plus a fixed 0.5 second pause, so roughly 100 rows per minute at best. Use the 'Max rows to process' input (0 means all) to test tone and length settings on a small sample before committing to the full file.
/contact
Want me to run this for you? I run this tool as a managed service, or build something custom around your data. You get the insights without touching the code.