ChatGPT Static Ad Prompt: A JSON Template With Exact Text
The most reliable ChatGPT static ad prompt is a JSON object that separates the scene from the text: a short brief, a scene description, a visible_text list with every word that should appear on the image spelled out exactly, plus settings, style and a negative prompt. Keep the text short, give each string a place and a color, and tell the model to render nothing else. Below is a full template, the rules we follow for legibility, and what to do when letters come out wrong.
Why write a ChatGPT image prompt as JSON?
Because a static ad has two jobs that a paragraph prompt mixes up: a picture and a set of exact words. When the headline sits inside a long sentence of scene description, the model treats it as a suggestion. When it sits in its own field, in quotes, with its placement and color, the model treats it as text to draw.
We rendered a batch of static ads for our own products this way, in ChatGPT, from JSON prompts with exact visible_text strings. Three things stood out:
- Short text rendered cleanly. Headlines of a few words and one-line CTAs came out spelled right.
- One render failed and passed on a plain retry of the same prompt.
- Photo-real ads with text on a small screen inside the photo lost legibility at feed size. The image looked right full screen and didn’t read in the feed.
Those notes shaped the rules below.
What goes into a static ad JSON prompt?
| Field | What it holds | Why it matters |
|---|---|---|
mode |
text_to_image |
Tells the model it is drawing from scratch |
production_brief |
One paragraph: what the ad sells, the one idea, the failure modes to avoid | Gives the model the intent, not only the layout |
scene_description |
Background, layout zones, objects, colors as hex codes | Places everything, so the text has room |
visible_text |
A list of strings, each with font style, color and placement | The exact words, and nothing else |
settings |
Aspect ratio, resolution, file format | 1:1 or 4:5 for feed, 9:16 for Stories and Reels |
style |
Background, subject style, composition, text rendering rule | Keeps the look consistent across a batch |
negative_prompt |
Extra text, misspellings, logos, watermarks | Names what usually goes wrong |
output |
Number of images, file name | Makes the file easy to find later |
What does a full example look like?
Example only. The brand below, Fieldnote Planner, is made up for this post. Swap in your own product, colors, domain and copy, and only use claims you can prove.
{
"mode": "text_to_image",
"production_brief": "Static feed ad for Fieldnote Planner, a printable weekly planner for freelancers (example brand). One idea: plan the week in ten minutes on Sunday. Flat designed card, no photo. Failure modes: extra text, misspelled words, a fake app interface, any logo.",
"user_prompt": {
"scene_description": "Flat designed 1:1 social ad on a warm off-white background, hex #F4F1EA. Top band: a small dark green letterspaced eyebrow, then a large bold dark headline on two lines, left-aligned with a generous margin. Middle: a simple printed weekly planner page in white, seen from straight above, slightly rotated about 3 degrees, with seven empty day rows and three short handwritten-style ticks in green. Bottom band: a solid dark green rounded button on the left and a small domain label on the right. Lots of empty space around every text block.",
"visible_text": [
{
"text": "FOR FREELANCERS",
"font_style": "clean_sans_serif",
"text_color": "#2F5D46",
"text_placement": "top-left eyebrow, small, letterspaced caps"
},
{
"text": "Plan your week in ten minutes.",
"font_style": "clean_sans_serif",
"text_color": "#1C1C1A",
"text_placement": "headline under the eyebrow, two lines, left-aligned, very large and bold"
},
{
"text": "Get the planner",
"font_style": "clean_sans_serif",
"text_color": "#F4F1EA",
"text_placement": "inside the dark green #2F5D46 rounded button, bottom-left"
},
{
"text": "fieldnote.example",
"font_style": "clean_sans_serif",
"text_color": "#6B6A64",
"text_placement": "bottom-right, small"
}
]
},
"settings": {
"aspect_ratio": "1:1",
"resolution": "2K",
"output_format": "png"
},
"style": {
"background_style": "solid flat #F4F1EA, no gradient, no texture",
"subject_style": "flat editorial print aesthetic, crisp paper edges, soft flat color, no 3D",
"composition": "reading order: eyebrow, headline, planner page, button; even margins",
"text_rendering": "render only the quoted strings, once each, exact spelling, case and punctuation; no other letters, numbers or words anywhere in the image"
},
"negative_prompt": "extra text, words on the planner rows, misspelled words, lorem ipsum, watermark, logos, app interface, gradient, glow, drop shadow, people, hands, emoji",
"output": {
"images": 1,
"file_name": "fieldnote-static-ten-minutes"
}
}
Paste the whole block into a ChatGPT chat with image generation and ask it to render the image from the JSON. The “ten minutes” in the headline is part of the example brand’s promise; in your ad, a time, number or result needs to come from something you can show.
How do you keep ad text legible at feed size?
Your ad is judged at the size of a thumb-width square on a phone, not at full screen on your monitor. The rules we follow:
- Headline of about eight words or fewer. Short strings render cleanly and read at a glance.
- Four or five text blocks at most, counting the eyebrow, headline, subline, button and domain.
- Text on a flat area, never on a busy part of the photo. Name an empty zone for it in the scene description.
- No readable text on screens or small objects inside a photo. That’s where our photo-real ads lost legibility. If the message needs words, put them in a designed band, not on a phone in someone’s hand.
- High contrast. Dark on light or light on dark, with hex codes, not “a nice blue”.
- One idea per ad. If a second idea needs space, it’s a second ad or a carousel.
Then shrink the render to the size it will appear in the feed and read it there. If you squint, your buyer scrolls.
What should you do when ChatGPT garbles the text?
Garbled letters are the most common failure. Work through these in order:
- Retry the same prompt once. One of our renders failed and passed on retry with no changes.
- Shorten the string. Cut the headline to fewer words, or split one long line into two strings with their own placements.
- Remove competing text. Words in the scene description (a sign, a label, a screen) compete with your strings. Add them to the negative prompt.
- Fix only the text. Ask ChatGPT to edit the image and correct one string, quoting the exact text it should read.
- Fall back to an overlay. Render the image with no text and add the words in a design tool. It’s slower, but the spelling is yours.
Don’t ship an ad with one wrong letter. In a feed, a typo reads as a scam.
What should you check before you upload?
The render is not the finish line. Before the image goes into the ad manager:
| Check | What to look for |
|---|---|
| Spelling | Every string matches visible_text exactly, including case and punctuation |
| Claims | Every number and promise is one you can prove |
| Policy | No personal-attribute lines (“Are you struggling with…”), no fake buttons or interfaces, no before/after the platform restricts |
| Specs | The ratio fits the placement, and nothing important sits where the platform’s interface covers it |
| Legibility | The headline reads at feed size on a phone |
| Match | The landing page keeps the promise the ad makes |
Write the primary text and headline with the same care. The brand voice guidelines you use for posts apply here, and a strong hook works as the first line of the primary text. If you also write in Claude, our comparison of Claude vs ChatGPT for content creation covers where each one fits.
FAQ
Can I use the same prompt in Gemini or another image model? Yes. The JSON is plain structure. Any model that renders text can read it, though results vary by model.
Should the image be 1:1 or 4:5? Both work in feeds. 4:5 takes more of the screen on a phone; 9:16 is for Stories and Reels. Check the platform’s current specs for each placement.
Can I put a price on the image? Only if it won’t change while the ad runs. A price that moves makes every old render wrong.
How many ads should I make at once? Start with a small batch where each ad differs in angle and format. Three headline swaps on one image test one idea, not three.
Does Nexin make the image? No. Nexin writes the prompt and the copy; you render the image in ChatGPT or another model.
Get the layout, the exact text and the JSON for every static ad. The Ads module plans each ad from your brand file, writes the image prompt with visible_text, the primary text and the headline, and checks claims, policy, specs and legibility before you upload. It’s new this month and included in Nexin Full. It writes; it doesn’t render images or run campaigns. See the Ads module or see pricing.