Open Graph Image Generator (Social Cards)
Pricing
from $2.00 / 1,000 images
Open Graph Image Generator (Social Cards)
Make clean Open Graph and social share images from text: title, subtitle, label, footer and your logo, in three templates and your brand colours. 1200x630 by default or any size up to 2400 px, PNG or JPEG, one image per card in bulk. Invalid cards are free.
Pricing
from $2.00 / 1,000 images
Rating
0.0
(0)
Developer
kelp forest
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
15 days ago
Last modified
Categories
Share
Turn a title (plus optional subtitle, label, footer and logo) into a clean Open Graph / social card image. Send one card or thousands; every image uses your brand colours.
Use cases
- Share images for every blog post or docs page from a CSV of titles.
- Event, release or podcast episode cards in a consistent brand style.
- Cover images for newsletters and changelogs.
- Automated cards from a CMS or an AI agent pipeline.
What it does
- Three templates:
classic,splitandminimal. - Hex brand colours for background, text and accent; PNG or JPEG; any size from 200 to 2400 px, for example 1200×630 (Open Graph), 1080×1080 (square), 1600×900 (16:9) or 1500×300 / 1500×500 (banners).
- Text always fits: long titles wrap and every element (label, title, subtitle, footer, logo) is scaled down
together until nothing is cut off. If that would need a title below 12 px, the card is a free error row instead
of an image with clipped text. The label, subtitle and footer never go below 9 px. Each row reports
textScale,titleFontPxandsmallestTextPx. - All three templates show the label (
eyebrow) andfooterwhen you set them. - Bulk mode: a
cardslist, each card can override template and colours. - All text is HTML-escaped. The only network request a card may make is to its own vetted logo URL.
Pricing (pay per event)
| Event | Price |
|---|---|
image (one image saved) | US$0.002 |
Invalid cards are free: a missing title, a colour that is not hex, an unknown template, or a logo that is blocked or cannot be loaded gives an error row and no charge.
Each run also has Apify's run-start charge of US$0.00005 per GB of run memory (US$0.0001 at the default 2048 MB), charged when the run starts, even if every card is invalid.
How to use
- Open the actor in Apify Console and fill in the input form (or paste the JSON example below into the JSON editor).
- Optional: set a maximum charge for the run under the run options to cap what a run can cost.
- Click Start. Results appear in the Output tab as they are produced; export them as JSON, CSV, Excel or HTML.
You can also start runs from the Apify API or CLI, run the actor on a schedule (for example weekly), and send results to other apps with Apify integrations and webhooks.
Input example
{"cards": [{"title": "How we test spreadsheets", "eyebrow": "Blog", "footer": "example.com"}], "template": "split", "accent": "#e0b04a"}
Output example (shape; values vary)
{"index": 0, "title": "How we test spreadsheets", "status": "ok", "key": "og-0000-how-we-test-spreadsheets-3f2a1b.png", "imageUrl": "https://api.apify.com/v2/key-value-stores/.../records/og-0000-...png", "width": 1200, "height": 630, "template": "split", "bytes": "<size>"}
FAQ
Does it use AI to create pictures? No. It lays out your text, colours and logo in a template, so results are predictable and text is always spelled exactly as you wrote it.
Which fonts and languages work? The container fonts (DejaVu and Liberation) cover Latin, Greek and Cyrillic. Emoji and CJK text may not render.
What if my logo URL does not work? That card gets a free error row instead of a card without a logo. The message says what went wrong: the HTTP status (for example 404), a response that is not an image (such as an error page or HTML), a request that failed or timed out, or an address that is private or internal.
Can I use my own size?
Yes: width and height from 200 to 2400 px, for example 1200x630 (Open Graph), 1080x1080 (square posts), 1600x900 (16:9) or 1500x500 (banners).
What if my text is too long for the size?
Text is wrapped and scaled down until every element (label, title, subtitle, footer, logo) fits inside the image. If it would need a title smaller than 12 px, you get a free error row instead of a card with clipped text. The smaller text (label, subtitle, footer) never goes below 9 px; each row reports smallestTextPx.
Limits: what this actor does not do
- It does not generate pictures with AI or fetch stock photos. It lays out your text and your logo.
- It does not load fonts or scripts from the internet; it uses the fonts in the container (DejaVu/Liberation).
- The logo is the only remote file it loads. A logo URL on, or redirecting to, a private/internal address is refused
(free error row for that card). Logo URLs are normalised first (spaces, non-ASCII characters, upper-case
scheme or host, dot segments in the path; a
#fragmentis dropped), so the URL that is checked is the one that is loaded.
Changelog
- 1.0 (October 2026): first public version.