"Tweet to image" usually means one of two things: a picture of a post to put on Instagram, LinkedIn, a slide or a newsletter, or a picture of a customer's kind words for a landing page. A screenshot of X does it, badly — it carries X's interface, your theme, your notifications badge and your screen's resolution. Rebuilding the post as a clean card from its text gives a sharp, consistent image at whatever size the destination needs. This page shows how, with the render times and sizes we measured.
How we measured. On 2026-11-08 we rendered our social-post template through our API on our development stack with a short post, a 280-character post, both themes and three size presets, and checked each picture by eye.
Screenshot or card?
| Screenshot of the post on X | Card from the text | |
|---|---|---|
| Resolution | Your screen's | 2× of the chosen size (2400×1260 for 1200×630) |
| Around the post | X's interface, buttons, theme | Only the post |
| Sizes | One | Every preset: 1200×630, square, portrait, story |
| Branding | X's | Your colours; no X logo |
| Logged-in requirement | You need to see the post | None: you supply the text |
The embed is a third option, for web pages only: X's publish tool gives an HTML snippet that shows the live post with X's script (X embedded posts). It is not an image, so it does not work in emails, slides or an Instagram post.
One request
curl -X POST "https://shareglint.com/v1/images?wait=true" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"template": "social-post", "modifications": {
"text": "Shipped dark mode today. It took one CSS variable and three weeks of arguing about the shade of grey.",
"name": "Ada Example", "handle": "@ada", "verified": "true",
"date": "Nov 8, 2026", "replies": "24", "reposts": "118", "likes": "1.2K"}}'
The fields: text, name, handle, verified, date, replies, reposts, likes, avatar (an image URL; without one the card shows the name's first letter in a circle), plus the shared theme (light or dark) and accent (the background colour).
| Request | Picture | Time | Size |
|---|---|---|---|
| Short post, default size | 2400×1260 | 1.06–3.06 s | 786 KB |
| 280-character post | 2400×1260 | 2.79 s | 777 KB |
"size": "square" |
2160×2160 | 2.46 s | 1.2 MB |
"size": "portrait" |
2160×2700 | 1.12 s | 955 KB |
The first render of a template on a fresh worker was the slowest; later ones took about a second. For smaller files ask for "format": "jpeg" or "webp".
Things we checked in the pictures
- Long posts fit. A full 280-character post was shown whole: the text shrinks to fit its box (down to 26 px at the 1200×630 size) instead of being cut off.
- Counts are optional. Leave
replies,repostsorlikesout and that count disappears from the card. Write them as you want them shown: "1.2K" stays "1.2K". - The tick. The verified mark shows for any non-empty value except the usual "no" words:
false,0,noandoffhide it. (Until 2026-11-08"verified": "no"still drew it; we fixed that while writing this guide.) - Dark theme.
"theme": "dark"gives a dark card on the accent background; the post text and the handle switch colours with it. - Emoji work in the text and the name, drawn with Noto Color Emoji (see fonts and emoji).
No code: a link per post
For a spreadsheet of testimonials or a weekly "post of the week", a signed URL per row gives each post its image without an API call: put the URL in the sheet, a CMS field or an <img>, and the image renders on first view and is cached after (signed image URLs, images from a sheet). The free quote image generator makes single cards in the browser.
Which template for which job
social-post: a post with a name, handle and counts — your own posts, product announcements, "what people say" grids.quote-og: a quotation with a photo of the person — a talk, an interview, a customer quote (quote cards).testimonial-stars: a review with a star rating and the reviewer's company — for landing pages and ads.
Alt text and the original link
A picture of text is invisible to screen readers and to search. When you post the card, paste the post's text into the image description (alt text) field that most networks offer on upload, and put the link to the original post in the caption or the first comment. Readers can then check the source, and the author gets the visit. The same applies on a web page: the card goes in an <img> with the post's words as its alt, followed by a link to the post.
Posts from other networks work the same way: the template does not care whether the text came from X, Threads, Bluesky, Mastodon or LinkedIn. Use the network's handle format (@ada@example.social for Mastodon) and leave the counts out where the network shows different ones.
The rules
An image of a post is a quotation. Use real words, the real name and handle, and counts you did not invent. Do not make posts that someone did not write, and do not change the numbers on a real one: a fake post is a fake whether it was drawn in a design tool or rendered by an API. Your own posts, testimonials you have permission to use, and public statements quoted accurately are fine; credit the author and link to the original where you can.
A card costs one render of the quota; the same text and options again are served from cache without a new render (pricing). Sizes for each network are on social media image sizes.