Prompt Data
IMGPrompt's prompt library is compiled from online sources, promptoMANIA, sd-webui-prompt-all-in-one, and awesome-gpt-image-2-prompts (CC BY 4.0). After deduplication, standardization, and localization across 18 languages, we have 5,000+ entries across 16 main categories and hundreds of subcategories.
Data Structure
All prompt data lives under src/app/data:
src
└── app
└── data
├── prompt # Prompts in 18 languages
│ ├── prompt-zh.json # Simplified Chinese (source of truth; others derived from it)
│ ├── prompt-en.json # English
│ ├── prompt-ja.json # Japanese
│ └── ...... # 15 other languages
└── prompt-custom.json # User-defined prompts (loaded for all languages)
Each prompt is a JSON object:
{
"displayName": "portrait",
"langName": "Portrait",
"object": "Character",
"attribute": "Basic",
"description": "(Optional) description or author credit",
"preview": "(Optional) preview image URL"
}
Field Reference
| Field | Required | Description |
|---|---|---|
displayName |
✅ Yes | Unique English prompt — the actual text inserted into the prompt box |
langName |
✅ Yes | Localized label shown in the UI |
object |
✅ Yes | Main category (e.g., Character, Environment, Photography, Art Style) |
attribute |
✅ Yes | Subcategory (e.g., Basic, Expression, Camera Focus, Portrait) |
description |
❌ No | Extra text shown inside the preview popover (author credits, usage notes, etc.) — surfaced on hover (desktop) / long-press (touch) |
preview |
❌ No | Preview image URL — shown inside the popover on hover (desktop) or long-press for ~0.5s (touch); click / tap the thumbnail to open the lightbox |
💡 The
previewfield powers the hover/long-press preview + click-to-zoom experience. Desktop uses hover; touch devices use long-press, so a quick tap still just adds / removes the tag.
Data Hygiene Tips
- Keep
displayNameunique — duplicates are ignored and reduce suggestion quality. - Comma convention:
", "(comma + space) is the app's tag separator; aggregate entries must glue keywords with a space-less","(e.g.snow,ice). Spaced or full-width commas are rejected at build time (sliceDatavalidation). - Reuse the same
object/attributevalues across languages so navigation stays consistent. - Keep
langNameconcise to avoid chip truncation. - For
preview, WebP ≤ 150 KB with a 1:1 (square) aspect ratio renders best inside the hover / long-press popover.
Adding Custom Prompts
Use the IMGPrompt Data Converter to convert your data to the standard shape, then save to src/app/data/prompt-custom.json. This file is loaded at startup and applies to all languages.
Example:
[
{
"displayName": "cyberpunk cityscape",
"langName": "Cyberpunk Cityscape",
"object": "Environment",
"attribute": "Scene"
},
{
"displayName": "cinematic lighting",
"langName": "Cinematic Lighting",
"object": "Light and shadow effects",
"attribute": "Basic",
"description": "Soft directional light + rim light for depth",
"preview": "https://example.com/preview/cinematic.webp"
}
]
Custom entries follow the exact same display rules as built-ins: include a preview to enable the hover / long-press preview + click-to-zoom treatment.