RunLocalTools

Tweet & Quote Card Maker — Free, No Watermark, Runs in Your Browser

Turn a post, quote or review into a shareable image card. Threads, quoted posts, custom fonts, bulk mode. Free, no watermark, no sign-up. Runs in your browser.


What it does

Type or paste some text and get a clean, ready-to-share image: a post that looks like a tweet, a big quote card for Instagram, a star-rated review card, or a minimal text card. You choose the name, handle, avatar and verified badge, add a photo or a quoted post, set the engagement numbers, then download a PNG, JPEG or WebP up to 4× resolution.

There is no watermark, no account and no export limit. Everything is drawn on a canvas in your browser, so the text you type and the pictures you add stay on your device.

Templates and features

Four templates

  • Post — avatar, name, verified badge, handle, text, optional photo, optional quoted post, date line and the reply / repost / like / views / bookmark row, in light, dim or dark.
  • Quote — large type with an optional oversized quotation mark and an author line, left-aligned or centred. On a fixed canvas size the text auto-fits to fill the card.
  • Review — 0–5 stars in half-star steps, a title, the review text and the reviewer.
  • Minimal — just your words, with a small handle underneath.

Threads

Add up to ten posts and they are joined by connector lines into one tall card, exactly like a thread. Export it as one connected image, or as a zip of separate cards.

Look and canvas

  • Gradient presets, a custom two-colour gradient with an angle, a solid colour, your own background image (with blur and dim) or a transparent background.
  • Canvas presets for square (1080×1080), portrait (1080×1350), landscape (1200×675), link-preview (1200×630) and story (1080×1920) — or auto height. If your content is taller than the canvas, the card is scaled down to fit rather than cut off.
  • Padding, corner radius, shadow, card border, accent colour and text size are all adjustable. If you’re making a story-sized card, check the layout against the TikTok and Shorts safe-area overlay before you post.

Fonts

Pick from system sans, serif, mono and rounded stacks, or load your own .ttf, .otf, .woff or .woff2 file — it is read locally and never uploaded.

How it works

The card is laid out and painted with the browser’s 2D canvas. Text is wrapped by measuring real glyph widths, so line breaks match what you see. Hashtags, @mentions, $cashtags and links are recognised and coloured, and long links are shortened for display the way social apps do. Right-to-left text such as Arabic and Hebrew is detected per paragraph and aligned correctly.

Counts are formatted like the real thing: type 1200 or 1.2K and it displays as 1.2K; 3M stays 3M. Dates are formatted from the value you pick with no time-zone shifting, so the time on the card is the time you entered.

Your text, look and images are saved in your browser (IndexedDB for images and fonts), so a refresh doesn’t lose your work. A “Clear saved files” button removes them.

How to use it

  1. Pick a template: Post, Quote, Review or Minimal.
  2. Enter a name and handle, then drop in an avatar (or leave it and initials are used).
  3. Write your text. Use + Add post to build a thread.
  4. Set the numbers, date, photo or quoted post if you want them.
  5. Choose a canvas size and background, then adjust padding, radius and shadow.
  6. Click Preview & download, rename the file, pick PNG, JPEG or WebP, and save. Or use Copy image to paste it straight into a chat or document.

Bulk mode

Paste one card per line as quote | author and download a zip of finished cards using the current template and look. Use \n in a line for a line break. Up to 200 cards per batch.

Privacy

Everything above runs locally: nothing you type or upload is sent anywhere. The one thing that touches the network is the very first zip export (bulk mode or a thread zip), which downloads a small open-source zip library from cdnjs.cloudflare.com — no data of yours is sent, and it’s cached afterwards.

There is one optional exception. Under Online extras you can tick a box that explicitly allows internet access. Only then can the tool: import a post from its link (the link is sent to X’s public embed service and the post’s images are downloaded), fetch an avatar by handle (unavatar.io), load a web font (Google Fonts), or use Twemoji so emoji look identical on every device (cdn.jsdelivr.net). Untick the box and the tool goes back to being fully local. If you’d like to check how a finished card will look when a link to your site is shared, the social preview checker does that.

Limitations

  • Post import relies on a public service that can change or block requests at any time. If it fails, type the post in — the rest of the tool is unaffected.
  • Without Twemoji, emoji are drawn with your device’s own emoji font, so they look different on Windows, macOS, iOS and Android.
  • Imported images from another site can be blocked by that site; you’ll be told and can upload the image instead.
  • Background blur is an approximation done by scaling, so it looks slightly different from a CSS blur.

FAQ

Is this affiliated with X or Twitter?

No. The cards imitate a familiar layout using our own drawn icons and badge; no logos or brand assets are used.

Can I make a card for a post someone else wrote?

You can, but only do so for mockups, teaching, design comps, parody that is clearly labelled, or content you have permission to show. Presenting an invented post as if a real person wrote it can mislead people. Ticking Add “Mockup” label puts a small “Mockup — not a real post” line on the card.

Why isn’t my exported image the same size as the preview?

The preview is shown at 1× so it fits your screen. Export multiplies it by the resolution you choose (1×–4×), so a 600-pixel-wide card at 2× exports at 1200 pixels. Very large results are refused with a message instead of producing a broken file.

Does it work on my phone?

Yes. It runs in any modern mobile browser. Very high resolutions on older phones may hit the browser’s canvas memory limit, in which case pick a lower one.

Why does the date not match my time zone?

It deliberately doesn’t convert. The card shows exactly the date and time you entered, so it never changes depending on where you open it.

Where are my images stored?

In your own browser’s storage, on your device only, so they are still there after a refresh. Use Clear saved files to delete them.