Logo

MonoCalc

/

Tweet Screenshot Generator

Social Media
This tool does not fetch real posts
You type the content, and we draw the card in your browser. There is no field for a post URL: this site is a static export with no server, so there is nothing here that could call a platform API or read a post page. Nothing you enter, and neither image you choose, ever leaves your device.

Every export carries the strip “Mockup — not a real post · monocalc.com” below the card. There is no setting to remove it. The corner mark and the badge are generic placeholders we draw, not official brand assets.

Emoji are painted by your system’s emoji font. On a platform without colour emoji they come out monochrome.

Author

The bold name at the top of the card.
Type it with or without the @. X’s published rule is up to 15 characters of letters, digits and underscores (source, read 2026-09-16).
A colour to draw, and nothing more is claimed: what a badge signifies on the live platform is not asserted here.

With none chosen, a neutral grey silhouette is drawn.

A local file only. It is decoded in your browser and never uploaded.

Post

142 / 280 weighted characters. Each web address is charged a fixed 23 (source, read 2026-09-16). Hashtags, mentions and links are drawn in the accent colour — as text only, never as links.

JPEG, PNG, WebP or GIF, up to 25MB and 50 megapixels.

Drawn below the text, fitted inside a 16:9 box and letterboxed rather than cropped. A local file only.
Pinned, not taken from your browser, so the same settings give the same card on a colleague's machine. It also steers where lines may break.

Counts

Whole numbers. Leave one blank and that item disappears from the row. These are drawn exactly as you set them — nothing here estimates reach, engagement or how a post would perform.

Appearance and export

The card's own width in CSS pixels, before the export scale.
Multiplied by your screen's pixel density, which is why the exact export size is printed under the preview.
Transparent leaves the corners and the area around the card empty; the caption strip is still drawn, on a solid pill so it stays legible.
A mockup, not evidence
Use this for slides, documentation, design comps and blog figures. Putting words into a real person’s mouth in a format built to look authentic is not a design exercise, and the caption strip does not make it one. Use a handle you own or an obvious placeholder.

About This Tool

Tweet Screenshot Generator — a post card you draw, not one you capture

Designers, writers and product teams need a picture of a post far more often than they need the post itself. A slide about social strategy wants an example card. A blog figure about tone of voice wants three versions of the same sentence side by side. A UI mockup wants a feed item that does not depend on whatever happened to be trending the afternoon the screenshot was taken. This tweet screenshot generator draws that card from fields you fill in and hands you a PNG.

This tool does not fetch real posts
You type the content, and the card is drawn in your browser. There is no field for a post URL, because there is nothing behind this page that could load one — and a mockup you typed is a better figure anyway, since it still says what you meant a year from now.

Why a URL field would be dishonest here

The name people search for implies pasting a link and getting a capture back, so it is worth being precise about why that is not on offer. This site is a static export: there is no server, no route handler and nowhere to keep a secret. The platform’s API requires a bearer token, which cannot live inside a bundle anybody can read. Reading the post page directly from your browser is refused by the same-origin policy. A third-party CORS proxy would work until it didn’t, and would see every URL you looked up. So the input is your own text, and the drawing is honest about being a drawing.

The canvas is the preview

Most tools of this kind build the card out of HTML and then photograph it with a screenshot library, which means two renderers that slowly disagree — the download has a different font, a shifted baseline, a missing shadow. Here the card is painted directly onto a single canvas, and that same canvas is both what you see and what gets encoded. Every line break is decided by measuring the text with the browser’s own font metrics, and break opportunities come from Intl.Segmenter, so an emoji family, a skin-tone sequence or a Devanagari cluster is never cut down the middle. Right-to-left text is handed to the canvas to lay out rather than reversed by hand.

What you control

Display name, handle, badge colour and avatar make the header. The body takes as much text as you want, with hashtags, mentions and links picked out in the theme’s accent colour — as drawn text, never as anything clickable. A live weighted counter shows where you stand against 280, charging each link the fixed length the platform rewrites it to. The counter warns and never blocks, because longer posts exist. Reply, repost, like, bookmark and view counts are abbreviated to 1.8K or 42.8K, and any you leave blank simply disappear from the row. Light, dim and dark themes, three card widths and three export scales cover most placements.

Timestamps that do not drift

You either set an absolute date and time, rendered in a locale you pin so a colleague’s machine produces the same string, or you type a relative label like 2h yourself. Nothing is computed from the current time. A mockup whose meaning quietly changes overnight is a mockup you cannot check into a repository.

Your images stay on your device

The avatar and the attached image are local files only. Your browser decodes them in memory, applies their orientation so a phone photo is upright, and draws them onto the canvas. Nothing is uploaded, and the object URLs are released as soon as you swap an image out. Remote image URLs are not accepted at all — besides the privacy question, drawing a cross-origin image taints the canvas and breaks the export outright.

Where the line is

Every export carries a caption strip below the card reading Mockup — not a real post, and there is no control to remove it. Use this for design comps, documentation, teaching material and slides. Do not use it to fabricate a post attributed to a real person: putting words in someone’s mouth in a format built to look authentic is defamation with a nicer font, and no caption strip makes that acceptable. The badge and the corner mark drawn here are generic placeholders rather than official brand assets, for the same reason. This tool also computes nothing about performance — no reach, no engagement rate, no benchmark — because a card you typed cannot tell you anything about how a real post would do.

Frequently Asked Questions

Is the Tweet Screenshot Generator free?

Yes, Tweet Screenshot Generator is totally free :)

Can I use the Tweet Screenshot Generator offline?

Yes, you can install the webapp as PWA.

Is it safe to use Tweet Screenshot Generator?

Yes, any data related to Tweet Screenshot Generator only stored in your browser (if storage required). You can simply clear browser cache to clear all the stored data. We do not store any data on server.

Can I paste a post URL and get a screenshot of the real post?

No, and the tool deliberately does not offer a field for it. This site is a set of static files with no server, so there is nothing that could hold the API key X requires, and reading x.com directly from your browser is blocked by the same-origin policy. Rather than depend on a third-party proxy that could disappear or quietly change what it returns, the tool takes only content you type. You write the name, handle, body and counts, and it draws the card.

How does the generator work?

Everything you type is drawn onto a single HTML canvas in your browser, and that same canvas is what you see on screen and what downloads. There is no second renderer, so the PNG is pixel-for-pixel the image in the preview. Text is laid out by measuring each candidate line with the browser's own font metrics, and line breaks are found with Intl.Segmenter so emoji sequences, Hindi clusters and Japanese text never split in the middle of a character.

Why does every export say “Mockup — not a real post”?

Because a card drawn here is hard to tell from a screenshot of a genuine post, and that makes it easy to misuse. The caption strip is painted below the card on every export and there is no setting to remove it. It sits outside the card frame rather than on top of the design, so the mockup still looks right in a slide or a blog figure while staying honest about what it is.

Are my avatar and attached image uploaded anywhere?

No. Both are local files your browser decodes in memory and draws onto the canvas. They are never uploaded, stored or sent anywhere, and the tool makes no network request at all while you use it — you can turn off your connection and every part of it still works. The object URLs created for decoding are revoked as soon as an image is replaced and again when you leave the page.

Why is the badge just called “blue” or “gold”?

Because what a badge colour signifies on the live platform is a fact about somebody else's product that changes without notice, and this tool will not assert one. You pick the colour you want drawn and nothing more is claimed. For the same reason the badge itself is a generic rosette drawn from a curve, and the corner mark is the plain letter X in the card's own font — neither is official brand artwork.

How accurate is the 280-character counter?

The two platform figures it depends on are cited: every web address is charged a fixed 23 characters because links are rewritten to a fixed length, and the standard limit is 280. Both are recorded with the page they were read from and the date. The per-character weighting that makes CJK text cost more is an approximation using the shared weighting table, not a transcription of the platform's range table, so treat a count close to the limit as a warning rather than a verdict. The tool never truncates or blocks you either way, and accounts on a paid tier can post longer.